System and method for detecting mutually supported capabilities between mobile devices

A system and method for detecting mutually supported capabilities between two or more mobile devices is described. In some cases, the system transmits a message to a called device requesting information about the device. In some cases, the transmitted message is answered by a user of the device. In some cases, the transmitted message is automatically received and answered by the called device. In some cases, the system presents information about a service supported by a called party during a call placed to the party.

BACKGROUND

Currently, mobile devices are capable of providing numerous services to a user. In addition to voice calls, mobile devices provide text messaging, instant messaging, cameras, music players, video services, voice over IP (such as via Skype), online or multiplayer games (such as World of Warcraft), bill pay, and so on.

However, for a variety of reasons, users of mobile devices are not taking advantage of the capabilities provided to them by their mobile devices. In some cases, one mobile device may have certain services, while other mobile devices may have other services. In some cases, a user of a mobile device may be unaware of services of his/her device, or of services on other users' devices, such as devices called by the user. These and other problems exist with respect to providing services to mobile device users.

DETAILED DESCRIPTION

A system and method for detecting the capabilities of mobile devices is disclosed. The system, via a user's mobile device, may detect, determine, and/or identify some or all enhanced services provided by another mobile device called by the user. In some examples, the system sends a short message from the user's mobile device to the called mobile device in order to determine services and/or capabilities provided by the called device. In some examples, the system appends a machine-readable code or identifier to the number used to call the device. The message and/or information may prompt the called device to return a message or information to the user device that identifies or otherwise indicates the capabilities of the called device. In some cases, the returned data may identify some or all capabilities of the called device. Alternatively or additionally, the returned data may identify a supported service or capability specifically requested by the user device.

In some cases, the system presents information about services supported by the called party when a call is being made. The information may ask the user to select a service, or may provide information about services supported by the called device. For example, while a call is placed to a called party, the system may determine that the called party supports a service and query the user to proceed with the call using the service. Upon receiving a positive indication from the user, the system connects or updates the call with the service.

The technology will now be described with respect to various examples. The following description provides specific details for a thorough understanding of, and enabling description for, these examples of the technology. However, one skilled in the art will understand that the technology may be practiced without these details. In other instances, well-known structures and functions have not been shown or described in detail to avoid unnecessarily obscuring the description of the examples of the technology.

Suitable System

FIG. 1illustrates a mobile device100on which can be implemented in accordance with several examples of the technology. A receiver/demodulator104receives a transmitted signal via an antenna102and reconstructs the original transmitted signal. The transmitted signal is sent to a microcontroller106, which consists of a decoder108, a processor112, and RAM (Random Access Memory)114. The decoder108translates the signals into meaningful data and interfaces to other devices. Decoded data, along with subscriber inputs110, are sent to the processor112. In addition, the mobile device may include optional components, such as an automated data collection120unit linked to the processor112, which can include an automated RFID (Radio Frequency Identification) tag reader, a magnetic card swipe reader, a bar code reader, and others. Additionally, or alternatively, the mobile device may include a biometric reader (e.g., thumbprint reader, voice fingerprint recognition functionality, etc.), and/or a media output device (e.g., MP3 player, television tuner/player, camera, speaker, headphones, etc.)120. The mobile device may also include a subscriber identity module (SIM)122. The output of the processor112can be stored in a programmable non-volatile memory116or in the RAM memory118.

Memory116,118, or memory of the SIM card122may contain a detection component140that provides data, scripts, applications and other information required to detect the services and/or capabilities of mobile devices that interact with the mobile device100. Additionally, the device may contain a detection component140(described herein) as a separate component outside of the device memory components116,118or the SIM device122.

