Method and system for modifying interaction type between devices based on proximity

By monitoring the wireless communication channel, the mobile computing device modifies the type of interaction with the peripheral device according to the proximity, solving the problems of complexity and inconsistency in the prior art, and improving user experience and device performance.

CN119766869APending Publication Date: 2025-04-04GOOGLE LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411726432.0
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2019-01-18
Publication Date
2025-04-04

AI Technical Summary

Technical Problem

The prior art has complexity and inconsistency in the interaction between mobile computing devices and peripheral devices, resulting in a degraded user experience and a degraded device performance.

Method used

By monitoring the wireless communication channel, the mobile computing device can modify the type of interaction with the peripheral device according to proximity, including using different communication protocols and presenting different user interfaces.

Benefits of technology

This enables users to control peripheral devices in a more efficient and intuitive way, improves device performance, and saves device battery power.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119766869A_ABST
    Figure CN119766869A_ABST
Patent Text Reader

Abstract

The invention discloses a method and system for modifying the type of interaction between devices based on proximity. In general, the subject matter described in this disclosure may be embodied in methods, devices, and program products for modifying interactions between a mobile device and a peripheral device based on proximity. A mobile device monitors a wireless communication channel and receives a transmission from a peripheral device over the channel indicating that the mobile device is located within a first proximity zone with the peripheral device. A mobile device determines a distance value between devices. When the mobile device determines that the distance value satisfies the threshold, the mobile device visually indicates that it is within a second proximity zone to the peripheral device. Because the mobile device receives data from the peripheral device using the second communication protocol, the mobile device determines that it is located within a third proximity zone with the peripheral device and performs an action.
Need to check novelty before this filing date? Find Prior Art

Description

Description of the case

[0001] This application is a divisional application of Chinese invention patent application No. 201980089370.8, with a filing date of January 18, 2019. Technical Field

[0002] This document generally relates to modifying the type of interaction between a mobile computing device and a peripheral device based on proximity of the mobile computing device to the peripheral device. Background Art

[0003] Mobile devices, such as smart phones, can communicate with other devices using various wireless technologies, such as Bluetooth, Wi-Fi, or another wireless networking protocol. Configuring a mobile device so that it can communicate with another device can involve performing various configuration steps, such as installing a software application programmed to facilitate communication between the mobile device and the other device, installing a device driver, and / or providing a device identifier, password, or other credentials on the mobile device. Once the mobile device and the other device are connected, the mobile device and the other device can share data, and / or the mobile device can act as a controller for the other device. Summary of the invention

[0004] This document describes techniques, methods, systems, and other mechanisms for modifying the type of interaction between a mobile computing device and a peripheral device based on the proximity of the mobile computing device to the peripheral device.

[0005] As additional description to the embodiments described below, the present disclosure describes the following embodiments.

[0006] Embodiment 1 is a computer-implemented method. The method includes monitoring a wireless communication channel by a mobile computing device. The method includes receiving, by the mobile computing device, a transmission from a peripheral device over the wireless communication channel using a first communication protocol, the transmission identifying a type of the peripheral device, the reception of the transmission indicating that the mobile computing device is located within a first proximity zone with the peripheral device. The method includes establishing, by the mobile computing device, a process of determining, at a plurality of times, a corresponding plurality of distance values ​​between the mobile computing device and the peripheral device in response to the mobile computing device receiving the transmission from the peripheral device. The method includes determining, by the mobile computing device, that a first distance value of the plurality of distance values ​​fails to satisfy a threshold, thereby indicating that the mobile computing device is not within a second proximity zone with the peripheral device. The method includes determining, by the mobile computing device, that a second distance value of the plurality of distance values ​​satisfies the threshold, thereby indicating that the mobile computing device is within the second proximity zone with the peripheral device. The method includes modifying, by the mobile computing device, a display of the mobile computing device in response to the mobile computing device determining that the second distance value satisfies the threshold, to visually indicate that the mobile computing device is within the second proximity zone with the peripheral device. The method includes, after the mobile computing device has determined that the second distance value satisfies the threshold, determining, by the mobile computing device, that the mobile computing device is within a third proximity zone with the peripheral device, the third proximity zone being less than the second proximity zone and less than the first proximity zone, as the mobile computing device receives data from the peripheral device using a second communication protocol having a shorter range than the first communication protocol. The method includes performing, by the mobile computing device, an action in response to the mobile computing device determining that the mobile computing device is within the third proximity zone with the peripheral device.

[0007] Embodiment 2 is a method according to embodiment 1, wherein the first communication protocol includes Bluetooth low energy transmission and the second communication protocol includes near field communication transmission.

[0008] Embodiment 3 is the method of embodiment 2, wherein determining the plurality of distance values ​​between the mobile computing device and the peripheral device does not include communicating over the wireless communication channel.

[0009] Embodiment 4 is the method of any one of embodiments 1 to 3, wherein modifying the display of the mobile computing device to visually indicate that the mobile computing device is within the second proximity zone with the peripheral device includes, if the mobile computing device does not receive user input after receiving the transmission from the peripheral device, presenting an indication of the type of the peripheral device on the display of the mobile computing device.

[0010] Embodiment 5 is the method of embodiment 4, wherein performing the action includes performing the action if the mobile computing device does not receive user input after receiving the transmission from the peripheral device.

[0011] Embodiment 6 is the method of embodiment 4, wherein modifying the display of the mobile computing device to visually indicate that the mobile computing device is within the second proximity zone with the peripheral device includes presenting a user interface that enables user input to modify the action specified to be performed in response to the mobile computing device determining that the mobile computing device is within the third proximity zone with the peripheral device.

[0012] Embodiment 7 is the method of any one of embodiments 1 to 6, wherein modifying the display of the mobile computing device to visually indicate that the mobile computing device is within a second proximity zone with the peripheral device includes presenting a user interface that includes a control that modifies a function of the peripheral device, the transmission received by the mobile computing device from the peripheral device specifying the function, and the mobile computing device selecting the control that modifies the function from a plurality of controls available for inclusion in the user interface for inclusion in the user interface based on the transmission having specified the function as distinct from other functions of a plurality of functions.

[0013] Embodiment 8 is the method of embodiment 7, further comprising receiving, by the mobile computing device, user input interacting with the control that modifies the function, and sending, by the mobile computing device, a signal for receipt by the peripheral device, the signal specifying the modification to the function specified by the user input interacting with the control, so that the peripheral device performs an operation to modify the function.

[0014] Embodiment 9 is the method of embodiment 8, wherein the function includes changing the volume of the peripheral device.

[0015] Embodiment 10 is the method of any one of embodiments 1 to 9, wherein performing the action comprises the mobile computing device sending a request for the peripheral device to perform the action.

[0016] Embodiment 11 is the method of any one of embodiments 1 to 10, wherein the peripheral device is a proxy peripheral device for another peripheral device, and performing the action includes the mobile computing device sending a request for the other peripheral device to perform the action.

[0017] Embodiment 12 is the method of any one of embodiments 1 to 11, wherein the second communication protocol comprises a near field communication protocol, and the method further comprises initiating a near field communication transmission for receipt by the peripheral device in response to the mobile computing device (i) receiving the transmission from the peripheral device using the first communication protocol, or (ii) determining that the second distance value satisfies the threshold.

[0018] Embodiment 13 relates to a computing system comprising one or more processors and one or more computer-readable devices comprising instructions, which when executed by the one or more processors, cause the operation of the method according to any one of embodiments 1 to 12 to be performed.

[0019] In some cases, a specific implementation can achieve one or more of the following advantages. A mobile computing device can use low-power techniques to monitor a wireless communication channel for transmissions potentially broadcast by a peripheral device, so that device battery power is saved for more power-intensive monitoring techniques. A mobile computing device can be used to interact with a peripheral device immediately without waiting for a pairing operation to occur, and without selecting a peripheral device from a list of peripheral devices that a user wants to connect to. Interactions can be performed between a mobile computing device and a peripheral device without establishing any type of communication session between the mobile computing device and the peripheral device. When the mobile computing device initially approaches a peripheral device, data can be shared between the devices so that a user of the mobile computing device does not experience lag when attempting to control the peripheral device. Instead of providing a large amount of data to render a custom-designed user interface, a peripheral device can send a smaller amount of data specifying available functions and corresponding setting values. The mobile computing device receiving the data can use a template mechanism to render the interface using a generic interface component that supports the functions specified by the peripheral device.

[0020] The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0021] Figure 1 is a conceptual diagram of an example system for modifying the type of interaction between a mobile computing device and a peripheral device based on proximity.

[0022] Figure 2 An example user interface enabling user interaction between a mobile computing device and a peripheral device is shown, wherein an interface type is presented by the mobile computing device based on its proximity to the peripheral device.

[0023] Figure 3A-3C A diagram illustrating an example process for modifying the type of interaction between a mobile computing device and a peripheral device based on proximity.

[0024] Figure 4 is a conceptual diagram of a system that can be used to implement the systems and methods described in this document.

[0025] Figure 5 is a block diagram of a computing device, which may be a client or one or more servers, that may be used to implement the systems and methods described in this document.

[0026] Like reference numbers in the various drawings represent like elements.

[0027] Specific implementation method

