Nearby device invitation for electronic devices
Nearby device invitations using Bluetooth or NFC allow secure joint control of media output among proximate devices, addressing synchronization challenges in scenarios where not all devices share server subscriptions, ensuring privacy and enabling synchronized media experiences.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- APPLE INC
- Filing Date
- 2024-05-28
- Publication Date
- 2026-06-23
AI Technical Summary
Existing electronic devices face challenges in synchronizing media content and joint control when not all devices are subscribed to the same server, particularly in scenarios where physical proximity indicates trust and shared media output is desired.
Electronic devices offer invitations to nearby devices for joint sessions using short-range wireless communication protocols like Bluetooth or NFC, allowing control of media output without revealing user identification, even if the nearby devices lack server subscriptions.
Enables secure and privacy-protected joint control of media content among proximate devices, facilitating synchronized media experiences without requiring all devices to have access to the same media services.
Smart Images

Figure 2026520497000001_ABST
Abstract
Description
Technical Field
[0001] (Cross - Reference to Related Applications) This application claims the benefit of priority of U.S. Provisional Patent Application No. 63 / 470,816, filed on June 2, 2023, entitled "NEARBY DEVICE INVITATIONS FOR ELECTRONIC DEVICES", the disclosure of which is incorporated herein in its entirety.
[0002] Technical Field This specification generally relates to electronic devices, for example, including nearby device invitations for electronic devices.
Background Art
[0003] Electronic devices often include applications for outputting media content. The media content can be provided by a server that provides a media service to which the electronic device subscribes. In some systems, when two electronic devices subscribe to the same service, the server can provide synchronized media content to both electronic devices for synchronized output.
Brief Description of the Drawings
[0004] The specific features of the technology of this application are set forth in the appended claims. However, for purposes of illustration, some embodiments of the technology of this application are shown in the following figures.
[0005] [Figure 1] An exemplary system architecture is shown, including various electronic devices that can implement the system of this application according to one or more implementations.
[0006] [Figure 2] A schematic diagram showing an electronic device that invites another electronic device to control a joint session according to an implementation of the technology of this application.
[0007] [Figure 3] This is a schematic diagram showing an electronic device that controls content output by another electronic device via a separate media output device, relating to an implementation of the technology of the present invention.
[0008] [Figure 4] An example of an electronic device that provides an option to invite a nearby electronic device to control a joint session, relating to an implementation of the technology of the present invention, is shown.
[0009] [Figure 5] An example of an electronic device for storing reliable contact information, relating to an implementation of the technology of this application, is shown.
[0010] [Figure 6] An example of a messaging operation that can indicate a reliable contact person, relating to an implementation of the technology of this application, is shown.
[0011] [Figure 7] An example of a call operation that can indicate a reliable contact person, relating to an implementation of the technology of this application, is shown.
[0012] [Figure 8] This diagram shows a schematic representation of a media output device that displays attribute information of content being output by a media output device, relating to an implementation of the technology of the present invention.
[0013] [Figure 9] This diagram shows an exemplary process for providing a nearby device invitation to a joint session, relating to an implementation of the technology of the present invention.
[0014] [Figure 10] This diagram shows an exemplary process for accepting a nearby device invitation to a joint session, relating to an implementation of the technology of the present invention.
[0015] [Figure 11]A flowchart for providing joint control of a joint session to another electronic device, according to an implementation form of the technology of the present application, is shown.
[0016] [Figure 12] A flowchart of an exemplary process for controlling a joint session associated with another electronic device, according to an implementation form of the technology of the present application, is shown.
[0017] [Figure 13] An electronic system capable of implementing one or more implementation forms of the technology of the present application is shown.
Embodiments for Carrying Out the Invention
[0018] The detailed description set forth below is intended as a description of various configurations of the technology of the present application and is not intended to represent the only configuration in which the technology of the present application can be practiced. The accompanying drawings are incorporated herein and constitute a part of the embodiments for carrying out the invention. The embodiments for carrying out the invention include specific details to provide a complete understanding of the technology of the present application. However, the technology of the present application is not limited to the specific details shown herein and can be implemented using one or more other implementation forms. In one or more implementation forms, structures and components are shown in block diagram form to avoid obscuring the concept of the technology of the present application.
[0019] Electronic devices often include applications for outputting media content, editing documents, displaying maps and / or instructions, and / or sharing content. In some systems, multiple electronic devices can each subscribe to the same services provided by a server, and the server can synchronize data at each of the multiple electronic devices so that each of the multiple electronic devices can display or otherwise output the same synchronized content. For example, multiple electronic devices can synchronously play the same movie or the same song, respectively, as adjusted by a media content server. This can enable users of electronic devices in remote locations to share a media experience. As another example, multiple electronic devices can jointly edit a common electronic document stored on a server or locally on one or more of the multiple electronic devices, using updates to the document at each device adjusted by the server.
[0020] However, in some scenarios, one or more of the multiple devices for which joint control is desired may not have a subscription to the services provided by a server that can adjust data for the multiple devices. In some scenarios, multiple devices may be physically proximate to each other, and individual content output by the multiple devices may not be desirable. For example, multiple users of multiple devices may desire to jointly listen to music or a podcast or jointly view video content on a common media output device such as a speaker or a television (e.g., not connected to a server or subscribed to a service). In these and other scenarios, device proximity can be used as an indication of trust to facilitate joint control by the devices.
[0021] Aspects of the present disclosure may provide invitations to nearby or near electronic devices, such as invitations to a joint session (e.g., nearby device invitations, or nearby invitations). Aspects of the present technology may provide an electronic device with the ability to share control of a joint session with other nearby devices, such as for control of media output from the device, or for control of editing, contributing to, and / or modifying data (e.g., a joint document) by multiple users from multiple devices. In this way, the present technology can facilitate the control of the output of a media output device (e.g., speakers, televisions, etc.) for a group of people listening to audio content through speakers in a vehicle, a group of people listening to audio content through speakers in a building (e.g., at a party), or a group of people listening to audio content through portable wireless speakers (e.g., on a beach, in a park, on a boat, at a campsite, etc.).
[0022] In one or more implementations, the first device may offer an invitation directly to one or more nearby devices (e.g., via Bluetooth or other short-range wireless communication protocols such as the Near Field Communication (NFC) protocol) to control the media content being output by the first device, such as via a media output device separate from the first device (e.g., a portable Bluetooth speaker, car speaker, home speaker, etc.). One or more of the nearby devices may accept the invitation and then control the media content being output by the first device over the network, such as via a server managing a joint session. In various implementations, the invitation may be offered wirelessly to a nearby trusted contact via a scannable code and / or in response to a user request to invite all nearby devices. The invitation may be offered without revealing the user identification information of the first device. The invitation may be offered to and accepted by a device regardless of whether the device has access to a subscription to the media content.
[0023] Figure 1 shows an exemplary system architecture 100, including various electronic devices that can implement the system of the present application, relating to one or more implementation forms. However, not all of the depicted components are to be used in all implementation forms, and one or more implementation forms may include additional or different components than those shown in the figure. Variations in the configuration and type of components can be made without departing from the spirit or scope of the claims set forth herein. Additional, different, or fewer components may be provided.
[0024] The system architecture 100 includes a media output device 150, an electronic device 104 (e.g., a handheld electronic device such as a smartphone or tablet), an electronic device 110, an electronic device 115, and a server 120, all of which are communicably coupled by a network 106 (e.g., a local area network or a wide area network). For illustrative purposes, the system architecture 100 is shown in Figure 1 as including the media output device 150, the electronic device 104, the electronic device 110, the electronic device 115, and the server 120. However, the system architecture 100 may include any number of electronic devices and / or audio devices, and any number of servers, or a data center including multiple servers.
[0025] The media output device 150 may be implemented as an audio output device such as a speaker (e.g., a wireless speaker such as a Bluetooth speaker, a smart speaker, a portable speaker, or a speaker mounted on a fixed or movable structure), a set-top box, or a television, or as any other device capable of outputting audio, video, and / or other types of media. As shown in the figure, the media output device 150 may include one or more speakers 152. In one or more implementations, the media output device 150 may include or be associated with a display such as a display 155. The display 155 may be integrally formed with the media output device 150 and implemented in a physically separate enclosure from the media output device (e.g., mounted within the enclosure or other structure of the media output device). In one or more implementations, the media output device 150 may be implemented as a larger device or system, such as a vehicle (e.g., a car, bus, airplane, boat, helicopter, or any other land, air, or water vehicle) or a building (e.g., a house, office, hotel, etc.), or may be incorporated into such a system.
[0026] Although not shown in Figure 1, in one or more implementations, the media output device 150 may include processing circuits (e.g., including memory and / or one or more processors such as a central processing unit and / or one or more digital signal processors (DSPs)) and communication circuits (e.g., one or more antennas) for receiving and / or processing audio content from one or more of the electronic devices 104, 110, 115, and / or the server 120. The processing circuits of the media output device 150 or another device may operate one or more speakers, such as speaker 152, to generate sound.
[0027] The media output device 150 may include a communication circuit for communication with electronic device 104, electronic device 110, electronic device 115, and / or server 120 (for example, directly or via network 106), the communication circuit including one or more radio interfaces such as a WLAN radio, a cellular radio, a Bluetooth radio, a Zigbee radio, a Near Field Communication (NFC) radio, and / or other radios. The electronic devices 104, electronic device 110, electronic device 115, and / or server 120 may include a communication circuit for communication with the media output device 150 and / or with other electronic devices 104, electronic device 110, electronic device 115, and / or server 120 (for example, directly or via network 106), the communication circuit including one or more radio interfaces such as a WLAN radio, a cellular radio, a Bluetooth radio, a Zigbee radio, a Near Field Communication (NFC) radio, and / or other radios. The media output device may include a power source such as a battery and / or a wired or wireless power supply.
[0028] As shown in the figure, the media output device 150 may communicate directly with electronic devices such as the electronic device 104 (for example, to receive audio content for output by the speaker(s) 152 and / or display content for display by the display 155). In one or more implementations, the media output device 150 may be configured to communicate directly with electronic devices using a short-range communication protocol (e.g., Bluetooth, Zigbee, or Near Field Communication (NFC) protocol) and may not be able to communicate over a wider area network such as the network 106.
[0029] As shown in the figure, electronic device 104 may communicate directly with one or more other electronic devices, such as electronic device 110, and / or via a network such as network 106, using a short-range communication protocol such as Bluetooth, Zigbee, or Near Field Communication (NFC) protocol. Electronic device 104 may be, for example, a portable computing device such as a smartphone or laptop computer, a peripheral device (e.g., a digital camera, headphones, another audio device, or another media output device), a wearable device such as a tablet device, a smartwatch, or a smart band, or any other suitable device including processing and / or communication circuits for providing audio content to a media output device (one or more) 150. In Figure 1, electronic device 104 is depicted as a mobile smartphone device as an example. In one or more implementations, electronic device 104 and / or media output device 150 may be, and / or include all or part of, the electronic system described below with respect to Figure 13.
[0030] The electronic device 115 may be, for example, a desktop computer, a portable computing device such as a laptop computer, a smartphone, a peripheral device (e.g., a digital camera, headphones, another audio device, or another media output device), a tablet device, a watch, a band, or other wearable device. In Figure 1, the electronic device 115 is depicted as a desktop computer as an example. The electronic device 115 may also be, and / or include all or part of, the electronic system described below with respect to Figure 13.
[0031] The electronic device 110 may be, for example, a portable computing device such as a desktop computer or laptop computer, a smartphone, a peripheral device (e.g., a digital camera, headphones, another audio device, or another media output device), a tablet device, a wearable device such as a watch, or a band. In Figure 1, the electronic device 115 is depicted as a smartphone as an example. The electronic device 110 may also be, and / or include all or part of, the electronic system described below with respect to Figure 13.
[0032] Server 120 can form all or part of a network of computers or a group of servers 130, such as a cloud computing implementation or a data center implementation. For example, Server 120 includes specific hardware (e.g., a processor, a graphics processor, and other dedicated or custom processors) for storing data and software and rendering, generating, and / or distributing content such as graphics, images, video, audio, and multimedia files. In one implementation, Server 120 may function as a cloud storage server.
[0033] In one or more implementations, server 130 may include servers operated by different entities. For example, server 130 may include a media content server that provides media content (e.g., music, podcasts, radio content, movies, and / or other content) to electronic devices such as electronic device 104, electronic device 110, and / or electronic device 115 via network 106. In one exemplary use case, electronic device 104 may retrieve media content from the media content server via network 106 and provide the media content directly to media output device 150. In another exemplary use case, electronic device 104 may provide media content directly to media output device 150 from local storage in electronic device 104 (e.g., a media library). As yet another example, server 130 may include a server that provides identification information and / or authentication services, and / or a server that manages collaborative sessions between multiple electronic devices (e.g., collaborative sessions for media content output, document editing, electronic conferencing, mapping and instruction, car rendering, vehicle management, etc.).
[0034] Figure 2 is a schematic diagram illustrating various modes and / or operations that may be performed to provide an invitation (e.g., to a joint session) to another electronic device according to aspects of the present disclosure. As shown in Figure 2, electronic device 104 can directly provide an invitation to electronic device 110. For example, the invitation may be an invitation to join and / or control a joint session with electronic device 104. For example, the invitation may be an invitation to control content being output by electronic device 104 via media output device 150. For example, electronic device 104 may provide audio content to media output device 150 for output by speaker 152 of media output device 150.
[0035] In one or more implementations, an invitation may be provided from electronic device 110 to electronic device 104 when electronic device 104 is within proximity range of electronic device 110 (e.g., within the range of a short-range communication protocol). In one example, electronic device 104 may detect the presence of electronic device 110 in proximity to electronic device 110, determine that electronic device 104 is associated with a trusted contact stored in electronic device 110, and provide an invitation to electronic device 104 accordingly. In another example, electronic device 104 may periodically provide encrypted invitations to participate in a joint session in which encrypted invitations can only be decrypted by trusted contacts of electronic device 104. In yet another example, a user of electronic device 104 may provide user input to electronic device 104, which includes a request to invite all nearby devices to participate in a joint session. In this example, the invitation may be an unencrypted invitation that can be accepted by any device within the range of the communication protocol in which the invitation is broadcast.
[0036] As shown in Figure 2, upon receiving an invitation, electronic device 110 may provide electronic device 104 with a request to join the joint session. As shown in Figure 2, the request may be provided directly from electronic device 110 to electronic device 104 (for example, via short-range wireless communication such as Bluetooth communication) or via a network, such as through session server 200. For example, session server 200 may be one of the implementations of server 130 in Figure 1. As shown, electronic device 110 may provide the request to session server 200, and session server 200 may forward the request to electronic device 104. In one or more implementations, upon receiving a request from electronic device 110, electronic device 104 may provide permission for electronic device 110 to join the joint session and / or to control the joint session. Permission may be provided directly from electronic device 104 to electronic device 110 or via session server 200. For example, controlling a shared session may include controlling the output of electronic device 104 (for example, including controlling the content being output by electronic device 104, such as via media output device 150). Permission may be provided from electronic device 104 to session server 200. Session server 200 may provide permission indication to electronic device 110.
[0037] In one or more implementations, electronic device 104 may provide an invitation and / or permission for electronic device 110 to join a joint session, partly based on the proximity of electronic device 110 to electronic device 104 and / or media output device 150 (for example, based on a separate determination that electronic device 110 is within proximity range of electronic device 104 and / or media output device 150). In various use cases, proximity range may extend only a few feet from electronic device 104 and / or media output device 150 (for example, a few feet, such as roughly the size of the inside of a vehicle, or tens or hundreds of feet, such as the size of the detectable range of a communication protocol or the audible range of an audio output), or only a few inches or centimeters from electronic device 104 and / or media output device 150. In one example, electronic device 104 may determine that electronic device 110 is in proximity to electronic device 104 by directly exchanging invitations and / or requests using a short-range communication protocol. In another example, electronic device 104 and / or media output device 150 can determine that electronic device 110 is in proximity to electronic device 104 and / or media output device 150 (for example, due to the user of electronic device 110 positioning electronic device 110 above or above electronic device 104 and / or media output device 150) by broadcasting a first advertisement that does not contain information requesting participation in a joint session before broadcasting an invitation, and by determining that electronic device 110 is within proximity to electronic device 104 and / or media output device 150 (for example, within a few inches or centimeters) based on the signal strength associated with the first advertisement (for example, the signal strength of the response to the first advertisement from electronic device 110, or the signal strength determined based on a measurable change in the characteristics of the antennas of electronic device 104 and / or media output device 150 due to the presence of electronic device 110).This confirmation that a device is within a few inches or centimeters of the electronic device 104 and / or the media output device 150 may be used in use cases where the media output device 150 is a portable speaker or smart speaker in a home or party (for example, to prevent an invitation from being sent to a neighbor's device or to someone not attending the party). In various implementations, the size of the proximity range for triggering an invitation or permission to join may be set by the user of the electronic device 104 and / or the media output device 150, or may be automatically determined based on the type of the media output device 150, for example (for example, the proximity range may be a few feet if the media output speaker 150 is installed in a vehicle, or a few inches or centimeters if the media output device 150 is a portable speaker or smart speaker).
[0038] In another example, electronic device 110 may provide proximity confirmation information to electronic device 104. For example, electronic device 110 may obtain a recording of the acoustic environment of electronic device 110 (e.g., a recording of a few seconds, one second, or less than one second) (e.g., including a recording of audio content being output by electronic device 104 via media output device 150) (e.g., using the microphone of electronic device 110). Electronic device 110 may hash, encrypt, and / or otherwise encode the recorded audio and provide the hashed, encrypted, and / or otherwise encoded audio to electronic device 104.
[0039] Electronic device 104 may compare hashed, encrypted, and / or otherwise encoded audio received from electronic device 110 with hashed, encrypted, and / or otherwise encoded audio acquired locally by electronic device 104 (for example, using one or more microphones of electronic device 104), and if the hashed, encrypted, and / or otherwise encoded audio received from electronic device 110 matches the hashed, encrypted, and / or otherwise encoded audio acquired locally by electronic device 104, electronic device 104 may determine that it is in proximity to electronic device 110 and / or media output device 150. For example, in this way, electronic device 104 (and / or electronic device 110) can determine that electronic device 104 and electronic device 110 are in the same acoustic environment (for example, within the audible range of each other and / or media output devices). For example, this type of audio-based proximity verification can be used to ensure that the electronic device 110 is close enough to the media output device 150 for the user of the electronic device 110 to listen to the audio content being output by the media output device 150.
[0040] In one or more implementations, the invitation may provide information that can be used by electronic device 110 to request participation in a joint session, but does not include identification information of electronic device 104 or the user of electronic device 104. For example, in a use case where the invitation is an encrypted invitation, the invitation may be encrypted by electronic device 104 using a key previously configured between electronic device 104 and electronic device 110. In this way, when electronic device 110 receives an encrypted invitation, electronic device 110 can decrypt the invitation using the previously configured key. In this example, electronic device 110 may store multiple keys corresponding to multiple contacts.
[0041] In one or more implementations, the electronic device 110 may perform an identification operation using the keys of multiple contacts to identify one of the keys corresponding to a particular trusted contact. For example, an encrypted invitation may include an unencrypted value such as a random number or short-range communication address of the electronic device 104 (which may be periodically updated to prevent tracking of the electronic device 104), and an unencrypted hash of a value calculated using the key corresponding to the electronic device 104. The electronic device 110 can hash the value having each of the keys for each of the multiple contacts stored locally on the electronic device until the hash of the value having a particular key matches the hash value in the invitation. When the electronic device 110 determines that one of the keys, when hashed together with the value in the encrypted invitation, matches the hash of the value and key in the encrypted invitation, the electronic device 110 can identify the contact corresponding to the electronic device 104 as the contact corresponding to that key. In one or more implementations, the identified key may be used to decrypt a payload contained in the encrypted invitation. For example, the payload may include a session identifier for a co-session associated with the electronic device 104.
[0042] Using the identified key, electronic device 110 can also retrieve contact information previously stored in electronic device 104 for electronic device 110. In one or more implementations, electronic device 110 may include its contact information in the request provided to session server 200. Session server 200 can then use the contact information provided by electronic device 104 to forward the request (e.g., along with a session identifier) to electronic device 110. In this way, user privacy for electronic device 104 can be protected while still providing the ability to invite nearby devices to participate in and / or control the joint session.
[0043] In another exemplary use case, where a user of electronic device 104 requests that an invitation to a joint session be sent to all nearby devices (e.g., all nearby devices within proximity), the invitation may be an unencrypted invitation. In this exemplary use case, electronic device 104 may include an obfuscated identifier of the electronic device in the invitation (e.g., along with the session identifier of the joint session). For example, the obfuscated identifier may be obtained by electronic device 104 specifically for the joint session, and the obfuscated identifier may not contain information identifying the user of electronic device 104. When electronic device 110 receives an unencrypted invitation containing an obfuscated identifier, electronic device 110 may include the obfuscated identifier in its request to the session server 200. In this way, the invitation contains information for requesting to join the joint session (e.g., the obfuscated identifier of the user of the electronic device and / or the identifier of the joint session). In an increasing number of implementations, the obfuscated identifier may have been previously configured between the electronic device 104 and the session server 200, and the session server 200 may have previously stored the obfuscated identifier in relation to the contact information of the electronic device 104.
[0044] When session server 200 receives a request from electronic device 110 that includes an obfuscated identifier, session server can use the obfuscated identifier to retrieve contact information for electronic device 104 and use the retrieved contact information to forward the request to electronic device 104. In this way, the privacy of the user of electronic device 104 can be protected from being revealed to electronic device 110, while still allowing electronic device 104 to invite electronic device 104 to join a joint session associated with electronic device 110. As will be described in more detail below, the invitation may be provided to electronic device 110 in other ways, such as by displaying a scannable code (e.g., a barcode, QR code, etc.) using the display of electronic device 110 and having electronic device 104 scan the scannable code. For example, the scannable code may include an encoded obfuscated identifier for electronic device 104, which may be used by electronic device 110 to generate requests and / or control commands for session server 200.
[0045] Figure 3 is a schematic diagram illustrating various modes and / or operations that may be performed by the electronic device 110 to control a joint session with the electronic device 104 according to embodiments of this disclosure. For example, after the electronic device 110 is permitted to participate in a joint session (as shown in Figure 2), the electronic device 110 may provide commands (e.g., control commands) to the electronic device 104. As shown, the electronic device 110 may provide commands to the electronic device 104 via the session server 200 (e.g., via the network 106). In one or more other implementations, the electronic device 110 may provide commands directly to the electronic device 104. As shown, the commands may be control commands for modifying content being output by the electronic device 104 (e.g., via the media output device 150). For example, control commands may be generated by electronic device 104 in response to user input to electronic device 110 (e.g., from the user of electronic device 104 via the touch surface of electronic device 110, mouse, buttons, switches, touchscreen, camera, sensor, and / or microphone), and the user input may include user input for modifying the content being output by electronic device 104.
[0046] As shown in the figure, in response to a command from electronic device 110, electronic device 104 can modify the content provided to media output device 150 for output (for example, by the speaker 152 and / or display 155 of media output device 150). For example, modifying the content output by electronic device 104 via media output device 150 may include selecting a new song, skipping to the next or previous song, scrolling to a new playback time for a song, podcast, movie, show, or other media content, stopping playback, starting playback, pausing playback, or adding or removing a song from a playlist. Another example of modifying the content output by electronic device 104 via media output device 150 may include controlling a video conferencing session to which audio and / or video is being output by the media output device. Another example of modifying the content output by electronic device 104 via media output device 150 may include inputting or modifying input to a mapping application for providing visual and / or audible instructions using media output device 150. In one or more other implementations, in response to a command from electronic device 110, electronic device 104 may directly modify the content being output by electronic device 104 (for example, by the display 300 of electronic device 104). For example, modifying the content being output directly by electronic device 104 may include modifying a document or other data displayed by electronic device 104.
[0047] In one or more implementations, when a command is received by the electronic device 104, the electronic device 104 may process the command as if it were received as direct user input to the electronic device 104 (for example, from the user of the electronic device 104 via the touch surface, mouse, buttons, switches, touchscreen, camera, sensor, and / or microphone of the electronic device 104). For example, after being permitted to join a joint session, a user interface (UI) containing substantially the same information and / or control elements as those displayed by the UI of the electronic device 110 to control the output (for example, to control the output of content by the media output device 150) may be displayed on the display 302 of the electronic device 104. For example, the electronic device 104 may have installed applications (e.g., media player applications, data editing applications, conferencing applications, mapping applications, etc.) to control the output of the electronic device 104 (for example, directly or via the media output device 150).
[0048] In some use cases, the electronic device 110 may also have an application installed, and once permitted to participate in a shared session, the session server 200 may provide information to populate the UI of the application on the electronic device 104 in order to display substantially the same information as that displayed by the UI of the application on the electronic device 110. In this way, the electronic device 110 can present content information about the content being output by the electronic device 104 and operate the same control elements provided by the electronic device 104 (e.g., play button, stop button, pause button, volume control, scrub bar, text input field, search field, playlist creation controller, playlist modification controller, etc.). In this way, the user of the electronic device 110 can control the output of the electronic device 104 (e.g., via the media output device 150) by operating the control elements of the application on the electronic device 110.
[0049] In one or more other use cases, the electronic device 110 may not have the application installed and may have access to a web-based version of the user interface (hosted, for example, by a session server 200 or a content server 202). For example, the web-based version of the user interface may be populated by the session server and / or content server 202 to display substantially the same information and / or control elements as those displayed by the application's user interface on the electronic device 104. In one or more other use cases, the electronic device 110 may not have the application installed and may immediately obtain a reduced version of the application (e.g., a clip of the application) that can be run on the electronic device 110 for a collaborative session (e.g., without installing the reduced version of the application on the electronic device 110). For example, the reduced version of the application may display a user interface that can be populated by the session server and / or content server 202 to display substantially the same information and / or control elements as those displayed by the application's user interface on the electronic device 104.
[0050] In one or more implementations, the electronic device 104 may have access to a subscription to a service provided by the content server 202. In the examples of Figures 2 and 3, the electronic device 110, invited by the electronic device 104 to control the output of the electronic device 104, may or may not have access to a subscription to a service provided by the content server 202. However, even in use cases where the electronic device 110 does not have access to a subscription to a service provided by the content server 202, the electronic device 110 can participate in a joint session with the electronic device 104 and control the output of the electronic device 104 generated using a subscription to which the electronic device 104 has access, using the operation described in relation to Figures 2 and 3.
[0051] As described herein in relation to the examples in Figures 2 and 3, invitations from the electronic device 104 can be provided in a variety of ways. For example, Figure 4 shows exemplary options that may be provided to the user of the electronic device 104 to invite other devices to join a joint session. As shown in the figure, the electronic device 104 may provide a user-selectable option 400 for allowing trusted contacts to join a joint session. If selected, the user-selectable option 400 may cause the electronic device 104 to periodically broadcast encrypted invitations using information known on one or more devices of one or more trusted contacts stored in the electronic device 104. In the example of Figure 4, the electronic device 104 also provides a user-selectable option 402 for inviting nearby devices to join a joint session. For example, if selected, the user-selectable option 402 may cause the electronic device 104 to broadcast unencrypted invitations to nearby devices, such as by using a short-range communication protocol. As shown in Figure 4, the electronic device 104 may further, or alternatively, provide a scannable code 404 that can be used to join a joint session. For example, the scannable code 404 may include an encoded identifier for the joint session and an encoded obfuscated identifier for the electronic device 104, as described herein. In one or more implementations, the scannable code 404 may be displayed on the display 155 of the electronic device 104 and may be scanned using a camera of another electronic device, such as the electronic device 110. It is understood that the scannable code 404 may be used to invite any other device capable of scanning and interpreting the scannable code 404 (including, for example, devices not associated with contacts stored in the electronic device 104, devices associated with contacts stored in the electronic device 104, and / or devices of trusted contacts).
[0052] Figure 5 shows an example of trusted contacts that may be stored in an electronic device such as electronic device 104. As shown in Figure 5, a list 500 of contacts 502 can be stored in electronic device 104. As illustrated, each of the trusted contacts 502 may be stored with an individual key 504 (for example, an identity information resolution key, i.e., IRK, which may be a symmetric key stored in both electronic device 104 and the device of the corresponding contact 502, or the public key of a public / private key pair, whose private key is stored in the device of the corresponding contact 502). For example, each key 504 may be an encryption key configured in cooperation with the electronic device of the individual contact in which the key is stored. For example, configuring key 504 may include storing a copy of key 504 in electronic device 104 in association with an individual contact of another electronic device (e.g., contact B corresponding to electronic device 110), and storing the same key 504 (or a complementary key) in another electronic device (e.g., in association with contact 502 of an individual contact, such as contact A corresponding to electronic device 110). As shown in the figure, each of the contacts 502 may also include contact information 506 for an individual contact.
[0053] In one or more implementations, an invitation provided by electronic device 110 to electronic device 104 may include a value (e.g., the short-range communication address of electronic device 104) and a hash of the value with a key 504 of a specific contact 502 (e.g., contact B in the example of Figure 5). In these implementations, electronic device 110 can identify itself by hashing the value received in the invitation using one or more keys 504 stored in electronic device 110 in relation to each of the one or more contacts 502 in electronic device 104, including the contact of electronic device 104 (e.g., contact A in the example of Figure 5). Electronic device 110 can identify the contact corresponding to electronic device 104 by identifying the hash of the value using one or more keys that match the hash value in the invitation from electronic device 104. In this way, the key 504 used to generate the hash value in the invitation can be identified, and the contact 502 in which that key 504 is stored can also be identified. Once a contact 502 corresponding to key 504 is identified, contact information 506 of electronic device 110 can be retrieved from information stored locally in electronic device 104 (for example, in list 500). For example, contact information 506 may include the telephone number, email address, or any other (e.g., alphanumeric) identifier of electronic device 104. As shown in the figure, one or more of the contacts 502 stored in electronic device 104 may have user information 508 for the user corresponding to that contact. For example, user information 508 may include a name, photograph, avatar, etc.
[0054] In one or more implementations, a key 504 may be configured for the contact 502 stored by the electronic device 104 when the contact is determined to be a trusted contact. In one or more implementations, the contact stored in the electronic device 104 may be determined to be a trusted contact in various ways. For example, the contact may be determined to be a trusted contact by the electronic device 104 when the user of the electronic device 104 identifies the contact as a member of a trusted group, such as family, a group of friends, a group of colleagues, or another group registered on a remote server, for example. In another example, the contact may be determined to be a trusted contact by the electronic device 104 when the user of the electronic device 104 stores the contact in the electronic device 104's contact list (e.g., an electronic address book). For example, storing a contact in a contact list may include adding a name, photograph, avatar, or other identifying information to the contact along with the contact information 506.
[0055] As another example, electronic device 104 may determine that a contact is a trusted contact based on the communication history between electronic device 104 and the electronic device associated with the contact. For example, Figure 6 shows a message thread 600 that includes two-way (e.g., bidirectional) messaging communication between electronic device 104 and another electronic device. In the example in Figure 6, electronic device 104 may determine that the contact corresponding to the message thread 600 is a trusted contact when at least one message is sent from electronic device 104 to the electronic device corresponding to the contact (for example, a contact that sends a single message to electronic device 104 and does not receive a response from electronic device 104 may not be determined to be a trusted contact). Figure 7 shows another example in which a call list 700 is shown. In the example in Figure 7, the call list 700 includes incoming calls from another electronic device associated with the contact and outgoing calls from the electronic device to other electronic devices associated with the contact. In one or more implementations, the electronic device 104 may determine that a contact is a trusted contact when at least one incoming call is answered by a user of the electronic device 104, or when both an incoming and outgoing call (e.g., two-way or two-way communication) is established. The calls in Figure 7 may be telephone calls, voice conferences, and / or video conferences between the electronic device 104 and other electronic devices.
[0056] In one or more implementations, a contact may be determined to be a trustworthy contact by the electronic device 104 based on the storage of contact 502 in the contact list 500 and at least one bidirectional communication with the contact.
[0057] As another example, a contact may be determined to be a trusted contact by electronic device 104 based on an extreme proximity interaction between electronic device 104 and the contact's electronic device (for example, by tapping the contact's electronic device and electronic device 104 together), which may trigger an NFC exchange of key 504 between the devices. As yet another example, trusted contact status may be synchronized across multiple electronic devices associated with the same user account (e.g., smartphones, smartwatches, tablet devices, laptops, and / or one or more other devices associated with the same user).
[0058] As discussed herein, during a collaborative session (for example, while electronic device 110 remains within short-range communication range of electronic device 104), electronic device 110 is provided with the ability to control the content being output by electronic device 104 (for example, via media output device 150). While electronic device 110 has the ability to control the content being output by electronic device 104, electronic device 104 may also be able to control its own output. For example, users of electronic device 104 and users of electronic device 110 can collaborate to create a playlist of content being output by electronic device 104, and / or collaborate to stop, pause, play, scrub, and / or otherwise modify and / or update the content being output by electronic device 104. During a collaborative session, electronic device 104 can also invite one or more additional other electronic devices to join the collaborative session and / or to control the output of electronic device 104.
[0059] In one or more implementations, attributes may be provided on electronic device 104, electronic device 110, media output device 150, and / or one or more other electronic devices in the shared session, the attribute information identifying which electronic device (e.g., and / or its user) has selected the content currently being output by electronic device 104. For example, Figure 8 shows a use case in which attribute information 802 is displayed by media output device 150 while content is being output by electronic device 104 via media output device 150 (e.g., by providing content from electronic device 104 to media output device 150 and outputting the content on the media output device's speaker 152 and / or display 155). For example, in a use case where content currently being output by electronic device 104 via media output device 150 is selected in electronic device 110 (and output by electronic device 110 in response to a corresponding control command from electronic device 104, such as via session server 200), attribute information 802 may include the name of the user of electronic device 104, an identifier for electronic device 110 itself, an image of the user of electronic device 110, an avatar of the user of electronic device 110, and / or any other information that identifies electronic device 110 and / or the user of electronic device 110 (for example, as stored in user information 508 in electronic device 110). In this way, the user of electronic device 104 and the user of electronic device 110 are both in close proximity to each other and to media output device 150, and can see the display 155 of media output device 150, and can identify which user in the joint session selected the current content being output by the electronic device via media output device 150.
[0060] As shown in Figure 8, the media output device 150 can also display content information 800 indicating the content currently being output by the electronic device 104 to the media output device 150. For example, the content information 800 may include the title of a song, the title of an album, the name of an artist, the title of an ebook, the title of a podcast, the title of a movie, the album art, a logo, a movie poster image, the title of a series, the duration of the current content, the remaining time for playback of the current content, an indication of the next content, an indication of previously played content, and / or any other information describing the content being output by the electronic device 104 to the media output device 150. As shown in the figure, the content information 800 and attribute information 802 may be provided to the media output device 150 by the electronic device 104 for display. For example, the attribute information 802 may be obtained by the electronic device 104 from user information 508 of a contact 502 stored in the electronic device 104 for the electronic device (and / or the user of the electronic device) that selected the current content for output. Content information 800 and attribute information 802 may be provided to the media output device 150 as metadata together with the output content, or separately from the output content.
[0061] As shown in Figure 8, electronic device 104 and / or electronic device 110 may also display content information 800 and / or attribute information 802. For example, content information 800 and / or attribute information 802 may be provided from electronic device 104 to electronic device 110 (e.g., and / or any other device connected to the joint session) via the session server 200.
[0062] Figure 9 shows a flowchart of an exemplary process 900 for providing a neighbor device invitation for an electronic device, relating to an implementation of the technology of the present application. For illustrative purposes, process 900 is primarily described herein with reference to the media output device 150, electronic device 104, and electronic device 110 of Figure 1. However, process 900 is not limited to the media output device 150, electronic device 104, and electronic device 110 of Figure 1, and one or more blocks (or operations) of process 900 may be performed by one or more other components of other suitable devices, including electronic device 115 and / or server 120. For further illustrative purposes, some blocks of process 900 are described herein as occurring sequentially or linearly. However, multiple blocks of process 900 may occur in parallel. In addition, the blocks of process 900 do not need to be performed in the order shown, and / or one or more blocks of process 900 do not need to be performed and / or can be replaced by other operations.
[0063] As shown in Figure 9, in block 902, an electronic device (e.g., electronic device 104 or media output device 150) can directly (e.g., via short-range communication such as Bluetooth) provide a second device (e.g., electronic device 110) with an invitation to a joint session associated with the first device (e.g., initiated and / or controlled by the first device).
[0064] In one or more implementations, the invitation may be an encrypted invitation (e.g., encrypted for decryption by a trusted contact of the first device). Before providing the invitation, the electronic device may encrypt at least a portion of the invitation using a key previously configured by the first and second devices (e.g., key 504). For example, the first device may configure a key in which it identifies a contact stored in the first device for the second device. As another example, the first device may configure a key in which it identifies one or more previous communications between the first and second devices (e.g., including at least one outgoing communication from the electronic device). In one or more implementations, the encrypted invitation may include a hash and key of connection information for the joint session (e.g., a short-range communication address).
[0065] In one or more other implementations, providing an invitation may involve broadcasting an unencrypted invitation in response to a user request to invite all nearby devices to a joint session (for example, by using a short-range communication protocol to limit the physical distance over which the invitation can be received). For example, the unencrypted invitation may include a session identifier and an obfuscated identifier for the first device.
[0066] In one or more implementations, providing an invitation may include providing an invitation based on a determination by the first device that the second device has been within proximity to the first device (e.g., within a few inches or centimeters, such as within 3 inches or 3 centimeters) for at least a predetermined period (e.g., 1 second, 2 seconds, or a few seconds). For example, a user of the second device may position or hold the second device on, near, or above the first device to trigger an invitation sent from the first device. In one or more implementations, before providing an invitation, the first device may determine that the second device has been within proximity of the first device for at least a predetermined period of time by broadcasting a first advertisement (e.g., a first Bluetooth advertisement or other short-range communication protocol advertisement) in response to a user request to invite all nearby devices to a joint session, which does not contain information requesting participation in a joint session (e.g., does not contain a joint session identifier or the identifier or user of the first device), and by determining that the second device has been within proximity of the first device for at least a predetermined period of time based on the signal strength (e.g., RSSI) associated with the first advertisement. In these implementations where the first advertisement is provided without information requesting participation in a joint session, the invitation may include a second advertisement that contains information requesting participation in a joint session (e.g., the session identifier and obfuscated identifier of the first device). In various implementations, the second advertisement may be an unencrypted advertisement or may be encrypted using information (e.g., a key) exchanged between the first and second devices in connection with the first advertisement. Upon receiving the second advertisement, the second device may display a user interface (e.g., a proximity card or a "prox" card) with selectable options for requesting to join a joint session.
[0067] In block 904, the first device may receive a request from the second device to join a joint session in response to an invitation. In one or more implementations, the request may be received directly from the second device (e.g., using short-range communication such as Bluetooth). In one or more implementations, the request may be received from the second device via a network (e.g., network 106), such as via a server (e.g., session server 200).
[0068] In block 906, the first device may grant permission to the second device to control a joint session via a network (for example, via a session server such as the session server 200 described herein). In one or more implementations, the first device may grant permission based in part on determining that the second device is within proximity of the first device (for example, within the range of a short-range communication protocol and / or within audible range).
[0069] In block 908, the first device may modify its output based on control commands from the second device. The output of the first device may be output directly from the first device or by the first device via a third device, such as the media output device 150. For example, a joint session may include the first device outputting media content (e.g., audio content, video content, and / or similar) via a third device separate from the first device (e.g., by sending content from the first device to the third device for output by one or more speakers, displays, and / or other output components of the third device). In one exemplary example, a control command from the second device may include selecting media content (e.g., from a media library accessible using a subscription associated with the first device). For example, a collaborative session may include any or all of the following: a document editing session (for example, by multiple invited users providing control input to a collaborative document from their respective devices), a data sharing session, a group communication session, a mapping session, a music listening session or other audio content listening session, or a video viewing session. In various implementations, a collaborative session may include any or all of the operations described herein in relation to Figures 11 and / or 12.
[0070] Figure 10 shows a flowchart of another exemplary process 1000 for providing a neighbor device invitation for an electronic device, relating to an implementation of the technology of the present application. For illustrative purposes, process 1000 is primarily described herein with reference to the media output device 150, electronic device 104, and electronic device 110 of Figure 1. However, process 1000 is not limited to the media output device 150, electronic device 104, and electronic device 110 of Figure 1, and one or more blocks (or operations) of process 1000 may be performed by one or more other components of other suitable devices, including electronic device 115 and / or server 120. For further illustrative purposes, some blocks of process 1000 are described herein as occurring sequentially or linearly. However, multiple blocks of process 1000 may occur in parallel. In addition, the blocks of process 1000 do not need to be performed in the order shown, and / or one or more blocks of process 1000 do not need to be performed and / or can be replaced by other operations.
[0071] As shown in Figure 10, in block 1002, an electronic device (e.g., electronic device 110) may receive an invitation to a joint session associated with the second device directly from a second device (e.g., electronic device 104). In one or more implementations, the first device may, based on the invitation, identify a contact (e.g., contact 502) stored in the first device for the second device. For example, in one or more implementations, the invitation may include a value (e.g., the short-range communication address of the second device) and a value hashed with a key (e.g., key 504 configured between the first and second devices). In one or more implementations, identifying a contact may include generating a local hash value in the first device by hashing the value using each of the one or more keys (e.g., key 504) stored in the first device in relation to each of the one or more contacts (e.g., contact 502) that contains the contact. Identifying a contact may also include identifying a contact by identifying one of the local hash values that matches the value hashed using the key from the invitation.
[0072] In one or more other implementations, the invitation may be an unencrypted invitation broadcast by a second device (e.g., using a short-range communication protocol) in response to a user request to the second device to invite all nearby devices to a joint session. For example, an unencrypted invitation may include the session identifier and obfuscated identifier of the second device.
[0073] In block 1004, the first device may, in response to an invitation, provide the second device with a request to join a joint session. In one or more implementations, the request may be provided directly to the second device (e.g., using short-range communication such as Bluetooth communication). In one or more implementations, the request may be provided to the second device via a network (e.g., network 106) and / or via a server (e.g., session server 200). In one or more implementations (e.g., implementations in which the invitation is encrypted using a key), providing a request to join a joint session may include obtaining an identifier of the contact stored in the first device (e.g., in user information 508) and providing the server (e.g., session server 200) with the obtained identifier to join a joint session.
[0074] In block 1006, the first device may receive permission from the second device to control the joint session. For example, the first device may receive permission directly from the second device or via a network such as network 106.
[0075] In block 1008, the first device may provide control commands (e.g., to the second device via a server such as session server 200) for controlling the output of the second device via a joint session. In one or more implementations (e.g., implementations in which invitations are encrypted using a key), providing a control command may include obtaining an identifier of a contact stored in the first device (e.g., in user information 508) and providing the control command to the server for the joint session (e.g., session server 200) along with the obtained identifier. The server may forward the control command to the second device based on the identifier (e.g., by identifying the communication address of the second device stored in the first device in relation to the identifier). In one or more implementations, the second device may modify the output of the second device (e.g., the direct output of the second device, or the output via a third device such as media output device 150) in response to the control command, as described herein, for example, in relation to Figures 3, 9, and / or 11. For example, providing control commands to control the output of a second device may include providing the second device with a selection of media content for output by the second device (e.g., via a third device such as media output device 150). A collaborative session may include one or more of the following: a media output session, a document editing session, a data sharing session, a mapping session, or a group communication session.
[0076] Figure 11 shows a flowchart of an exemplary process 1100 for co-control of an electronic device relating to an implementation of the technology of the present application. For illustrative purposes, process 1100 is primarily described herein with reference to the media output device 150, electronic device 104, and electronic device 110 of Figure 1. However, process 1100 is not limited to the media output device 150, electronic device 104, and electronic device 110 of Figure 1, and one or more blocks (or operations) of process 1100 may be performed by one or more other components of other suitable devices, including electronic device 115 and / or server 120. For further illustrative purposes, some blocks of process 1100 are described herein as occurring sequentially or linearly. However, multiple blocks of process 1100 may occur in parallel. In addition, the blocks of process 1100 do not need to be performed in the order shown, and / or one or more blocks of process 1100 do not need to be performed and / or can be replaced by other operations.
[0077] As shown in Figure 11, in block 1102, an electronic device (e.g., electronic device 104) that outputs content (e.g., audio content) via a media output device (e.g., a speaker such as speaker 152 of media output device 150) separate from the first device may provide an invitation to the second device to control the (e.g., audio) content being output by the first device via the media output device (e.g., speaker). In one or more implementations, before outputting (e.g., audio) content via the media output device (e.g., speaker) using the first device, and before providing an invitation, the first device may provide a user-selectable option (e.g., user-selectable option 400 in Figure 4) to allow or deny providing an invitation. In various implementations, the speaker may be a vehicle speaker, a portable speaker, or a building speaker.
[0078] In one or more implementations, the invitation does not have to include identification information of the first device or the user of the first device. For example, the invitation may include and / or be encrypted using a key that can be used by a trusted contact's device to locally identify the first device using previously configured information, but cannot be used by any other device to identify the first device. As another example, the invitation may include an obfuscated identifier that can be used by a trusted server (e.g., session server 200) to obtain an unobfuscated (e.g., clear) identifier of the first device, but cannot be used by any other device to derive an unobfuscated (e.g., clear) identifier.
[0079] In one or more implementations, providing an invitation may include providing an encrypted invitation for trusted contacts of the first device. In one or more implementations, providing an invitation may also include providing a scannable code to the second device. For example, providing a scannable code may include displaying the scannable code on the display of the first device (e.g., display 300) (for scanning using, for example, the camera or other sensors of the second device).
[0080] In one or more implementations, the first device can receive a user request (e.g., via the selection of a user-selectable option 402) inviting a nearby device to control audio content being output by the first device via a speaker, and the invitation can be provided by the first device broadcasting an unencrypted invitation in response to the user request using a short-range wireless communication protocol.
[0081] In block 1104, the first device may receive a request from the second device to control content (e.g., audio) being output by the first device via a media output device (e.g., as described herein in relation to Figure 2), in response to an invitation. In one or more implementations, the first device may, in response to a request and partly based on a determination that the second device is within proximity of the first device, grant the second device authorization to control the audio content.
[0082] In block 1106, following a request (for example, following authorization by the first device), the first device may receive from the second device a command to modify content (e.g., audio) being output by the first device via a media output device (for example, as described herein in relation to Figure 2). In one or more implementations, providing an invitation to the second device may include providing an invitation directly from the first device to the second device (for example, using short-range communication such as Bluetooth communication), and receiving a request may include receiving a request directly from the second device (for example, using short-range communication such as Bluetooth communication).
[0083] In block 1108, the first device can modify content (e.g., audio) being output by the first device via a media output device (e.g., as described herein in relation to Figure 3) in response to a command. In one or more implementations, providing an invitation to a second device may include providing an invitation directly from the first device to the second device (e.g., using short-range communication such as Bluetooth communication), and receiving a control command may include receiving a control command from the second device to the first device via the network (e.g., via a server such as session server 200, via network 106). In one or more implementations, modifying content (e.g., audio) may include the first device obtaining different content (e.g., a new song, a new episode, a new movie, etc.) from a server (e.g., content server 202) and providing the different content to a media output device (e.g., a speaker) via the first device for output.
[0084] In one or more implementations, process 1100 may also include displaying attributes associated with a second device (e.g., attribute information 802) on a display (e.g., display 155) associated with a media output device (e.g., associated with a speaker) while the modified (e.g., audio) content is being output by the first device via the media output device.
[0085] In one or more implementations, modifying content (e.g., audio) output by a first device via a media output device (e.g., a speaker) may include modifying the content (e.g., audio) based in part on the determination that the second device remains within proximity of the first device (e.g., based on short-range communication and / or audio-based proximity verification). In one or more implementations, process 1100 may also include determining that the second device has moved away from the first device (e.g., outside of proximity distances such as outside the range of a short-range communication protocol and / or outside the audible range of a speaker). The first device may terminate control of the content (e.g., audio) by the second device in response to determining that the second device has moved away from the first device. In one or more implementations, in response to determining that the second device has moved away from the first device, the first device may also provide the second device (e.g., via a network or another network) with a playlist (or other summary) associated with the portion of the (e.g., audio) content output by the first device via a media output device (e.g., a speaker) while the second device had control of the (e.g., audio) content.
[0086] Figure 12 shows a flowchart of another exemplary process 1200 for co-control of an electronic device relating to an implementation of the technology of the present application. For illustrative purposes, process 1200 is primarily described herein with reference to the media output device 150, electronic device 104, and electronic device 110 of Figure 1. However, process 1200 is not limited to the media output device 150, electronic device 104, and electronic device 110 of Figure 1, and one or more blocks (or operations) of process 1200 may be performed by one or more other components of other suitable devices, including electronic device 115 and / or server 120. For further illustrative purposes, some blocks of process 1200 are described herein as occurring sequentially or linearly. However, multiple blocks of process 1200 may occur in parallel. In addition, the blocks of process 1200 do not need to be performed in the order shown, and / or one or more blocks of process 1200 do not need to be performed and / or can be replaced by other operations.
[0087] As shown in Figure 12, in block 1202, an electronic device (e.g., electronic device 110) may receive an invitation from a second device (e.g., electronic device 104) that is outputting (e.g., audio) content via a media output device (e.g., a speaker such as speaker 152 of media output device 150) separate from the second device (e.g., as described herein in relation to Figure 2) to control the (e.g., audio) content being output by the second device via the media output device.
[0088] In one or more implementations, the first device can use encrypted information in the invitation and a key previously configured by the first and second devices (e.g., key 504) to identify a contact (e.g., contact 502) stored in the first device in relation to a user of the second device. In one or more implementations, receiving an invitation may include receiving an invitation directly from the second device in the first device (e.g., using short-range communication such as Bluetooth communication), and making a request may include making a request directly from the first device to the second device. In one or more implementations, receiving an invitation may include receiving an invitation based on the proximity of the second device to the first device (e.g., the first device being within range of short-range communication from the second device, and / or being within audible range of the second device and / or media output device). In one or more implementations, the second device may be associated with a subscription to a service that provides access to content (e.g., provided by a server such as content server 202), while the first device does not have access to the service (e.g., the first device does not have a subscription to the service and / or is not logged into a subscription to the service).
[0089] In block 1204, the first device can, in response to an invitation, provide the second device with a request to control content (e.g., audio) being output by the second device via a media output device (e.g., as described herein in relation to Figure 2). The request may be provided directly from the first device (e.g., using a short-range communication profile) or via a network (e.g., network 106) and / or a server (e.g., session server 200).
[0090] In block 1206, the first device may, following a request (as described herein, for example, in relation to Figure 3), provide the second device with commands to modify the content (e.g., audio) being output by the first device via a media output device. For example, commands may be provided to the second device via a network (e.g., network 106) and / or a server (e.g., session server 200).
[0091] As described above, one aspect of the technology is the collection and use of data available from specific legitimate sources for proximity device invitation and / or co-control for electronic devices. The disclosure assumes that, in some cases, such collected data may include personal data that uniquely identifies or can be used to identify a particular person. Such personal data may include audio data, voice samples, voice profiles, demographic data, location-based data, online identifiers, telephone numbers, email addresses, home addresses, biometric data or records relating to a user's health or fitness level (e.g., vital sign measurements, medication information, exercise information), date of birth, or any other personal information.
[0092] This disclosure acknowledges that such use of personal data in this technology may be for the benefit of the user. For example, personal data may be used for nearby device invitation and / or co-control of electronic devices.
[0093] This disclosure assumes that entities responsible for collecting, analyzing, disclosing, transferring, storing, or otherwise using such personal data will adhere to well-established privacy policies and / or privacy practices. Specifically, such entities are expected to implement and consistently apply privacy practices that are generally recognized as meeting or exceeding industry or government requirements for maintaining user privacy. Such information regarding the use of personal data should be conspicuously and readily accessible to users and should be updated as data collection and / or use changes. Personal data from users should be collected only for legitimate use. Furthermore, such collection / sharing should be done after obtaining user consent or on other legitimate grounds specified in applicable law. In addition, such entities should consider taking all necessary steps to protect and secure access to such personal data and to ensure that others with access to personal data faithfully adhere to those privacy policies and procedures. Furthermore, such entities may undergo third-party evaluations to demonstrate their compliance with widely accepted privacy policies and practices. In addition, policies and practices should be adapted to the specific types of personal data collected and / or accessed, and should conform to applicable laws and standards, including jurisdiction-specific considerations that may play a role in imposing higher standards. For example, in the United States, the collection or access to certain health data may be subject to federal and / or state laws, such as the Health Insurance Portability and Accountability Act (HIPAA). Health data in other countries, on the other hand, may be subject to other regulations and policies and should be addressed accordingly.
[0094] Notwithstanding the foregoing, the Disclosure also envisions embodiments that allow a user to selectively prevent the use of or access to personal data. That is, the Disclosure envisions that hardware and / or software elements may be provided to prevent or prevent access to such personal data. For example, in the case of nearby device invitations for electronic devices and / or co-control for electronic devices, the technology may be configured to allow a user to choose to “opt in” or “opt out” of participating in the collection and / or sharing of personal data during or at any time thereafter of registering for the service. In addition to providing “opt-in” and “opt-out” options, the Disclosure envisions providing notices regarding access to or use of personal data. For example, the user may be notified when downloading an app that will access the user’s personal data, and then again immediately before the app accesses the personal data.
[0095] Furthermore, the intent of this disclosure is that personal data should be managed and processed in a manner that minimizes the risk of unintentional or unauthorized access or use. Risks can be minimized by limiting data collection and deleting data when it is no longer needed. In addition, where applicable in certain health-related applications, data anonymization can be used to protect user privacy. Anonymization may be facilitated, where appropriate, by removing identifiers, controlling the amount or specificity of stored data (e.g., collecting location data at the city level rather than at the address level or a scale insufficient for facial recognition), controlling how data is stored (e.g., aggregating data across users), and / or by other means such as differential privacy.
[0096] Therefore, while this disclosure extensively covers the use of personal data to implement one or more of the disclosed embodiments, it is also conceivable that these embodiments could be implemented without requiring access to such personal data. In other words, the various embodiments of the technology would not be rendered inoperable by the absence of all or part of such personal data.
[0097] Figure 13 shows an electronic system 1300 capable of realizing one or more implementations of the technology of the present invention. The electronic system 1300 may be a media output device 150, an electronic device 104, an electronic device 110, an electronic device 115, and / or a server 120, and / or be a part thereof, as shown in Figure 1. The electronic system 1300 may include interfaces for various types of computer-readable media and various other types of computer-readable media. The electronic system 1300 includes a bus 1308, one or more processing units 1312, a system memory 1304 (and / or buffer), a ROM 1310, a permanent storage device 1302, an input device interface 1314, an output device interface 1306, and one or more network interfaces 1316, or subsets and variations thereof.
[0098] Bus 1308 collectively represents all system, peripheral, and chipset buses that communicate with a number of internal devices of the electronic system 1300. In one or more implementations, bus 1308 communicates with one or more processing units 1312 to the ROM 1310, system memory 1304, and permanent storage device 1302. From these various memory units, one or more processing units 1312 retrieve instructions to execute and data to process in order to perform the processes of this disclosure. One or more processing units 1312 may be a single processor or a multi-core processor in different implementations.
[0099] The ROM 1310 stores static data and instructions required by one or more processing units 1312 and other modules of the electronic system 1300. On the other hand, the permanent storage device 1302 may be a read / write memory device. The permanent storage device 1302 may be a non-volatile memory unit that stores instructions and data even when the electronic system 1300 is off. In one or more implementations, a mass storage device (such as a magnetic or optical disk and its corresponding disk drive) may be used as the permanent storage device 1302.
[0100] In one or more implementations, a removable storage device (such as a floppy disk, flash drive, and its corresponding disk drive) may be used as the permanent storage device 1302. Similar to the permanent storage device 1302, the system memory 1304 may be a read-write memory device. However, unlike the permanent storage device 1302, the system memory 1304 may be a volatile read-and-write memory, such as random-access memory. The system memory 1304 can store any instructions and data that one or more processing units 1312 may need at runtime. In one or more implementations, the processes of this disclosure are stored in the system memory 1304, the permanent storage device 1302, and / or ROM 1310 (each implemented as a non-temporary computer-readable medium). From these various memory units, one or more processing units 1312 retrieve the instructions to be executed and the data to be processed in order to execute the processes of one or more implementations.
[0101] Bus 1308 also connects to input and output device interfaces 1314 and 1306. The input device interface 1314 allows the user to communicate information and select commands to the electronic system 1300. Input devices that may be used with the input device interface 1314 may include, for example, an alphanumeric keyboard and a pointing device (also referred to as a "cursor control device"). The output device interface 1306 may enable, for example, the display of images generated by the electronic system 1300. Output devices that may be used with the output device interface 1306 may include, for example, printers and display devices such as liquid crystal displays (LCDs), light-emitting diode (LED) displays, organic light-emitting diode (OLED) displays, flexible displays, flat panel displays, solid-state displays, projectors, or any other devices for outputting information. One or more implementations may include devices that function as both input and output devices, such as a touchscreen. In these implementations, the feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or haptic feedback, and user input can be received in any form, including acoustic input, voice input, or haptic input.
[0102] Finally, as shown in Figure 13, the bus 1308 also connects the electronic system 1300 to one or more networks and / or one or more network nodes through one or more network interfaces 1316. In this way, the electronic system 1300 can be part of a network in multiple networks, such as a computer network (LAN, wide area network ("WAN"), or intranet, or the Internet. Any or all components of the electronic system 1300 can be used in conjunction with this disclosure.
[0103] The functions described above can be implemented in computer software, firmware, or hardware. This technology can be implemented using one or more computer program products. A programmable processor and computer can be included in a mobile device or packaged as a mobile device. Process and logic flows can be executed by one or more programmable processors and one or more programmable logic circuits. General-purpose and dedicated computing devices and storage devices can be interconnected through a communication network.
[0104] Some implementations include electronic components such as microprocessors, storage devices and memory that store computer program instructions in machine-readable or computer-readable media (also called computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, read-only compact disks (CD-ROMs), write-once compact disks (CD-Rs), rewritable compact disks (CD-RWs), read-only multipurpose disks (e.g., DVD-ROMs, dual-layer DVD-ROMs), various recordable / rewritable DVDs (e.g., DVD-RAMs, DVD-RWs, DVD+RWs, etc.), flash memory (e.g., SD cards, miniSD cards, microSD cards, etc.), magnetic and / or solid-state hard disks, read-only recordable Blu-ray® discs, ultra-high-density optical discs, any other optical or magnetic media, and floppy disks. Computer-readable media are executable by at least one processing unit and can store computer programs containing instruction sets for performing various operations. Examples of computer programs or computer code include machine code, such as that produced by a compiler, and files containing high-level code that is executed by a computer, electronic component, or microprocessor using an interpreter.
[0105] The above description primarily refers to microprocessors or multicore processors that run software, but some implementations are performed by one or more integrated circuits, such as application-specific integrated circuits (ASICs) or field-programmable gate arrays (FPGAs). In some implementations, such integrated circuits execute instructions stored within the circuit itself.
[0106] As used herein and in any of the claims, the terms “computer,” “server,” “processor,” and “memory” all mean an electronic device or other technical apparatus. These terms exclude persons or groups of persons. For the purposes of this specification, the term “display” or “display” means to display on an electronic device. As used herein and in any of the claims, the terms “computer-readable medium” and “computer-readable media” are strictly limited to tangible physical objects that store information in a format readable by a computer. These terms exclude any wireless signals, wired download signals, and any other transient signals.
[0107] To provide user interaction, implementations of the subject matter described herein can be implemented on a computer having a display device for displaying information to the user, such as a CRT (cathode ray tube) monitor or an LCD (liquid crystal display) monitor, a keyboard and a pointing device, such as a mouse or trackball, to which the user can provide input to the computer. User interaction can also be provided using other types of devices. For example, the feedback provided to the user may be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback, and input from the user may be received in any form, including acoustic input, voice input, or tactile input. In addition, the computer can interact with the user by sending documents to and receiving documents from the device the user is using, for example, by sending web pages to a web browser on the user's client device in response to a request received from that web browser.
[0108] Embodiments of the subject matter described herein can be implemented, for example, in a computing system including a backend component as a data server, or a computing system including a middleware component, such as an application server, or a computing system including a client computer having a graphical user interface or web browser on which a user can interact with the implementation of the subject matter described herein, or in a computing system including any combination of one or more such backend components, middleware components, or frontend components. The components of the system can be interconnected in any form or via a medium of digital data communication (e.g., a communication network). Examples of communication networks include local area networks ("LANs") and wide area networks ("WANs"), internetworks (e.g., the Internet), and peer-to-peer networks (e.g., ad-hoc peer-to-peer networks).
[0109] A computer system can include clients and servers. Generally, clients and servers are remote to each other and can interact via a communication network. The client-server relationship is established through computer programs running on each computer and having a client / server relationship with each other. In some embodiments, the server sends data (e.g., an HTML page) to a client device (for example, to display data to a user interacting with the client device and to receive user input from the user). Data generated on the client device (e.g., the results of user interaction) can be received by the server from the client device.
[0110] Those skilled in the art will understand that the various exemplary blocks, modules, elements, components, methods, and algorithms described herein can be implemented as electronic hardware, computer software, or a combination of both. Above, to demonstrate this hardware-software compatibility, the various exemplary blocks, modules, elements, components, methods, and algorithms have been generally described in terms of their functionality. Whether such functionality is implemented in hardware or software depends on the design constraints imposed on the overall system and the specific application. The described functions can be implemented in various ways for each particular application. The various components and blocks may be arranged differently (for example, in a different order or divided in a different way) without departing in any way from the scope of the art of this application.
[0111] The specific order or hierarchy of steps in the disclosed process is understood to be an example of an exemplary approach. The specific order or hierarchy of steps in the process may be rearranged based on design preferences. Some of the steps may be performed simultaneously. The claims of the attached method present elements of various steps in a sample order and are not intended to be limited to the specific order or hierarchy presented.
[0112] The foregoing description is provided to enable those skilled in the art to implement the various embodiments described herein. The foregoing description provides various embodiments of the art of the present application, and the art of the present application is not limited to these embodiments. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the general principles defined herein can be applied to other embodiments as well. Therefore, the claims are not intended to limit the embodiments to those shown herein, but the entire scope corresponding to the literal claims should be recognized, and references to elements in the singular are not intended to mean "one and only one," but rather "one or more," unless otherwise specified. Unless otherwise specified, the term "some" refers to one or more things. Masculine pronouns (e.g., his) include feminine and neuter genders (e.g., her and her), and vice versa. Headings and subheadings, if any, are used for convenience only and do not limit the inventions described herein.
[0113] The predicates “configured to,” “operable to,” and “programmed to” do not imply any specific tangible or intangible modification of the object, but rather are intended to be interchangeable. For example, a processor configured to monitor and control operations or components may also mean that the processor is programmed to monitor and control operations, or that the processor is operable to monitor and control operations. Similarly, a processor configured to execute code may be interpreted as a processor that is programmed to execute code, or operable to execute code.
[0114] As used herein, the term "automatic" may include performance by a computer or machine without user intervention, such as performance by instructions in response to predicate actions by a computer or machine or other initiating mechanism. The word "example" is used herein to mean "to serve as an example or illustration." No embodiment or design described herein as an "example" should necessarily be construed as being preferable or advantageous to any other embodiment or design.
[0115] The terms "aspect" and similar phrases do not imply that such an aspect is essential to the technology of the Application, or that such an aspect applies to all configurations of the Technology of the Application. Disclosure relating to one aspect may apply to all configurations or to one or more configurations. An aspect may provide one or more embodiments. The terms "an aspect" and similar phrases refer to one or more aspects, and vice versa. The terms "embodiment" and similar phrases do not imply that such an embodiment is essential to the technology of the Application, or that such an embodiment applies to all configurations of the Technology of the Application. Disclosure relating to one embodiment may apply to all embodiments or to one or more embodiments. An embodiment may provide one or more embodiments. The terms "embodiment" and similar phrases may refer to one or more embodiments, and vice versa. The terms "configuration" and similar phrases do not imply that such a configuration is essential to the technology of the Application, or that such a configuration applies to all configurations of the Technology of the Application. Disclosure relating to a configuration may apply to all configurations or to one or more configurations. A configuration may provide one or more embodiments. The phrase "a configuration" can refer to one or more configurations, and vice versa.
[0116] All structural and functional equivalents of elements of various aspects described herein, whether known to those skilled in the art or to become known thereafter, are expressly incorporated herein by reference and are intended to be included in the claims. Furthermore, nothing disclosed herein is to be made public, whether such disclosure is expressly enumerated in the claims. No element of any claim should be construed under Section 112 of the United States Patent Act unless the element is expressly enumerated using the phrase “means for” or, in the case of a method claim, the element is enumerated using the phrase “step for”.
Claims
1. It is a method, The first device directly provides the second device with an invitation to a collaborative session associated with the first device, In response to the invitation, the first device receives a request from the second device to join the joint session, The first device provides the second device with permission via the network to control the joint session. The first device modifies the output of the first device based on control commands from the second device, Methods that include...
2. The method according to claim 1, wherein the invitation is an encrypted invitation, and the method further comprises encrypting at least a portion of the invitation using keys previously configured by the first device and the second device before providing the invitation.
3. The method of claim 2, further comprising configuring the key in such a way that the first device identifies a contact stored in the first device for the second device.
4. The method according to claim 2, further comprising configuring the key in such a way that the first device identifies previous communication between the first device and the second device.
5. The method according to claim 2, wherein the encrypted invitation comprises a hash of connection information for the joint session and the key.
6. The method according to claim 1, wherein providing the invitation includes broadcasting an unencrypted invitation in response to a user request to invite all nearby devices to the joint session.
7. The method according to claim 1, wherein providing the invitation includes providing the invitation based on a determination by the first device that the second device has been within proximity of the first device for at least a predetermined period of time.
8. Before providing the invitation, the first device has determined that the second device has been within the proximity range of the first device for at least the predetermined period of time. The first device broadcasts a first advertisement that does not contain information requesting all nearby devices to join the joint session, in response to a user request to invite all nearby devices to the joint session. The method of claim 7, further comprising determining, based on the signal intensity associated with the first advertisement, that the second device was within the proximity range of the first device for at least the predetermined period of time.
9. The method according to claim 8, wherein the invitation comprises a second advertisement containing the information for requesting participation in the joint session.
10. The method according to claim 1, wherein the joint session includes outputting media content by the first device via a third device separate from the first device, and the control command from the second device includes selecting the media content.
11. The method according to claim 1, wherein the joint session includes a document editing session.
12. The method according to claim 1, wherein the joint session includes a data sharing session.
13. The method according to claim 1, wherein the joint session includes a group communication session.
14. It is a method, The first device directly receives an invitation to a collaborative session associated with the second device from the second device, In response to the invitation, the first device provides the second device with a request to participate in the joint session. The first device receives permission from the second device via the network to control the joint session, The first device provides control commands for controlling the output of the second device via the shared session, Methods that include...
15. The method according to claim 14, further comprising the first device identifying a contact stored in the first device for the second device based on the invitation.
16. The invitation includes a value, the value is hashed using a key, and the contact can be identified as The first device generates a plurality of local hash values by hashing the value using each of the plurality of keys stored in the first device in relation to each of the plurality of contacts, including the contacts stored in the first device, The method of claim 15, comprising identifying the contact by identifying one of the local hash values that matches the value hashed using the key from the invitation.
17. Providing the request to participate in the aforementioned joint session means, Obtaining the contact identifier stored in the first device, The method according to claim 16, comprising providing the server with the acquired identifier and the request to participate in the joint session.
18. The method according to claim 14, wherein providing the control command for controlling the output of the second device includes providing the first device to the second device with a selection of media content for output by the second device.
19. The method according to claim 14, wherein providing the control command to the second device via the network includes providing the request to the server for the joint session to be forwarded to the second device by the server.
20. The method according to claim 14, wherein providing the request to the second device includes providing the request directly from the first device to the second device.
21. The method according to claim 14, wherein the joint session includes at least one of a media output session, a document editing session, a data sharing session, a mapping session, or a group communication session.
22. It is a device, Memory and It comprises one or more processors, and the one or more processors are To directly provide an invitation to the collaborative session associated with the second device, In response to the invitation, the second device receives a request to join the joint session. The second device is given permission via the network to control the joint session. A device configured to modify the output of the second device based on a control command from the second device.
23. The device according to claim 22, wherein the joint session includes output of media content by the device via a third device separate from the device, and the control command from the second device includes the selection of the media content.