FIG. 1and the discussion herein provide a brief, general description of a suitable telecommunications or computing environment in which the technology can be implemented. Although not required, aspects of the technology are described in the general context of computer-executable instructions, such as routines executed by a general-purpose computer, e.g., mobile device, a server computer, or personal computer. Those skilled in the relevant art will appreciate that the technology can be practiced with other communications, data processing, or computer system configurations, including: Internet appliances, hand-held devices (including personal digital assistants (PDAs)), wearable computers, all manner of cellular or mobile phones, multi-processor systems, microprocessor-based or programmable consumer electronics, set-top boxes, network PCs, mini-computers, mainframe computers, and the like. Indeed, the terms “computer,” “host,” and “host computer,” and “mobile device” and “handset” are generally used interchangeably herein, and refer to any of the above devices and systems, as well as any data processor. Indeed, aspects of the invention apply not only to mobile devices, but also to stationary ones with network connections, such as an appliance (refrigerator) having a wireless LAN connection (WiFi).

Aspects of the technology can be embodied in a special purpose computing device or data processor that is specifically programmed, configured, or constructed to perform one or more of the computer-executable instructions explained in detail herein. Aspects of the technology may also be practiced in distributed computing environments where tasks or modules are performed by remote processing devices, which are linked through a communications network, such as a Local Area Network (LAN), Wide Area Network (WAN), or the Internet. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.

Aspects of the technology may be stored or distributed on computer-readable media, including magnetically or optically readable computer discs, hard-wired or preprogrammed chips (e.g., EEPROM semiconductor chips), nanotechnology memory, biological memory, or other data storage media. Indeed, computer implemented instructions, data structures, screen displays, and other data under aspects of the technology may be distributed over the Internet or over other networks (including wireless networks), on a propagated signal on a propagation medium (e.g., an electromagnetic wave(s), a sound wave, etc.) over a period of time, or they may be provided on any analog or digital network (packet switched, circuit switched, or other scheme). Those skilled in the relevant art will recognize that portions of the technology reside on a server computer, while corresponding portions reside on a client computer such as a mobile or portable device, and thus, while certain hardware platforms are described herein, aspects of the technology are equally applicable to nodes on a network. In an alternative embodiment, the mobile device or portable device may represent the server portion, while the server may represent the client portion.

While the examples herein employ software stored on the mobile device, the scripts and other software described herein may be hard coded into the mobile device (e.g. stored in EEPROM, PROM, etc.). Further, the above functionality may be implemented without scripts or other special modules.

Detection of Capabilities of Mobile Devices

As described herein, in some cases a detection component140is configured to determine if a mobile device, in communication with device100, supports certain enhancements. Referring toFIGS. 2A-2B, a flow diagram illustrating a routine200for detecting enhanced services on a mobile device is shown. The system may perform some or all steps of routine200when determining enhanced services supported by a mobile device.

Beginning at block202, a user of a mobile device100initiates a voice or other call to another device. For example, the user may input a number of the called party, may select a contact from a list of contacts stored on the device100, may reply to a received call, may press a speed dial key associated with the voice call, may speak the number or information associated with the called party, and so on.

In addition, the user may initiate other communications to the other device. For example, the user may send an SMS message to the device, a USSD communication, an email message, an instant message, and so on. The messages may be sent to the phone number of the device, or may be sent to other addressed associated with the device (e.g., an email address, an instant messaging address, and so on).

In addition to or instead of a call or communications being initiated in202, the call or communications may have been terminated, may have been placed or terminated for a certain predetermined number of times at the given other device (such as a call placed to a phone number for the third time), the number or communication address may be placed into a speed dial list, the number or communication address may be placed into an address book or a contact list, a combination of above triggers may have occurred, and so on.

In decision block204, the routine200checks to see if the system is aware of any previously determined information or indicators that the called number is capable of enhanced services, which in the depicted example is video calling or conferencing. For example, the check may include searching the “numbers flagged for reminder” list248for information associated with the called number. If the system does retrieve information, such as information related to a called number being flagged, routine200proceeds to block206(and, optionally to block212), else to block214. Such a check, and a database storing such data, can be done locally on the phone. Alternatively or additionally, thus a check can be done by the wireless network (e.g. by a server with database in communication with the network). As such, the database and server can include user account records that indicate services available for particular users (e.g. whether a user has paid for certain services). The server may also recognize the type or model of phone and thus recognize whether the phone is configured for certain services.