[0028] This document generally describes modifying the type of interaction between a mobile computing device and a peripheral device based on the proximity of the mobile computing device to the peripheral device. In some examples, the mobile computing device can recognize that the peripheral device is near the mobile computing device, and in response, the mobile computing device can automatically display a user interface that allows the user to control one or more functions of the peripheral device. If the user moves the mobile computing device closer to the peripheral device and places the mobile computing device in contact with the peripheral device, the mobile computing device and / or the peripheral device can perform a default action.

[0029] Typically, connecting to and interacting with a peripheral device typically involves many actions to be performed by a user of the mobile computing device, such as turning on and off various antennas, installing various applications, signing up for various services, pairing the device, managing the device, configuring the device, etc. These actions typically require a significant understanding of the underlying technology stack by the user. In addition, the number of peripheral devices that can be connected to mobile computing devices is increasing, and peripheral device manufacturers use different technologies to connect to and communicate with mobile computing devices. This complexity and inconsistency may reduce the experience of mobile device users and may cause performance degradation of the mobile device due to various (and potentially conflicting) applications, drivers, and configuration settings required to communicate with various peripheral devices. The technology described in this document can allow users to control peripheral devices in a more efficient and intuitive manner, and can improve device performance.

[0030] The next section of the disclosure describes a high-level overview of example interactions between a mobile computing device and peripheral devices before providing a more detailed description of these interactions with respect to the accompanying drawings. In the example interaction, a user has checked into a hotel and is walking to his hotel room. The hotel room includes a radio peripheral device that periodically broadcasts data identifying its presence. The user has a mobile phone, but the mobile phone has never previously communicated with the radio peripheral device. The operating system of the mobile phone is configured to periodically listen to a plurality of pre-designated radio frequency communication channels to determine whether any peripheral devices are broadcasting their presence over these channels. In this example, the radio device broadcasts its presence using the Bluetooth Low Energy (BLE) communication protocol, and the mobile phone listens for the broadcast using the BLE communication protocol.

[0031] As the user walks into his hotel room, his mobile phone detects a transmission from the radio device. The transmission includes information identifying the peripheral device as a radio device, and potentially other information, such as functions that allow the mobile phone to control. In response to the mobile phone receiving the transmission, the mobile phone begins a distance determination process to determine the distance between the mobile phone and the radio peripheral device. The distance determination process may involve performing time-of-flight analysis techniques on communications sent on one or more radio frequency channels that are different from the initial radio frequency channel on which the radio device broadcast its presence. The mobile phone may respond to the initial broadcast from the radio device by sending back a response on the same radio frequency channel, the response including data specifying that the distance determination process and associated communications are to begin (e.g., a request that the radio device transmit or listen for transmissions on one or more different radio frequency channels).

[0032] When the mobile phone detects the presence of a radio device and begins its distance determination process, the mobile phone may be said to be in a first proximity zone of the radio device. When in the first proximity zone, the mobile phone may not provide an indication to the user that the mobile phone has detected the presence of the radio device. In other examples, the mobile phone may indicate that it has detected the radio device (e.g., by displaying a notification icon shaped like the radio device and / or providing an audible notification), but the user may not be able to control functions of the radio device while in the first zone.

[0033] The mobile phone may periodically analyze the results of the distance determination process to determine whether the phone has moved within a threshold distance of the radio device associated with a smaller second proximity zone of the radio device (e.g., approximately arm's length to the radio device). Upon determining that the phone is within the threshold distance of the radio device, the mobile phone may begin performing operations associated with the second proximity zone. In some examples, the mobile phone displays an indication of the radio device (e.g., using a status bar notification or a pop-up notification). In some examples, the mobile phone displays a user interface that includes a selection set of controls for modifying corresponding functions of the radio device. For example, once the mobile phone determines that it is within the threshold distance of the radio device, (i) the user interface may automatically appear on the display of the mobile phone, or (ii) an icon indicating the presence of the radio device and selectable to cause presentation of the user interface may automatically appear on the display of the mobile phone.

[0034] The peripheral device may not be a peripheral device that the user (or his mobile phone) has previously encountered, and the techniques described herein can enable the user to use his mobile phone to immediately interact with the peripheral device without waiting for a pairing operation to occur and without selecting the peripheral device from a list of peripheral devices that the user wants to connect to. Instead, simply approaching the peripheral device can prompt controls to appear on the display of the user's mobile phone. In fact, the interactions described herein can be performed without establishing any type of communication session between the mobile phone and the peripheral device. For example, a transmission of the peripheral device can be broadcast to any mobile device near the peripheral device, and the transmission can indicate the type of peripheral device and the type of one or more functions that can be controlled via the above-mentioned user interface.

[0035] For example, the radio peripheral may have transmitted data indicating that its volume and on / off functions are controllable by the mobile phone via the above-mentioned user interface. The data identifying these functions may be transmitted by the radio device in its initial broadcast, which announces the presence to any mobile computing devices in its vicinity, or the data may be sent by the radio device to the mobile phone in response to the mobile phone receiving the broadcast and sending a response communication to the radio device prompting the radio device to send the data.

[0036] Continuing with the above example, once the user walks within a few feet of the radio, his mobile phone begins to display a user interface that includes controls for changing the volume of the radio and turning the radio on or off. The user wants to turn the radio on and increase the volume, so interacts with the controls presented on his phone to perform these functions. In response, the mobile phone sends a transmission requesting the radio to perform these functions. In some examples, the mobile phone sends a request, such as a broadcast, without the radio performing a handshake process or another type of process to establish a connection interval.

[0037] There is a third proximity zone in which the mobile phone and the radio device are in contact or close enough that they are almost touching. When the mobile phone is placed in this third proximity zone, a default action is triggered on the mobile phone or the radio device, or both. For example, as long as the mobile phone is in the first proximity zone or the second proximity zone, the mobile phone can begin to repeatedly send NFC signals, and the radio device can include an NFC tag that generates a response radio frequency transmission when the mobile phone is close enough to the NFC tag (e.g., 10 cm). The mobile phone can detect the response transmission and perform a default action itself, or request the radio device to perform a default action, or both. For example, the mobile phone can automatically pair with the radio device, and music or other audio that the user requests to be played on the mobile phone can be output by the radio device.

[0038] As explained in the remainder of this disclosure, many different types of interactions between a mobile computing device and one or more peripherals are possible. Many interactions involve the ability of the mobile computing device to quickly control peripherals, with the type of wireless communication and user interface functionality changing based on proximity.

[0039] Reference now Figure 1 , which illustrates a conceptual diagram of an example system 100 for modifying the type of interaction between a mobile computing device 102 and a peripheral device 104 based on proximity. The mobile computing device 102 Figure 1 1 is shown as, for example, a touch screen smartphone, but mobile computing device 102 may be another type of computing device, such as a smart watch, a tablet computer, a personal digital assistant, or another suitable type of computing device. Figure 1 1 is shown as an alarm clock, for example, but the peripheral device 104 may be another suitable type of device, such as a radio, a television, a camera, a printer, a thermostat, an appliance, a robot, a vehicle, a fixed or mobile computing device, etc. As used in this application, the term "peripheral device" refers to any kind of device that can communicate with a mobile computing device and can perform one or more operations based on data received from the mobile computing device, that is, the "peripheral device" mentioned herein may include communication and computing capabilities, and may include but is extended to a wider range of devices than are typically associated with the term.

[0040] Figure 1Various zones of proximity to the peripheral device 104 are shown, including, for example, a first proximity zone 110, a second proximity zone 120, and a third proximity zone 130. In this example, the proximity zones 110, 120, and 130 represent a series of correspondingly smaller zones around the peripheral device 104, wherein the first proximity zone 110 contains the second proximity zone 120, and the second proximity zone 120 contains the third proximity zone 130. In other words, the second zone and the third zone are completely nested within the first zone, and the third zone is completely nested within the first zone and the second zone. For example, the first proximity zone 110 can represent the communication range of the peripheral device 104. For example, when the mobile computing device 102 (here shown as the mobile computing device 102a) is within the first proximity zone 110, the user of the mobile computing device 102a is generally able to visually locate the peripheral device 104. The second proximity zone 120, for example, can represent the potential physical contact range of the peripheral device 104. For example, when mobile computing device 102 (illustrated here as mobile computing device 102b) is within second proximity zone 120, a user of mobile computing device 102b may be within physical range of peripheral device 104 (e.g., within arm's reach), such that the user may physically contact peripheral device 104 if the user so chooses. Third proximity zone 130 may, for example, represent an actual physical contact range (or near physical contact, such as within a few inches or centimeters) of peripheral device 104. For example, when mobile computing device 102 (illustrated here as mobile computing device 102c) is within third proximity zone 130, a user of mobile computing device 102c may generally cause physical contact (or near physical contact) between mobile computing device 102c and peripheral device 104, such as by touching mobile computing device 102c to peripheral device 104, or hovering mobile computing device 102c over peripheral device 104 (e.g., within a few centimeters of peripheral device 104).

[0041] In general, each of proximity zones 110, 120, and 130 may be associated with a different type of interaction between mobile computing device 102 and peripheral device 104, and / or a different user interface may be presented by mobile computing device 102 when mobile computing device 102 is located in the zone. For example, when mobile computing device 102 (illustrated here as mobile computing device 102a) enters first proximity zone 110, mobile computing device 102a may receive communications from peripheral device 104, may determine that peripheral device 104 is a type of device that mobile computing device 102a may interact with, and may present user interface 200a ( Figure 2 For example, when the mobile computing device 102 (here shown as the mobile computing device 102b) enters the second proximity zone 120, the mobile computing device 102b may present a different user interface 200b ( Figure 2), a user of mobile computing device 102b may configure peripheral device 104 through the interface. For example, when mobile computing device 102 (here shown as mobile computing device 102c) enters third proximity zone 130, mobile computing device 102 (here shown as mobile computing device 102c) may perform a default action with respect to peripheral device 104 and / or may present a different user interface 200c (here shown as mobile computing device 102c) to confirm an update of peripheral device 104. Figure 2 ).

[0042] In some implementations, the mobile computing device may communicate with a proxy peripheral device rather than directly communicating with the peripheral device. For example, the peripheral device 104 may be physically inaccessible to the user of the mobile computing device 102 (e.g., the peripheral device 104 may be a hidden network router, may be a raised television, or may be another physically inaccessible device). The proxy peripheral device 106 may be, for example, a physically accessible object (e.g., a router beacon, a television remote control, or another type of proxy device) that may be paired with the peripheral device 104 and directly handle the communication with the mobile computing device instead of (or in lieu of) the peripheral device 104 that directly handles such communication. In this example, the proxy peripheral device 106 may have its own one or more proxy proximity zones 140 (e.g., including its own first, second, and third proximity zones). For example, the proxy peripheral device 106 may communicate with both the peripheral device 104 and the mobile computing device 102, rather than the mobile computing device 102 communicating directly with the peripheral device 104. Typically, the proxy peripheral device 106 may be located within the first proximity zone 110 or the second proximity zone 120 of the peripheral device 104.

[0043] Reference now Figure 3A -C, a diagram showing an example process for modifying the type of interaction between a mobile computing device and a peripheral device based on proximity. The operation for modifying the type of interaction can be performed by, for example, system 100 ( Figure 1 ) and may include presenting one or more user interfaces, such as user interface 200a, user interface 200b, and / or user interface 200c ( Figure 2 ). However, the operations may also be performed by different systems and / or may include presenting a different kind of user interface (or no user interface).

[0044] At block 302, the mobile computing device monitors a wireless communication channel. For example, the mobile computing device 102 (at Figure 1102a) can monitor a wireless communication channel that can be used by various peripheral devices to broadcast transmissions that can be received by the mobile computing device. The mobile computing device 102, for example, can run an operating system that includes a listener application that listens to the transmissions broadcast by the peripheral device and includes an application programming interface (API) that specifies the format of the data transmitted by the peripheral device. A peripheral device provider (e.g., a manufacturer and / or a software developer) can choose to configure its peripheral device to broadcast transmissions using the wireless communication channel according to the API, for example, so that various mobile computing devices (e.g., mobile computing device 102) can parse and use the data included in the transmission without having to pair the mobile computing device with the peripheral device. In general, the listener application can use low-power techniques to monitor the wireless communication channel. For example, the mobile computing device 102 can periodically (e.g., once per minute, twice per minute, four times per minute, ten times per minute, twenty times per minute, or at another suitable interval) monitor the wireless communication channel for transmissions from the peripheral device so that device battery power is saved.

[0045] At block 304, the peripheral device sends a transmission over the wireless communication channel using the first communication protocol. For example, the peripheral device 104 may broadcast a transmission including data formatted according to an API of the mobile computing device 102. The transmission may identify the type of the peripheral device. For example, the transmission broadcast by the peripheral device 104 may include one or more data values ​​that identify the peripheral device 104 as a specific type of device (e.g., a data value corresponding to the device type (such as a general category of devices)), a specific model of the device type (e.g., a model identifier), and / or a specific device (e.g., a serial number). In this example, the transmission broadcast by the peripheral device 104 identifies the device as an alarm clock. The peripheral device may send such transmissions periodically, and may not address such transmissions to any specific device (e.g., such that the transmission is considered to be "broadcasted" to any device listening for such a broadcast).

[0046] At block 306, the transmission may optionally include data specifying one or more functions of the peripheral device. For example, a transmission broadcast by the peripheral device 104 may include one or more data values ​​specifying functions and / or settings of the peripheral device 104 that may be triggered and / or modified by the mobile computing device 102. In this example, the mobile computing device 102 (e.g., an alarm clock) may broadcast data specifying that its volume may be modified, its clock time may be set, its reminder time may be set, and reminders may be turned on or off.

[0047] In some implementations, the first communication protocol may include a Bluetooth Low Energy (BLE) communication protocol. For example, the peripheral device 104 may use the BLE communication protocol to asynchronously communicate with one or more mobile computing devices within the communication range of the peripheral device 104. The asynchronous communication may be accomplished using a data publishing model, where the peripheral device 104, for example, is not specifically paired with the mobile computing device 102, but rather broadcasts data that can be read by the mobile computing device 102. In some implementations, the first communication protocol may include another technology for asynchronously broadcasting data, such as using Wi-Fi signals, infrared signals, high-frequency sound, or other suitable technology.

[0048] At block 308, the mobile computing device receives the transmission via the wireless communication channel using the first communication protocol. Figure 1 The mobile computing device 102a ) shown in FIG. 1 may receive one or more transmissions broadcast by the peripheral device 104 , while periodically monitoring such transmissions.

[0049] At block 310, the mobile computing device may determine that the mobile computing device is within a first proximity zone with the peripheral device based on receiving the transmission. Figure 1 1 , the mobile computing device 102a) may determine that it is within a first proximity zone 110 with the peripheral device 104. The first proximity zone 110 may, for example, correspond to a communication range in which the mobile computing device 102 may receive data broadcast by the peripheral device 104. The mobile computing device 102 determining that it is within the first proximity zone 110 may involve the mobile computing device 102 taking an action in response to receiving a transmission, and does not necessarily require the mobile computing device 102 to perform operations that are specifically marked for performance when within a particular "zone."

[0050] In some implementations, the mobile computing device may modify a display of the mobile computing device to visually indicate that the mobile computing device is in proximity to the peripheral device in response to determining that the mobile computing device is within a first proximity zone with the peripheral device. For example, the mobile computing device 102a may modify its display to present the user interface 200a ( Figure 2), which may include a notification 210 indicating that a configurable peripheral device (e.g., peripheral device 104) has been detected nearby, along with information corresponding to one or more data values ​​broadcast by the peripheral device 104 (e.g., a device type, model identifier, serial number, and / or other identification information). For example, the mobile computing device 102a may present the identification information broadcast by the peripheral device 104, and / or may use the identification information to reference additional information about the peripheral device 104 that is stored locally by the mobile computing device 102a or available from a server on the cloud. In this example, the mobile computing device 102a selects an appropriate image to represent the peripheral device 104 based on the information broadcast by the peripheral device 104 (e.g., device model information), and includes the selected image in the notification 210. Based on the notification 210, for example, a user of the mobile computing device 102a may identify the peripheral device 104, and may move toward the peripheral device 104 to establish further communication with (and potentially configure) the peripheral device 104.

[0051] In some implementations, in response to determining that the mobile computing device is within a first proximity zone with a peripheral device, the mobile computing device may not modify the display of the mobile computing device to visually indicate that the mobile computing device is close to the peripheral device. For example, when mobile computing device 102 is close to multiple different peripheral devices, and / or when mobile computing device 102 frequently enters a first proximity zone with such devices, notifications detected by the peripheral devices may be suppressed by mobile computing device 102 so that the user of mobile computing device 102 is not presented with too many (or too frequent) notifications.