At decision block206, routine200requests information to display a reminder to the user that the called device supports enhanced services (e.g., video calling). For example, routine200may also proceed to block212and increment a counter before requesting information whether to display the reminder to the user. In another example, the routine200in block212may perform a test to determine if a 3G network is currently available for making a video call. Then, routine200may check the count and display reminders when the count is below a threshold number (e.g., only display the reminder the first three times the number is called). In some cases, routine200may always display the reminder, may allow the user to disable reminders or to request additional reminders at a later time, and so on). When decision block206receives an indication to display a reminder to a user (such as checking the count and determining the count is below the threshold), routine200proceeds to block208and the device reminds the user that the called number (or, called device associated with the number) is capable of enhanced services, in this example video calling. When decision block206receives an indication to not show the reminder, routine200ends and the device proceeds with the call as a normal call.

An example reminder screen may display: “Did you know you can place a video call to this number? Try it now?” If the user selects “Yes”, the system may automatically initiate a video call. If the user selects “Not Now”, the reminder is dismissed and may be presented the next time the number is called or messaged.

Referring back to decision block204, when the called number is not flagged or the system has not already determined capabilities related to the called number, routine200proceeds to decision block214and requests information related to the called number. If the system has knowledge that the number is configured for video calling, routine200proceeds to block216and routine200ends. If the system does not have knowledge or information related to the capabilities supported by the called number, routine200proceeds to decision block218and checks to see whether detection features are enabled on the device100, such as an auto ask feature that automatically transmits messages to called devices when prompted. In addition to checking if the detection component140is configured to request information from called numbers, the routine200at decision block218may also prompt the device100to determine whether the called number has provided a response at an earlier time. For example, the phone or cellular network component may contain a database of called numbers that do not support video calling and routine200may look to the database before requesting information from a called number. For example, the number may be in the list of “numbers flagged for reminder”248.

When a positive indication is received at decision block218, routine200proceeds to block222, else to block220and ends. At block222, the system transmits a short message (SMS) or other signal to the called number. For example, the SMS may contain some or all machine readable information used to prompt the device associated with the called number to return an answer to any requested information. For example, the system may append a unique identifier or other machine-readable identifier to the end of an address where the SMS is sent, or into the extended dialing digits of the called number. Additionally, the SMS may contain machine-readable information in the message body, in a subject field, in a return address field, and so on.

The SMS message may be binary SMS, or some form of text-based SMS, among others. For example, the communication from one device to the other may use one or more binary SMS messages, instead of or in addition to one or more text SMS messages. In other cases, data or messages may be transmitted over a voice channel in a machine-recognizable manner (e.g., one or more DTMF tones).

In some cases, information associated with enhanced services on devices may be maintained or stored on one or more network servers, such as within a directory associating the device phone number with the enhanced service(s) supported or not supported on that device. The directory may be a phone directory used to maintain not only addresses, names, and phone numbers, but other information associated with enhanced services. In these cases, the device may transmit the SMS message to the server instead of or in addition to the called device. For public servers, the SMS message may include a password to be received by the server.

In some cases, devices without SIM cards may also transmit messages with unique identifiers, such as an ESN on a CDMA device). In these cases, the identifier enables the device to be recognized by the wireless network without requiring a SIM card by associating the device with a phone number and allowing (or denying) access to a wireless service based on this information.

The system may remind a user of enhanced services the first time a number is called, and not remind the user again. For example, when the same number is called after receiving a reminder at an earlier time, the number is placed in list248to avoid transmitting additional reminders. Also, the system may set the reminder count212to a high value to prevent reminders when subsequent calls are made to the same number.

In some cases, the called device may contain the client, application, and or scripts similar to those found in detection component140, such as a script that invokes and performs some or all steps of routine200. Thus, after the SMS is sent by device100, the system, at decision block224, determines if the called device contains a similar script or client that is capable of reading and replying to SMS messages containing machine readable information (the “SNAPin Client” depicted inFIG. 2B).