[0052] At block 312, in response to the mobile computing device receiving a transmission from the peripheral device, the mobile computing device may establish a distance determination process that repeatedly: (i) determines a distance value between the mobile computing device and the peripheral device, and (ii) determines whether the distance value satisfies a threshold indicating that the mobile computing device is within a second proximity zone with the peripheral device. Figure 1 When the mobile computing device 102a (shown as the mobile computing device 102a in the figure) is in the first proximity zone 110 (e.g., within the communication range of the peripheral device 104 based on the wireless communication channel using the first communication protocol), the mobile computing device 102 can perform a distance determination process to determine when the mobile computing device 102 enters the second proximity zone 120. The second proximity zone 120 can, for example, correspond to a threshold distance from the peripheral device 104 at which the mobile computing device 102 (in the Figure 1 A user (shown as mobile computing device 102b in FIG. 1 ) may potentially cause physical contact between the devices, such as a distance of three feet, four feet, five feet, or another suitable value.

[0053] In some implementations, repeatedly determining the distance between the mobile computing device and the peripheral device may not include communicating over the wireless communication channel. For example, the mobile computing device 102 may determine the distance using a technique different from communicating over the wireless communication channel using the first communication protocol, such as measuring communication signal strength (e.g., Bluetooth signal strength, Wi-Fi signal strength, ultrasound strength, or another type of communication signal), performing a time-of-flight analysis technique on one or more received signals, or performing another suitable technique. Typically, the mobile computing device 102 (in the case of a wireless communication channel) may be performed at a rate more frequently than the rate at which the wireless communication channel is monitored for transmissions from the peripheral device. Figure 1 1 and 10. The distance determination process performed by the mobile computing device 102a when the mobile computing device 102a is within the first proximity zone 110 is shown in FIG. 10. For example, the mobile computing device 102 may monitor the wireless communication channel (using the first communication protocol) for transmissions from the peripheral device at a given rate (e.g., once per minute, twice per minute, four times per minute, or at another suitable interval), and when the mobile computing device 102a (in the first proximity zone 110) is within the first proximity zone 110, the mobile computing device 102a may monitor the wireless communication channel (using the first communication protocol) for transmissions from the peripheral device at a given rate (e.g., once per minute, twice per minute, four times per minute, or at another suitable interval). Figure 1 When the mobile computing device 102a (shown as the mobile computing device 102a in FIG. 1 ) enters the first proximity zone 110, the mobile computing device 102a may perform the distance determination process at a more frequent rate (eg, once per second, twice per second, every second, or at another suitable interval).

[0054] At block 314, establishing the distance determination process may optionally include the mobile computing device sending a response to the transmission from the peripheral device over the same wireless communication channel using the first communication protocol, and the peripheral device receiving the response as a notification that the distance determination process is to begin. For example, the mobile computing device 102a may notify the peripheral device 104 that the distance determination process is to begin, and in response, the peripheral device 104 may transmit or listen for transmissions on one or more different radio frequency channels (e.g., Bluetooth, Wi-Fi, or another suitable communication channel) as part of performing the distance determination process.

[0055] In some implementations, a socket may be used to establish a communication channel between a mobile computing device and a peripheral device on different radio frequency channels. Typically, establishing a communication channel using a socket may take time. For example, by initiating a process for establishing a communication channel with a peripheral device 104 when the mobile computing device 102 enters a first proximity zone 110, a channel may be established when the mobile computing device 102 enters a second proximity zone 120, so that a user of the mobile computing device 102 does not experience lag when using the mobile computing device 102 to control the peripheral device 104 (e.g., when the mobile computing device 102 determines that it is within the second proximity zone, the user interface 200b may be immediately presented). For example, when complex communications occur between the mobile computing device 102 and the peripheral device 104, and / or when a large amount of data is to be communicated between the devices, using a socket to establish a communication channel may be beneficial.

[0056] In some implementations, a communication channel may be established between a mobile computing device and a peripheral device on different radio frequencies without using sockets. For example, the mobile computing device 102 and the peripheral device 104 may each continue to communicate asynchronously by broadcasting data that may be received by the other device. For example, when simple communications occur between the mobile computing device 102 and the peripheral device 104, and / or when a small amount of data is to be communicated between the devices, it may be beneficial to not use sockets to establish a communication channel.

[0057] At block 316, after the mobile computing device has determined that the distance value does not satisfy the threshold, the mobile computing device may determine that the distance value satisfies the threshold. Figure 1 When the mobile computing device 102 (shown as the mobile computing device 102a in the figure) is within the first proximity zone 110 but has not yet entered the second proximity zone 120, the mobile computing device 102 may repeatedly determine a distance value corresponding to its distance to the peripheral device 104, and may determine that the mobile computing device 102 has not yet entered the second proximity zone 120 based on the distance value not satisfying the threshold. For example, when the mobile computing device 102 (shown as the mobile computing device 102a in the figure) is within the first proximity zone 110 but has not yet entered the second proximity zone 120, the mobile computing device 102 may repeatedly determine a distance value corresponding to its distance to the peripheral device 104, and may determine that the mobile computing device 102 has not yet entered the second proximity zone 120 based on the distance value not satisfying the threshold. Figure 1 When mobile computing device 102b (shown as mobile computing device 102b) enters second proximity zone 120, mobile computing device 102 may determine that it is now within second proximity zone 120 based on its distance value satisfying a corresponding distance threshold for that zone (e.g., three feet, four feet, five feet, or another appropriate value that may be determined based on signal strength).

[0058] At block 318, in response to determining that the distance value satisfies the threshold, the mobile computing device may optionally send a notification to the peripheral computing device that the distance value satisfies the threshold. Figure 1When the distance value meets the threshold, the mobile computing device 102b may broadcast a notification to the peripheral device 104 over the wireless communication channel using the first communication protocol, or may send the notification to the peripheral device 104 using a different communication channel that has been established between the devices. The peripheral device 104 may receive the notification that the distance value meets the threshold, and in response, may send a transmission specifying data related to the peripheral device 104 (e.g., broadcasting the transmission over the wireless communication channel using the first communication protocol, or sending the transmission by using a different communication channel that has been established between the devices), which may be received by the mobile computing device 102b. For example, the data related to the peripheral device 104 may include one or more data values ​​specifying functions and / or settings of the peripheral device 104 that may be triggered and / or modified by the mobile computing device 102b, and / or may include instructions for presenting such data values ​​in an interface to be presented by the mobile computing device 102b.

[0059] In some implementations, data associated with the peripheral device and provided to the mobile computing device may be adapted by the peripheral device for the mobile computing device based on one or more aspects of the mobile computing device. For example, the peripheral device 104 may receive from the mobile computing device 102 one or more data values ​​corresponding to aspects of the mobile computing device 102 that may potentially be associated with the peripheral device 104 and a notification that the distance value satisfies a threshold, and the peripheral device 104 may modify the data to be presented in the interface by the mobile computing device 102 based on the one or more data values ​​from the mobile computing device 102. In this example, the data values ​​from the mobile computing device 102 may include data values ​​that specify a particular aspect of the mobile computing device 102 that is potentially associated with the peripheral device 104 (e.g., setting a reminder on the mobile computing device 102). The peripheral device 104 may, for example, receive the data values ​​that specify the particular aspect of the mobile computing device 102, and in response, may provide data to the mobile computing device 102 that causes the mobile computing device 102 to present an interface that includes options corresponding to the particular aspect of the mobile computing device 102 (e.g., sending a reminder to the peripheral device 104). For example, if the data values ​​from mobile computing device 102 do not include a data value specifying setting a reminder on mobile computing device 102, peripheral device 104 may not provide data to mobile computing device 102 that causes mobile computing device 102 to present an interface that includes an option to send a reminder to peripheral device 104.

[0060] At block 320, in response to determining that the distance value satisfies the threshold, the mobile computing device may optionally send a request to the cloud for data related to the peripheral device, and may receive the peripheral device data in response. For example, the mobile computing device 102 may provide an identifier of the peripheral device 104 to the cloud service, which in turn provides general information about the peripheral device 104 (e.g., one or more images, descriptions, etc.), and / or provides data that may be used by the mobile computing device 102 to render an interface for configuring the peripheral device 104.

[0061] At block 322, in response to determining that the distance value satisfies the threshold, the mobile computing device may modify the display of the mobile computing device to visually indicate that the mobile computing device is close to the peripheral device. Figure 1 When the mobile computing device 102b (shown as mobile computing device 102b in the figure) enters the second proximity zone 120, the mobile computing device 102b can modify its display to visually indicate that the mobile computing device 102b is close to the peripheral device 104 (e.g., within three feet, four feet, five feet, or another suitable distance). In this example, the mobile computing device 102b can display the user interface 200b ( Figure 2 ) to visually indicate that mobile computing device 102b is in proximity to peripheral device 104. In some examples, mobile computing device 102b may present a notification similar to notification 210 shown in user interface 200a when mobile computing device 102b determines that it is within second proximity zone 120, and after a user selects notification 210, mobile computing device 102b may present user interface 200b for presenting additional controls. In such an example, mobile computing device 102b may or may not pre-present notification 210 when mobile computing device 102b is in first proximity zone 110.

[0062] At block 324, modifying the display of the mobile computing device to visually indicate that the mobile computing device is in proximity to the peripheral device may optionally include presenting an indication of the type of the peripheral device on the display of the mobile computing device without the mobile computing device receiving user input after receiving the transmission from the peripheral device. For example, after receiving the transmission from the peripheral device 104, without receiving user input, the mobile computing device 102b may present the user interface 200b ( Figure 2 In this example, user interface 200b includes visual indication 220 that includes an image of peripheral device 104, a device description (eg, including device type, model identifier, and / or serial number), and a message indicating that the device is configurable.

[0063] At block 326, modifying the display of the mobile computing device to visually indicate that the mobile computing device is in proximity to the peripheral device may optionally include presenting a user interface that includes controls for modifying the functionality of the peripheral device. For example, the mobile computing device 102b may present the user interface 200b ( Figure 2 ). In this example, user interface 200 b includes various controls 230 for modifying various functions of peripheral device 104 (e.g., an alarm clock), including controls for modifying a volume setting of peripheral device 104, controls for modifying a clock time setting of peripheral device 104, controls for modifying a reminder time setting of peripheral device 104, and controls for toggling a reminder setting on peripheral device 104 on or off.

[0064] In some implementations, the mobile computing device may select one or more controls from a plurality of controls available for inclusion in a user interface to modify the functionality of a peripheral device included in the user interface based on the transmission having specified functionality. For example, the mobile computing device 102b may select a control 230 in the user interface 200b based on the received transmission to modify the functionality of the peripheral device 104. Typically, a mobile computing device that supports an API for communicating with and controlling a peripheral device may include a template mechanism for rendering a user interface. For example, there may be a wide range of peripheral devices with potentially many different functionalities. For example, a peripheral device may send minimal data specifying available functionality and corresponding setting values, rather than providing a large amount of data to render a custom-designed user interface for configuring the peripheral device, and a mobile computing device (e.g., a controller device) receiving the data may use a common component (e.g., a control) that supports the available functionality to render the user interface using a template mechanism.

[0065] In this example, a transmission from the peripheral device 104 to the mobile computing device 102 (e.g., a transmission received by the mobile computing device 102a after the mobile computing device 102a has entered the first proximity zone 110 but has not yet entered the second proximity zone 120) may include data specifying that the peripheral device 104 supports a volume function, a clock time function, a reminder time function, and a reminder toggle function. Using the template mechanism, for example, the mobile computing device 102b may select an appropriate corresponding control 230 to modify the specified function of the peripheral device 104 for inclusion in the user interface 200b, and may populate the control 230 with the current data value received from the peripheral device 104.

[0066] At block 328, modifying the display of the mobile computing device to visually indicate that the mobile computing device is in proximity to the peripheral device may optionally include presenting a user interface that enables user input to modify a specification of an action to be performed in response to the mobile computing device determining that the mobile computing device is within a third proximity zone to the peripheral device. For example, mobile computing device 102b may present user interface 200b that enables user input, via controls 230, to modify a specification of an action to be performed in response to mobile computing device 102 (in the Figure 1 The user interface 200B (shown as mobile computing device 102c in the figure) determines that the mobile computing device 102c is located within the third proximity zone 130 with the peripheral device 104 and modifies the action specified to be performed. The action may, for example, include modifying one or more functions of the peripheral device 104 using the values ​​specified through the user interface 200b. As another example, the action may include performing a default action that may be specified by the peripheral device, such as applying a reminder set on the mobile computing device 102 to the peripheral device 104, or performing another appropriate action. In this example, the user interface 200B includes a message 240 (e.g., "Tap the phone on the device to update the device") that notifies the user of the mobile computing device 102b of the default action to be performed.

[0067] At block 330, the mobile computing device optionally receives user input that interacts with a control that modifies the functionality of the peripheral device. Figure 1 2 (shown as mobile computing device 102 b in FIG. 1 ) can receive user input provided via control 230 of user interface 200 b. In this example, the user can manipulate control 230 to indicate that the volume of a peripheral device 104 (e.g., an alarm clock) is to be changed, the clock time of the peripheral device 104 is to be changed, the reminder time of the device is to be changed, and / or a reminder is to be set on the device.

[0068] At block 332, the mobile computing device optionally sends a signal for receipt by the peripheral device that specifies a modification to the functionality specified by the user input interacting with the control. Figure 1 The mobile computing device 102b (shown as mobile computing device 102b) can send a signal for receipt by the peripheral device 104, the signal specifying one or more modifications to the function specified by the user input through one or more controls 230. The signal can be sent by the mobile computing device 102b, for example, by sending the signal through a wireless communication channel using the first communication protocol, or can be sent using a different communication channel that has been established between the devices. In this example, the mobile computing device 102b can send the signal for receipt by the peripheral device 104 without the mobile computing device 102b entering the third proximity zone 130.

[0069] At block 334, the peripheral device optionally receives the signal and modifies the functionality. For example, the peripheral device 104 may receive the signal and modify one or more functions of the peripheral device 104 based on the user input provided through the one or more controls 230. In this example, the peripheral device 104 (e.g., an alarm clock) may change its volume, change its clock time, change its reminder time, and / or may set a reminder.

[0070] At block 336, the peripheral device may send data using a second communication protocol that has a shorter range than the first communication protocol. Figure 1 After the mobile computing device 102b (shown in FIG. 1 as the mobile computing device 102b) enters the second proximity zone 120 (e.g., when the mobile computing device 102b is within the potential physical contact range, based on the distance determination process), the peripheral device 104 can begin to send data using the second communication protocol (e.g., in response to receiving a notification from the mobile computing device 102b that the distance value meets the threshold). In some implementations, the second communication protocol may include a near field communication (NFC) protocol. For example, the peripheral device 104 can send data to the mobile computing device 102b (shown in FIG. 1 as the mobile computing device 102b) using the second communication protocol. Figure 1 When the mobile computing device 102c (shown in FIG. 1 ) enters the third proximity zone 130, a radio frequency (RF) field is generated that facilitates NFC peer-to-peer communications and / or may power a passive NFC device included in the mobile computing device 102c.

[0071] In some implementations, the mobile computing device may initiate an NFC transmission for receipt by the peripheral device in response to the mobile computing device (i) receiving a transmission from the peripheral device using the first communication protocol, or (ii) determining that the distance value satisfies a threshold. Figure 1 When the mobile computing device 102a (shown in FIG. 1 ) enters the first proximity zone 110, the mobile computing device 102a may initiate an NFC transmission for receipt by the peripheral device 104 in response to receiving an NFC transmission from the peripheral device using the first communication protocol. As another example, when the mobile computing device 102a (shown in FIG. 1 ) enters the first proximity zone 110, the mobile computing device 102a may initiate an NFC transmission for receipt by the peripheral device 104 in response to receiving an NFC transmission from the peripheral device using the first communication protocol. Figure 1 When the mobile computing device 102b (shown as the mobile computing device 102b in FIG. 1 ) enters the second proximity zone 120 , the mobile computing device 102b may initiate an NFC transmission for receipt by the peripheral device 104 in response to determining that the mobile computing device 102b is within a potential physical contact range of the peripheral device 104 based on the distance determination process.

[0072] At block 338, after the mobile computing device has determined that the distance value satisfies the threshold, and because the mobile computing device receives data from the peripheral device using the second communication protocol, the mobile computing device may determine that the mobile computing device is within a third proximity zone with the peripheral device. Figure 1As shown, for example, the third proximity zone 130 may be smaller than the second proximity zone 120, and may be smaller than the first proximity zone 110. Figure 1 After the mobile computing device 102b is determined to be within the potential physical contact range of the peripheral device 104 (e.g., based on a distance determination process), and because the mobile computing device 102b (shown as the mobile computing device 102b in FIG. Figure 1 1 , the mobile computing device 102 c receives data from the peripheral device 104 using a second communication protocol (eg, NFC communication), the mobile computing device 102 c may determine that the mobile computing device 102 c is within a third proximity zone 130 with the peripheral device 104 .

[0073] In some implementations, determining that the mobile computing device is within a third proximity zone with the peripheral device may include determining that the mobile computing device is in proximity to the peripheral device without physically touching the peripheral device. Figure 1 When the mobile computing device 102c is within a communication range of the peripheral device 104 using the second communication protocol (e.g., an NFC communication range of several inches or centimeters) but not physically touching the peripheral device 104, the mobile computing device 102c can receive data from the peripheral device 104 (e.g., using NFC communication). In some implementations, the mobile computing device 102 can determine that the mobile computing device 102 is within the third proximity zone 130 using the distance determination techniques previously discussed for determining whether the mobile computing device 102 is within the second proximity zone 120, but based on determining that the mobile computing device 102 is within a threshold distance that is closer than the threshold distance used to determine presence within the second proximity zone 120.

[0074] In some implementations, determining that the mobile computing device is within a third proximity zone with the peripheral device may include determining that the mobile computing device is physically touching the peripheral device. Figure 1 When the mobile computing device 102c (shown as the mobile computing device 102c) is within a communication range of the peripheral device 104 using the second communication protocol (e.g., an NFC communication range of several inches or centimeters), the mobile computing device 102c and / or the peripheral device 104 can use the motion sensor to determine when physical contact occurs between the devices.

[0075] At block 340, the mobile computing device may perform an action in response to determining that the mobile computing device is within a third proximity zone with the peripheral device. Figure 1102c) can determine that it is within a third proximity zone 130 with peripheral device 104 and can perform one or more actions in response to the determination (e.g., broadcasting data to be received by one or more devices, transmitting data to a particular peripheral device, sending data to and / or receiving data from a cloud server, updating local settings, executing an application, or another appropriate action).

[0076] In some implementations, performing the action may include performing the action if the mobile computing device does not receive user input (excluding physical movement of the mobile computing device as a form of user input) after receiving the transmission from the peripheral device. Figure 1 After determining that it has entered first proximity zone 110 based on receiving a transmission from peripheral device 104 over a wireless communication channel using a first communication protocol, mobile computing device 102 may continue to move toward peripheral device 104 through second proximity zone 120 and into third proximity zone 130 without receiving user input. Figure 1 2, when the mobile computing device 102c (shown as the mobile computing device 102c in FIG. 1 ) enters the third proximity zone 130 (e.g., by hovering over and / or physically touching the peripheral device 104), the mobile computing device 102c may perform a default action with respect to the peripheral device 104 (e.g., the action described in the message 240 presented by the user interface 200b when the mobile computing device 102 is in the second proximity zone 120). In this example, the mobile computing device 102c may update the peripheral device 104 using the time and / or reminder settings of the mobile computing device 102c without receiving user input from the mobile computing device 102c. After updating the peripheral device 104, for example, the mobile computing device 102c may provide a user interface 200c confirming the update of the peripheral device 104, including a message 250, which may include a status notification related to the update (e.g., "Device updated!") and / or one or more updated values ​​for the settings of the peripheral device 104 (e.g., time: 11:03 PM; reminder: 7:00 AM).

[0077] In some implementations, performing the action may include the mobile computing device sending a request to the peripheral device to perform the action. Figure 1The mobile computing device 102c (shown as the mobile computing device 102c) may send a request to the peripheral device 104 for the peripheral device 104 to perform an action (e.g., use a value specified via the user interface 200b, or perform a default action). Sending the request, for example, may include the mobile computing device 102c sending a signal over the wireless communication channel using the first communication protocol. As another example, sending the request may include the mobile computing device 102c using a different communication channel that has been established between the mobile computing device 102 and the peripheral device 104. As another example, sending the request may include the mobile computing device 102c using a second communication protocol that has a shorter range than the first communication protocol.

[0078] In some implementations, the peripheral device may be a proxy peripheral device for another peripheral device, and performing the action may include the mobile computing device sending a request for the other peripheral device to perform the action. For example, the mobile computing device 102 may enter a proxy proximity zone 140 for the proxy peripheral device 106 of the peripheral device 104, and in response, the mobile computing device 102 may send a request for the peripheral device 104 to perform the action. For example, the request may be sent directly by the mobile computing device 102 to the peripheral device 104, or may be sent by the mobile computing device 102 to the proxy peripheral device 106 for forwarding by the proxy peripheral device 106 to the peripheral device 104.

[0079] When the mobile computing device 102 is in the second or third proximity zone, the mobile computing device 102 may continue to perform the distance determination process to identify when the mobile computing device 102 has left the second and / or third proximity zone and has only fallen into the first proximity zone. Similarly, the mobile computing device 102 may perform actions to determine when it has left the first proximity zone (e.g., because the mobile computing device 102 is no longer receiving broadcasts from the peripheral device), and may update its user interface and operations accordingly to correspond to those discussed throughout this document.

[0080] Reference now Figure 4 , shows a conceptual diagram of a system that can be used to implement the systems and methods described in this document. In this system, a mobile computing device 410 can wirelessly communicate with a base station 440, which can provide the mobile computing device with wireless access to multiple hosted services 460 through a network 450.

[0081] In this illustration, mobile computing device 410 is depicted as a handheld mobile telephone (e.g., a smart phone or app phone) that includes a touch screen display device 412 for presenting content to a user of mobile computing device 410 and receiving touch-based user input and / or presence-sensitive user input (e.g., as detected on the surface of the computing device using a radar detector installed in mobile computing device 410). Other visual, tactile, and auditory output components (e.g., LED lights, a vibration mechanism for tactile output, or a speaker for providing tones, speech generation, or recording output) may also be provided, as may various different input components (e.g., keyboard 414, physical buttons, trackball, accelerometer, gyroscope, and magnetometer).

[0082] An example visual output mechanism in the form of a display device 412 may take the form of a display with resistive or capacitive touch capabilities. The display device may be used to display video, graphics, images, and text, and to coordinate user touch input locations with the location of displayed information so that the device 410 may associate user contact at the displayed item location with the item. The mobile computing device 410 may also take alternative forms, including a laptop computer, a tablet or tablet computer, a personal digital assistant, an embedded system (e.g., a car navigation system), a desktop personal computer, or a computerized workstation.

[0083] Example mechanisms for receiving user input include keyboard 414, which may be a full QWERTY keyboard or a traditional keypad including keys for the numbers "0-9", "*", and "#". Keyboard 414 receives input when a user physically contacts or presses keyboard keys. User manipulation of trackball 416 or interaction with a trackpad enables the user to provide movement direction and velocity information to mobile computing device 410 (e.g., manipulating the position of a cursor on display device 412).

[0084] Mobile computing device 410 is capable of determining the location of physical contact (e.g., the location of contact by a finger or stylus) with touch screen display device 412. Using display device 412, various "virtual" input mechanisms may be generated in which a user interacts with graphical user interface elements by contacting the graphical user interface elements depicted on display device 412. An example of a "virtual" input mechanism is a "software keyboard" in which a keyboard is displayed on the touch screen and the user selects keys by pressing an area of ​​display device 412 corresponding to each key.

[0085] The mobile computing device 410 may include mechanical or touch-sensitive buttons 418a-d. Additionally, the mobile computing device may include buttons for adjusting the volume output by one or more speakers 420, and buttons for turning the mobile computing device on or off. Microphone 422 allows the mobile computing device 410 to convert audible sound into electrical signals that can be digitally encoded and stored in a computer-readable memory, or transmitted to another computing device. The mobile computing device 410 may also include a digital compass, an accelerometer, a proximity sensor, and an ambient light sensor.

[0086] The operating system may provide an interface between the hardware (e.g., input / output mechanisms and a processor that executes instructions retrieved from a computer-readable medium) and software of the mobile computing device. Example operating systems include ANDROID, CHROME, IOS, MAC OS X, WINDOWS 7, WINDOWS PHONE 7, SYMBIAN, BLACKBERRY, WEBOS, various UNIX operating systems; or proprietary operating systems for computerized devices. The operating system may provide a platform for executing application programs that facilitate interaction between the computing device and the user.

[0087] Mobile computing device 410 may present a graphical user interface using display device 412. A graphical user interface is a collection of one or more graphical interface elements and may be static (e.g., the display remains the same over a period of time) or may be dynamic (e.g., the graphical user interface includes graphical interface elements that animate without user input).

[0088] The graphical interface element can be text, line, shape, image or combination thereof. For example, the graphical interface element can be an icon displayed on the desktop and the associated text of the icon. In some examples, the graphical interface element is selectable using user input. For example, the user can select the graphical interface element by pressing the area of ​​the touch screen corresponding to the display of the graphical interface element. In some examples, the user can manipulate the trackball to highlight a single graphical interface element as having focus. The user selection of the graphical interface element can call a predefined action of the mobile computing device. In some examples, the selectable graphical interface element further or alternatively corresponds to a button on the keyboard 404. The user selects the button and can call a predefined action.

[0089] In some examples, the operating system provides a "desktop" graphical user interface that is displayed after turning on the mobile computing device 410, after activating the mobile computing device 410 from a sleep state, after "unlocking" the mobile computing device 410, or after receiving a user selection of the "home" button 418c. The desktop graphical user interface can display several graphical interface elements that, when selected, invoke corresponding applications. The invoked application can present a graphical interface that replaces the desktop graphical user interface until the application is terminated or hidden from view.

[0090] User input can affect the execution sequence of mobile computing device 410 operations. For example, a single-action user input (e.g., a single click of a touch screen, a swipe on a touch screen, contact with a button, or a combination of these occurring simultaneously) can invoke an operation that changes the display of a user interface. In the absence of user input, the user interface may not change at a particular time. For example, multi-touch user input utilizing display device 412 can invoke a map application to "zoom in" on a location, even though the mapping application may have zoomed in by default after a few seconds.

[0091] The desktop graphical interface may also display "widgets". A widget is one or more graphical interface elements that are associated with an executing application and that display content controlled by the executing application on the desktop. The widget's application may be launched when the mobile device is turned on. In addition, a widget may not focus the full display. Instead, a widget may only "own" a small portion of the desktop, displaying content within that portion of the desktop and receiving touch screen user input.

[0092] The mobile computing device 410 may include one or more location identification mechanisms. The location identification mechanism may include a collection of hardware and software that provides an estimate of the geographic location of the mobile device to the operating system and applications. The location identification mechanism may employ satellite-based positioning techniques, base station transmit antenna identification, multi-base station triangulation, Internet access point IP location determination, inferred identification of the user's location based on search engine queries, and user-provided location identification (e.g., by receiving a user's "check-in" to a location).

[0093] The mobile computing device 410 may include other applications, computing subsystems, and hardware. A call processing unit may receive an indication of an incoming telephone call and provide the user with the ability to answer the incoming telephone call. A media player may allow a user to listen to music or play movies stored in the local memory of the mobile computing device 410. The mobile device 410 may include a digital camera sensor and corresponding image and video capture and editing software. An internet browser may enable a user to view content from a web page by typing in an address corresponding to the web page or selecting a link to the web page.

[0094] Mobile computing device 410 may include an antenna to communicate information wirelessly with base station 440. Base station 440 may be one of many base stations in a collection of base stations (e.g., a mobile phone cellular network) that enables mobile computing device 410 to maintain communication with network 450 as the mobile computing device moves geographically. Computing device 410 may alternatively or additionally communicate with network 450 through a Wi-Fi router or a wired connection (e.g., ETHERNET, USB, or FIREWIRE). Computing device 410 may also communicate wirelessly with other computing devices using the Bluetooth protocol, or may employ an ad hoc wireless network.

[0095] A service provider operating a network of base stations may connect mobile computing device 410 to network 450 to enable communication between mobile computing device 410 and other computing systems providing service 460. Network 450 is shown as a single network, although service 460 may be provided over different networks (e.g., the service provider's internal network, the public switched telephone network, and the Internet). The service provider may operate a server system 452 that routes information packets and voice data between mobile computing device 410 and computing systems associated with service 460.

[0096] Network 450 may connect mobile computing device 410 to a public switched telephone network (PSTN) 462 to establish voice or fax communications between mobile computing device 410 and another computing device. For example, service provider server system 452 may receive an indication of an incoming call to mobile computing device 410 from PSTN 462. Conversely, mobile computing device 410 may send a communication to service provider server system 452 to initiate a telephone call using a telephone number associated with a device accessible through PSTN 462.

[0097] Network 450 may connect mobile computing device 410 to a Voice over Internet Protocol (VoIP) service 464 that routes voice communications through an IP network rather than the PSTN. For example, a user of mobile computing device 410 may invoke a VoIP application and use the program to initiate a call. Service provider server system 452 may forward voice data from the call to the VoIP service, which may route the call to the corresponding computing device over the Internet, potentially using the PSTN for the final leg of the connection.

[0098] Application store 466 may provide a user of mobile computing device 410 with the ability to browse a list of remotely stored applications that the user may download over network 450 and install on mobile computing device 410. Application store 466 may serve as a repository for applications developed by third-party application developers. Applications installed on mobile computing device 410 may communicate with a server system designated for that application over network 450. For example, a VoIP application may be downloaded from application store 466, enabling the user to communicate with VoIP service 464.

[0099] Mobile computing device 410 can access content on Internet 468 through network 450. For example, a user of mobile computing device 410 can invoke a web browser application that requests data from a remote computing device accessible at a specified universal resource location. In various examples, some of services 460 are accessible through the Internet.

[0100] The mobile computing device may communicate with a personal computer 470. For example, the personal computer 470 may be the home computer of the user of the mobile computing device 410. Thus, the user is able to stream media from his personal computer 470. The user may also view the file structure of his personal computer 470 and transfer selected documents between computerized devices.

[0101] Speech recognition service 472 can receive voice communication data recorded using microphone 422 of mobile computing device and translate the voice communication into corresponding text data. In some examples, the translated text is provided to a search engine as a web query, and the responsive search engine search results are transmitted to mobile computing device 410.

[0102] Mobile computing device 410 can communicate with social network 474. Social network can include many members, some of which have agreed to be related as acquaintances. Applications on mobile computing device 410 can access social network 474 to retrieve information based on the acquaintances of the user of the mobile computing device. For example, an "address book" application can retrieve the phone numbers of the user's acquaintances. In various examples, content can be delivered to mobile computing device 410 based on social network distance and connection relationships from the user to other members in the social network graph of the members. For example, advertisements and news article content can be selected for the user based on the level of interaction of members who are "close" to the user (e.g., members who are "friends" or "friends of friends") with such content.

[0103] Mobile computing device 410 may access a personal collection of contacts 476 over network 450. Each contact may identify an individual and include information about the individual (e.g., phone number, email address, and birthday). Because the contact collection is hosted remotely to mobile computing device 410, a user may access and maintain contacts 476 as a common contact collection across several devices.

[0104] Mobile computing device 410 can access cloud-based applications 478. Cloud computing provides applications (e.g., a word processor or email program) that are hosted remotely from mobile computing device 410 and can be accessed by device 410 using a web browser or dedicated programs. Example cloud-based applications include GOOGLE DOCS word processor and spreadsheet service, GOOGLE GMAIL webmail service, and PICASA picture manager.

[0105] Map service 480 may provide street maps, route planning information, and satellite imagery to mobile computing device 410. An example mapping service is GOOGLE MAPS. Map service 480 may also receive queries and return location-specific results. For example, mobile computing device 410 may send an estimated location of the mobile computing device and a user-entered query for "pizza places" to mapping service 480. Map service 480 may return a street map with "markers" superimposed on the map identifying the geographic locations of nearby "pizza places."

[0106] Turn-by-turn service 482 may provide turn-by-turn directions to a user-provided destination to mobile computing device 410. For example, turn-by-turn service 482 may stream to device 410 a street-level view of the device's estimated location, along with data for providing audio commands and overlaying arrows that direct the user of device 410 to the destination.

[0107] Mobile computing device 410 can request various forms of streaming media 484. For example, computing device 410 can request a stream for a pre-recorded video file, a live television program, or a live radio broadcast program. Example services that provide streaming media include YOUTUBE and PANDORA.

[0108] The microblogging service 486 may receive a user-input post that does not identify a recipient of the post from the mobile computing device 410. The microblogging service 486 may disseminate the post to other members of the microblogging service 486 who have agreed to subscribe to the user.

[0109] Search engine 488 may receive a user-entered text or spoken query from mobile computing device 410, determine a set of Internet-accessible documents responsive to the query, and provide information to device 410 to display a list of search results for responsive documents. In the example of receiving a spoken query, speech recognition service 472 may translate the received audio into a text query that is sent to the search engine.

[0110] These and other services can be implemented in a server system 490. A server system can be a combination of hardware and software that provides a service or a set of services. For example, a group of physically separate and networked computerized devices can operate together as a logical server system unit to handle the operations necessary to provide services to hundreds of computing devices. A server system is also referred to herein as a computing system.

[0111] In various implementations, an operation performed "in response to" or "as a result of" another operation (e.g., a determination or identification) is not performed if a previous operation was unsuccessful (e.g., if a determination was not performed). An operation performed "automatically" is an operation performed without user intervention (e.g., intervening user input). Features described in this document using conditional language may describe optional implementations. In some examples, "transmitting" from a first device to a second device includes the first device placing data into a network for receipt by the second device, but may not include the second device receiving the data. Conversely, "receiving" from a first device may include receiving data from a network, but may not include the first device transmitting the data.

[0112] The "determination" of the computing system may include the computing system requesting another device to perform the determination and provide the result to the computing system. In addition, the "display" or "presentation" of the computing system may include the computing system sending data for causing another device to display or present the referenced information.

[0113] Figure 55 is a block diagram of a computing device 500, 550 that can be used to implement the systems and methods described in this document as a client or a server or multiple servers. The computing device 500 is intended to represent various forms of digital computers, such as laptop computers, desktop computers, workstations, personal digital assistants, servers, blade servers, mainframes, and other suitable computers. The computing device 550 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular phones, smart phones, and other similar computing devices. The components shown here, their connections and relationships, and their functions are intended only as examples and are not intended to limit the implementations described and / or claimed in this document.

[0114] The computing device 500 includes a processor 502, a memory 504, a storage device 506, a high-speed interface 508 connected to the memory 504 and a high-speed expansion port 510, and a low-speed interface 512 connected to a low-speed expansion port 514 and the storage device 506. Each of the components 502, 504, 506, 508, 510 and 512 is interconnected using various buses and can be installed on a common motherboard or in other appropriate ways. The processor 502 can process instructions for execution within the computing device 500, including instructions stored in the memory 504 or on the storage device 506 to display graphical information of a GUI on an external input / output device (such as a display 516 coupled to the high-speed interface 508). In other implementations, multiple processors and / or multiple buses and multiple memories and memory types can be used appropriately. Moreover, multiple computing devices 500 can be connected, each of which provides a portion of the necessary operations (for example, as a server library, a blade server group or a multi-processor system).

[0115] The memory 504 stores information within the computing device 500. In one implementation, the memory 504 is one or more volatile memory units. In another implementation, the memory 504 is one or more non-volatile memory units. The memory 504 may also be another form of computer-readable medium, such as a magnetic disk or optical disk.

[0116] Storage device 506 can provide mass storage for computing device 500. In one implementation, storage device 506 can be or include a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid-state memory device, or an array of devices, including devices in a storage area network or other configuration. A computer program product can be tangibly contained in an information carrier. A computer program product can also include instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer or machine-readable medium, such as memory 504, storage device 506, or memory on processor 502.

[0117] The high-speed interface 508 manages bandwidth-intensive operations for the computing device 500, while the low-speed interface 512 manages less bandwidth-intensive operations. This functional allocation is only an example. In one implementation, the high-speed interface 508 is coupled to the memory 504, the display 516 (e.g., through a graphics processor or accelerator), and is coupled to a high-speed expansion port 510 that can accept various expansion cards (not shown). In this implementation, the low-speed interface 512 is coupled to the storage device 506 and the low-speed expansion port 514. The low-speed expansion port, which can include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), can be coupled to one or more input / output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or a router, for example, through a network adapter.

[0118] As shown, computing device 500 can be implemented in a variety of different forms. For example, it can be implemented as a standard server 520, or multiple times in a group of such servers. It can also be implemented as part of a rack server system 524. In addition, it can be implemented in a personal computer such as a laptop computer 522. Alternatively, components from computing device 500 can be combined with other components in a mobile device (not shown) such as computing device 550. Each such device can contain one or more computing devices 500, 550, and the entire system can be composed of multiple computing devices 500, 550 that communicate with each other.

[0119] The computing device 550 includes a processor 552, a memory 564, an input / output device such as a display 554, a communication interface 566, and a transceiver 568, among other components. The computing device 550 may also be provided with a storage device such as a microdrive or other device to provide additional storage. Each of the computing device 550, the processor 552, the memory 564, the display 554, the communication interface 566, and the transceiver 568 are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other suitable ways.

[0120] The processor 552 can execute instructions within the computing device 550, including instructions stored in the memory 564. The processor can be implemented as a chipset including individual and multiple analog and digital processor chips. In addition, the processor can be implemented using any of a variety of architectures. For example, the processor can be a CISC (complex instruction set computer) processor, a RISC (reduced instruction set computer) processor, or a MISC (minimum instruction set computer) processor. The processor can provide, for example, coordination of other components of the computing device 550, such as a user interface, applications run by the computing device 550, and control of wireless communications performed by the computing device 550.

[0121] The processor 552 can communicate with the user through the control interface 558 and the display interface 556 coupled to the display 554. The display 554 can be, for example, a TFT (thin film transistor liquid crystal display) display or an OLED (organic light emitting diode) display, or other appropriate display technology. The display interface 556 may include appropriate circuits for driving the display 554 to present graphics and other information to the user. The control interface 558 can receive commands from the user and convert them to submit to the processor 552. In addition, the external interface 562 can be used to communicate with the processor 552 so as to implement near-field communication between the computing device 550 and other devices. The external interface 562 can provide wired communication in some implementations, or wireless communication in other implementations, and multiple interfaces can also be used.

[0122] The memory 564 stores information within the computing device 550. The memory 564 may be implemented as one or more computer-readable media, one or more volatile memory units, or one or more non-volatile memory units. An expansion memory 574 may also be provided and connected to the computing device 550 via an expansion interface 572, which may include, for example, a SIMM (single in-line memory module) card interface. Such an expansion memory 574 may provide additional storage space for the computing device 550, or may also store applications or other information for the computing device 550. Specifically, the expansion memory 574 may include instructions for executing or supplementing the above-mentioned processes, and may also include security information. Therefore, for example, the expansion memory 574 may be provided as a security module for the computing device 550, and may be programmed with instructions that allow the computing device 550 to be used safely. In addition, security applications and additional information may be provided via a SIMM card, such as placing identification information on a SIMM card in a manner that cannot be hacked.

[0123] The memory may include, for example, flash memory and / or NVRAM memory, as described below. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product includes instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer or machine readable medium, such as the memory 564, the expansion memory 574, or a memory on the processor 552 that can be received, for example, via the transceiver 568 or the external interface 562.

[0124] The computing device 550 can communicate wirelessly via a communication interface 566, which may include digital signal processing circuitry where necessary. The communication interface 566 may provide communications in various modes or protocols, such as GSM voice calls, SMS, EMS or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, etc. Such communications may occur, for example, via a radio frequency transceiver 568. In addition, short-range communications may be performed, such as using Bluetooth, WiFi, or other such transceivers (not shown). In addition, a GPS (global positioning system) receiver module 570 may provide additional navigation and location-related wireless data to the computing device 550, which may be used appropriately by applications running on the computing device 550.

[0125] Computing device 550 may also communicate audibly using audio codec 560, which may receive spoken information from a user and convert it into usable digital information. Audio codec 560 may also generate audible sounds for the user, such as through a speaker in a handset of computing device 550, for example. Such sounds may include sounds from voice phone calls, may include recorded sounds (e.g., voice messages, music files, etc.), and may also include sounds generated by applications operating on computing device 550.

[0126] As shown, computing device 550 can be implemented in many different forms. For example, it can be implemented as a cellular phone 580. It can also be implemented as part of a smart phone 582, a personal digital assistant, or other similar mobile devices.

[0127] In addition, computing device 500 or 550 may include a universal serial bus (USB) flash drive. A USB flash drive may store an operating system and other applications. A USB flash drive may include input / output components such as a wireless transmitter or a USB connector that may be plugged into a USB port of another computing device.

[0128] Various implementations of the systems and techniques described herein can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and / or combinations thereof. These various implementations can include implementations in one or more computer programs executable and / or interpretable on a programmable system comprising at least one programmable processor, which can be special purpose or general purpose, coupled to receive data and instructions from a storage system and to send data and instructions to the storage system.

[0129] These computer programs (also referred to as programs, software applications, or code) include machine instructions for a programmable processor and may be implemented in high-level procedural and / or object-oriented programming languages ​​and / or assembly / machine languages. As used herein, the terms "machine-readable medium," "computer-readable medium," refer to any computer program product, apparatus, and / or device (e.g., disk, optical disk, memory, programmable logic device (PLD)) for providing machine instructions and / or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal for providing machine instructions and / or data to a programmable processor.

[0130] To provide interaction with a user, the systems and techniques described herein can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user, and a keyboard and pointing device (e.g., a mouse or trackball) through which the user can provide input to the computer. Other kinds of devices can also be used to provide interaction with the user; for example, the feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including voice, speech, or tactile input.

[0131] The systems and techniques described herein may be implemented in a computing system that includes a back-end component (e.g., as a data server), or includes a middleware component (e.g., an application server), or includes a front-end component (e.g., a client computer with a graphical user interface or a web browser through which a user can interact with an implementation of the systems and techniques described herein), or any combination of such back-end, middleware, or front-end components. The components of the system may be interconnected by any form or medium of digital data communication (e.g., a communications network). Examples of communications networks include a local area network ("LAN"), a wide area network ("WAN"), a peer-to-peer network (with ad hoc or static members), a grid computing infrastructure, and the Internet.

[0132] A computing system may include clients and servers. Clients and servers are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.

[0133] Although some implementations have been described in detail above, other modifications are possible. In addition, other mechanisms for executing the systems and methods described herein may be used. In addition, the logic flows depicted in the accompanying drawings do not require the particular order or sequential order shown to achieve the desired results. Other steps may be provided, or steps may be removed from the described flow, and other components may be added to the described system, or other components may be removed from the described system. Therefore, other implementations are within the scope of the appended claims.

Claims

1. A computer-implemented method for transmitting audio playback from a mobile computing device to a peripheral device, the method comprising: monitoring, by the mobile computing device, a wireless communication channel; receiving, by the mobile computing device, a transmission from the peripheral device over the wireless communication channel using a first communication protocol, the transmission identifying the peripheral device, receipt of the transmission indicating that the mobile computing device is within a first proximity zone with the peripheral device; determining, by the mobile computing device based on the wireless communication channel, whether the mobile computing device is within a second proximity zone with the peripheral device, the second proximity zone being smaller than the first proximity zone; in response to determining that the mobile computing device is within the second zone of proximity, modifying, by the mobile computing device, a display of the mobile computing device to visually indicate that the mobile computing device is within the second zone of proximity to the peripheral device; in response to receiving data from the peripheral device using a second communication protocol having a shorter range than the first communication protocol, determining, by the mobile computing device, that the mobile computing device is within a third zone of proximity to the peripheral device, the third zone of proximity being smaller than the second zone of proximity; as well as In response to determining that the mobile computing device is within the third zone of proximity to the peripheral device, transmitting, by the mobile computing device, audio playback from the mobile computing device to the peripheral device.

2. The computer-implemented method of claim 1 , wherein: Determining that the mobile computing device is within the second proximity zone of the peripheral device includes measuring a signal strength of the transmission from the peripheral device.

3. A computer-implemented method according to any one of claims 1 to 2, wherein: Modifying the display of the mobile computing device to visually indicate that the mobile computing device is within the second zone of proximity to the peripheral device includes presenting an indication of the type of the peripheral device on the display of the mobile computing device.

4. The computer-implemented method of claim 3, wherein: The indication of the type of the peripheral device is presented without receiving user input after the mobile computing device receives the transmission from the peripheral device.

5. The computer-implemented method according to any one of claims 1 to 2, wherein: Transmitting the audio playback from the mobile computing device to the peripheral device includes sending, by the mobile computing device, a signal specifying an audio playback request to the peripheral device.

6. The computer-implemented method of claim 5, wherein: The signal is sent using the second communication protocol.

7. The computer-implemented method according to any one of claims 1 to 2, further comprising: User input is received by the mobile computing device that interacts with a control that modifies a functionality of the peripheral device.

8. The computer-implemented method of claim 7, further comprising: A signal is sent by the mobile computing device to the peripheral device, the signal specifying the modification to the functionality specified by the user input interacting with the control.

9. The computer-implemented method of any one of claims 1 to 2, wherein: The mobile computing device initiates a near field communication transmission for receipt by the peripheral device in response to the mobile computing device either: (i) receiving the transmission from the peripheral device using the first communication protocol, or (ii) determining that the second distance value satisfies a threshold.

10. A mobile computing device comprising: two or more wireless communication interfaces, wherein a first wireless communication interface from the two or more wireless communication interfaces operates according to a first wireless communication protocol, and wherein a second wireless communication interface from the two or more wireless communication interfaces operates according to a second wireless communication protocol; a display for displaying a graphical user interface; one or more processors; and One or more computer-readable devices storing instructions, wherein the instructions, when executed by the one or more processors, cause the one or more processors to: monitoring a wireless communication channel using the first wireless communication interface; receiving a transmission from a peripheral device using the wireless communication channel, the transmission identifying the peripheral device, receipt of the transmission indicating that the mobile computing device is within a first proximity zone with the peripheral device; determining whether the mobile computing device is within a second proximity zone with the peripheral device based on the wireless communication channel, the second proximity zone being smaller than the first proximity zone; in response to determining that the mobile computing device is within the second zone of proximity, modifying the graphical user interface to visually indicate that the mobile computing device is within the second zone of proximity to the peripheral device; In response to receiving data from the peripheral device using a second communication protocol having a shorter range than the first communication protocol, determining that the mobile computing device is within a third zone of proximity to the peripheral device, the third zone of proximity being smaller than the second zone of proximity; and In response to determining that the mobile computing device is within the third zone of proximity to the peripheral device, audio playback is transmitted from the mobile computing device to the peripheral device.

11. A mobile computing device according to claim 10, comprising means for performing a method according to any one of claims 2 to 9.

12. A computer program product comprising instructions which, when executed, cause at least one processor of a device to perform the method according to any one of claims 1 to 9.