Clients on mobile devices may enable mobile operators to deploy their detection capabilities to many of their users, working on various different devices, because the client uses portable, customizable scripts. For example, they may brand the user experience (such as displays associated with steps206,208, or218). Additionally, upon detection or non-detection, the clients may facilitate the transfer or update of services between devices or between network components and associated devices.

If the called device contains a script or client, routine200proceeds to block232, else to block226. At block226, the user receives the SMS requesting information related to video calling. Should the user reply to the message, at decision block228, with a positive indication (such as a message containing the word “yes” or simply by replying with a blank message body), routine200proceeds to block244. Should the user reply with a negative indication, routine200proceeds to block230and ends. In some cases, routine200may cause the system to then query the user about the services not supported by his/her device. When possible, the system may facilitate providing services to users once it becomes known the user's device does not include these services.

At block232, when the called device contains a similar client or application, the received SMS triggers the client to run on the called device and determine the services supported by the called device. Routine200may proceed to decision block234and determine if the called device is configured to perform such capabilities. Should the device not be configured, or be disabled, routine200proceeds to block236and ends, else to block238.

At decision block238, the running script attempts to detect if the device supports video calling. If the device does not support video calling (or, alternatively, if the called party does not want to indicate that the device supports video calling), routine proceeds to block240and returns a message to the user of device100indicating that the called device does not support video calling, and ends. The called device may also provide no indication. If the device does support video calling, routine200proceeds to block242and indicates to the user of the mobile device100that the called device supports video calling. For example, the system may send a machine readable SMS to device100providing such an indication.

After blocks228or242, routine200proceeds to block244and the system receives the return SMS at device100. Reception of the return message (or a message having a machine-readable or human-readable positive indication) may trigger a script to begin video calling, to update a database of numbers known to support video calling, and so on. At block246, the system may update a user's contact to list with information related to video calling. Routine200may proceed from block246to block248and insert the number to provide a reminder to the user at a later time, may proceed to block250and implement a reminder or other indicators to the user's contact list, or may initiate other processes, such as video calling between the user and the called party.

Referring toFIG. 3, a display illustrating an example screen300is shown. Screen300includes the called number310, and a reminder balloon320that reminds the user that the device associated with the called number supports video calling. During the placement of the call, the system may present options to the user, such as a “Yes” option322to begin video calling, or a “Not Now” option324to proceed as a regular call. Thus, in some cases, the system presents the user calling options during the placement of a call, during a call, and so on.

Thus, the system is capable of determining from a users' device whether a called device contains a certain service or capability. For example, the system may determine the support of services such as video calling, audio or video conferencing (such as two-way conferencing), picture messaging, media playback, and so on. Upon a positive determination, the system may provide options to a user, such as options to proceed with a certain service during or instead of the call.

In some cases, the system is implemented in both the user device100and a called device, and uses machine-readable messages sent via the background of the devices. In these cases, the user and/or users may not be aware or alerted to the transmission of messages. In some cases, the system is only implemented on the user device100. In these cases, the system may send a human-readable message (such as “Hi, I have video calling. Do you? Please reply to this message if you have video calling and would like to use this capability.”). The system may then require the called user to send a return message in order to determine what services the called party's device supports.

While video calling is described above as an example, various other services or features may likewise benefit from the system described above. For example, the system may help users to employ voice over IP to communicate using mobile devices. Users may find other or remote players to join them in playing a multiplayer game, such as a multiplayer video game hosted by a server that coordinates play between separate user devices. Text messaging, instant messaging, cameras, music players, and sharing of images, videos, music or other content are further features that the above system helps users employ.

CONCLUSION

The teachings of the technology provided herein can be applied to other systems, not necessarily the system described above. The elements and acts of the various examples described above can be combined to provide further examples. All of the above patents and applications and other references, including any that may be listed in accompanying filing papers, are incorporated by reference. Aspects of the technology can be modified, if necessary, to employ the systems, functions, and concepts of the various references described above to provide yet further examples of the technology.

While certain aspects of the technology are presented below in certain claim forms, the inventors contemplate the various aspects of the technology in any number of claim forms.