Near device invitation for electronic device

By providing invitations to nearby devices through a short-range communication protocol, the problem of multiple electronic devices not subscribing to the same server service is solved, enabling collaborative control and privacy-preserving control of media output devices within proximity.

CN121285992APending Publication Date: 2026-01-06APPLE INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202480036535.6
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-05-17
Filing Date
2024-05-28
Publication Date
2026-01-06

AI Technical Summary

Technical Problem

When multiple electronic devices are not subscribed to the same server service, it is difficult to achieve coordinated control of media output devices, especially when users within close proximity of the devices want to output media content synchronously.

Method used

Electronic devices can send invitations to nearby devices via short-range communication protocols such as Bluetooth or NFC, allowing the invited devices to join a collaborative session and control the content output of media output devices, while using encrypted or obfuscated identifiers to protect user privacy.

Benefits of technology

It enables collaborative control within device proximity, protects user privacy, and allows invited devices to control the content output of media output devices even without subscription permissions.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121285992A_ABST
    Figure CN121285992A_ABST
Patent Text Reader

Abstract

Particular implementations of the subject technology provide systems and methods for providing nearby device invitations for an electronic device. A nearby device invitation from a first device may include an encrypted invitation configured for a trusted contact, an unencrypted invitation provided in response to a user request to invite all nearby devices, and / or a scannable code. The encrypted invitation and / or the unencrypted invitation may be broadcast using a short-range wireless communication protocol that limits the distance from the broadcasting device that may receive the invitation. After providing a nearby device invitation in one or more of these ways, a resulting collaborative session between the first device and the second device may be managed via the server over the network.
Need to check novelty before this filing date? Find Prior Art

Description

Cross-reference to related applications

[0001] This application claims priority to U.S. Provisional Patent Application No. 63 / 470,816, filed June 2, 2023, entitled “NEARBY DEVICE INVITATIONS FORELECTRONIC DEVICES”, the disclosure of which is incorporated herein by reference in its entirety. Technical Field

[0002] This specification relates in its entirety to electronic devices, including, for example, to invitations to nearby devices for electronic devices. Background Technology

[0003] Electronic devices typically include applications for outputting media content. This media content can be provided by servers that offer media services subscribed to by the electronic devices. In some systems, when two electronic devices subscribe to the same service, the server can provide synchronized media content to both devices for synchronized output. Attached Figure Description

[0004] Specific features of this subject matter are set forth in the appended claims. However, for purposes of explanation, several embodiments of this subject matter are illustrated in the following figures.

[0005] Figure 1 Example system architectures are illustrated based on one or more specific implementations, including various electronic devices that can implement the system of this subject.

[0006] Figure 2 This is a schematic diagram illustrating an electronic device inviting another electronic device to control a collaborative session, based on a specific implementation of the technology in this subject matter.

[0007] Figure 3 This is a schematic diagram illustrating an electronic device, according to a specific implementation of the subject matter technology, controlling content being output by another electronic device via a separate media output device.

[0008] Figure 4 An example is illustrated where an electronic device, according to a specific implementation of the technology of this subject, provides an option for inviting nearby electronic devices to control a collaborative session.

[0009] Figure 5 An example of an electronic device storing trusted contacts is illustrated in accordance with the specific implementation of the techniques in this subject matter.

[0010] Figure 6 An example of a messaging operation that can indicate a trusted contact person is illustrated according to a specific implementation of the techniques in this subject matter.

[0011] Figure 7An example of a call operation that can instruct a trusted contact person, based on a specific implementation of the techniques in this subject matter, is illustrated.

[0012] Figure 8 A schematic diagram illustrating a media output device displaying attribute information of content being output by the media output device, according to a specific implementation of the technology of this subject.

[0013] Figure 9 A flowchart illustrating an example process for providing a nearby device invitation for a collaborative session, based on a specific implementation of the techniques described in this subject matter, is provided.

[0014] Figure 10 A flowchart illustrating an example process for accepting invitations from nearby devices for collaborative sessions, based on a specific implementation of the techniques described in this subject matter, is provided.

[0015] Figure 11 A flowchart illustrating a specific implementation of the subject matter technology for providing collaborative control of a collaborative session to another electronic device is shown.

[0016] Figure 12 A flowchart illustrating an example process for controlling a collaborative session associated with another electronic device, according to a specific implementation of the art of this subject, is provided.

[0017] Figure 13 Examples of electronic systems that can be used to implement one or more specific embodiments of the subject matter are illustrated. Detailed Implementation

[0018] The detailed description listed below is intended to describe various configurations of the subject matter and is not intended to represent the only configuration in which the subject matter can be practiced. The accompanying drawings are incorporated herein and form part of the detailed description. The detailed description includes specific details intended to provide a thorough understanding of the subject matter. However, the subject matter is not limited to the specific details listed herein, but can be practiced in one or more other specific embodiments. In one or more specific embodiments, structures and components are shown in block diagram form to avoid obscuring the concepts of the subject matter.

[0019] Electronic devices typically include applications for outputting media content, editing documents, displaying maps and / or routes, and / or sharing content. In some systems, multiple electronic devices may each subscribe to the same service provided by a server, and the server may synchronize data at each of the multiple electronic devices, enabling each of the multiple electronic devices to display or otherwise output the same synchronized content. For example, multiple electronic devices may each synchronously play the same movie or the same song, as coordinated by a media content server. This allows users of electronic devices in remote locations to share a media experience. As another example, multiple electronic devices may collaboratively edit a common electronic document stored on a server or locally on one or more of the multiple electronic devices, where updates to the document at each device are coordinated by the server.

[0020] However, in some scenarios, one or more of the multiple devices that require collaborative control may not be subscribed to a service provided by a server that can coordinate data for the multiple devices. In some scenarios, multiple devices may be within physical proximity to each other and may not expect individual output of content from each device. For example, multiple users on multiple devices may expect to collaboratively listen to music or podcasts, or collaboratively watch video content, on public media output devices such as speakers or televisions (e.g., public media output devices not connected to a server or not subscribed to a service). In these and other scenarios, device proximity can serve as an indication of trust to facilitate collaborative control by the devices.

[0021] Various aspects of this disclosure enable invitations (e.g., nearby device invitations or proximity invitations) to be provided to nearby electronic devices, such as invitations to collaborative sessions. These aspects provide electronic devices with the ability to share control over collaborative sessions with other nearby devices (e.g., control over media output from the device or control over data edited, contributed, and / or modified (e.g., collaborative documents) by multiple users from multiple corresponding devices). In this way, these aspects facilitate multiple devices controlling the output of media output devices (e.g., speakers, televisions, etc.), such as in situations where a group of people are listening to audio content via speakers in a vehicle; a group of people are listening to audio content via speakers in a building (e.g., during a party); or a group of people are listening to audio content via portable wireless speakers (e.g., at a beach, in a park, on a boat, at a campsite, etc.).

[0022] In one or more embodiments, the first device may directly (e.g., via Bluetooth or other short-range wireless communication protocols, such as Near Field Communication (NFC)) offer an invitation to one or more nearby devices to control media content that the first device is outputting, 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 via a network (e.g., via a server managing the collaboration session). In various embodiments, the invitation may be wirelessly offered to a trusted nearby contact, offered 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 identity of the user of the first device. The invitation may be offered to and accepted by the device regardless of whether the device has access to a subscription to the media content.

[0023] Figure 1 An example system architecture 100 comprising various electronic devices capable of implementing the system of this subject matter, according to one or more embodiments, is illustrated. However, not all depicted components are usable in all embodiments, and one or more embodiments may include additional or different components compared to those shown in the figures. Variations in the arrangement and type of these components may be made without departing from the spirit or scope of the claims set forth herein. Additional components, different components, or fewer components may be provided.

[0024] System architecture 100 includes media output devices 150, electronic devices 104 (e.g., handheld electronic devices, such as smartphones or tablets), electronic devices 110, electronic devices 115, and a server 120, all communicatively coupled via a network 106 (e.g., a local area network or a wide area network). For illustrative purposes, system architecture 100 is described in... Figure 1 The system is shown as including media output device 150, electronic device 104, electronic device 110, electronic device 115, and server 120; however, system architecture 100 may include any number of electronic or / or audio devices and any number of servers or a data center including multiple servers.

[0025] 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 in a fixed or movable structure), a set-top box, a television, or any other device capable of outputting audio, video, and / or other types of media. As shown, media output device 150 may include one or more speakers 152. In one or more embodiments, media output device 150 may include a display (such as display 155) or be associated with such a display. Display 155 may be integrally formed with media output device 150 (e.g., mounted in a housing or other structure of the media output device) or implemented in a housing physically separate from the media output device. In one or more embodiments, media output device 150 may be implemented as or incorporated into a larger device or system, such as a vehicle (e.g., a car, bus, airplane, ship, helicopter, or any other land, air, or water vehicle) or a building (e.g., a residence, office, hotel, etc.).

[0026] Despite Figure 1 While not visible in the foregoing, in one or more embodiments, media output device 150 may include processing circuitry (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 circuitry (e.g., one or more antennas, etc.) for receiving and / or processing audio content from and / or processing audio content from one or more of electronic devices 104, 110, 115, and / or server 120. The processing circuitry of media output device 150 or another device may operate one or more speakers, such as speaker 152, to generate sound.

[0027] Media output device 150 may include communication circuitry for communicating (e.g., directly or via network 106) with electronic devices 104, 110, 115, and / or server 120. This communication circuitry includes, for example, one or more wireless interfaces, such as WLAN radios, cellular radios, Bluetooth radios, Zigbee radios, near-field communication (NFC) radios, and / or other radios. Electronic devices 104, 110, 115, and / or server 120 may include communication circuitry for communicating (e.g., directly or via network 106) with media output device 150 and / or with other devices in electronic devices 104, 110, 115, and / or server 120. This communication circuitry includes, for example, one or more wireless interfaces, such as WLAN radios, cellular radios, Bluetooth radios, Zigbee radios, near-field communication (NFC) radios, and / or other radios. The media output device may include a power source such as a battery and / or wired or wireless power.

[0028] As shown, media output device 150 can communicate directly with electronic devices such as electronic device 104 (e.g., to receive audio content output from speaker 152 and / or to receive display content displayed on display 155). In one or more embodiments, 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 network 106.

[0029] As shown, electronic device 104 can communicate directly (e.g., using short-range communication protocols such as Bluetooth, Zigbee, or Near Field Communication (NFC) protocols) and / or via a network such as network 106 with one or more other electronic devices, such as electronic device 110. Electronic device 104 can be, for example, a smartphone, a portable computing device such as a laptop computer, 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 smartwatch, smart wristband, etc.), including, for example, any other suitable device such as processing circuitry and / or communication circuitry for providing audio content to media output device 150. Figure 1 In this embodiment, by way of example, electronic device 104 is depicted as a mobile smartphone device. In one or more specific embodiments, electronic device 104 and / or media output device 150 may be and / or may include the following description. Figure 13 All or part of the electronic system under discussion.

[0030] Electronic device 115 can be, for example, a desktop computer, portable computing devices such as laptops, smartphones, peripherals (e.g., digital cameras, headphones, another audio device, or another media output device), tablet devices, wearable devices (such as watches, wristbands, etc.). Figure 1 In this context, by way of example, electronic device 115 is described as a desktop computer. Electronic device 115 may be and / or may include, as described below... Figure 13 The electronic system under discussion, in whole or in part.

[0031] Electronic device 110 can be, for example, a desktop computer, portable computing devices such as laptops, smartphones, peripherals (e.g., digital cameras, headphones, another audio device, or another media output device), tablet devices, wearable devices (such as watches, wristbands, etc.). Figure 1 In this context, by way of example, electronic device 115 is described as a smartphone. Electronic device 110 may be and / or may include the following description... Figure 13 The electronic system under discussion, in whole or in part.

[0032] Server 120 may form all or part of a computer network or server group 130, such as in a cloud computing or data center implementation. For example, server 120 stores data and software and includes specific hardware (e.g., processors, graphics processors, and other dedicated or custom processors) for rendering, generating, and / or distributing content such as graphics, images, videos, audio, and multimedia files. In one implementation, server 120 may be used as a cloud storage server.

[0033] In one or more specific 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 example use case, electronic device 104 may obtain media content from a media content server via network 106 and provide media content directly to media output device 150. In another example use case, electronic device 104 may provide media content directly from local storage (e.g., a media library) at electronic device 104 to media output device 150. As another example, server 130 may include a server that provides identity 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, e-convening, map building and routing, schedule management, transportation management, etc.).

[0034] Figure 2This is a schematic diagram illustrating various aspects and / or operations executable according to various aspects of this disclosure for providing an invitation (e.g., an invitation to a collaborative session) to another electronic device. Figure 2 As illustrated, electronic device 104 may directly extend an invitation to electronic device 110. For example, the invitation may be an invitation to join and / or control a collaborative session with electronic device 104. For example, the invitation may be an invitation to control the 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 embodiments, an invitation may be provided from electronic device 104 to electronic device 110 when electronic device 110 is within proximity of electronic device 104 (e.g., within range of a short-range communication protocol). In one example, electronic device 104 may detect the presence of electronic device 110 near electronic device 104, determine that electronic device 110 is associated with a trusted contact stored at electronic device 104, and respond by providing an invitation to electronic device 110. In another example, electronic device 104 may periodically provide encrypted invitations to join a collaborative session, wherein these encrypted invitations can only be decrypted by a trusted contact 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 join a collaborative session. In this example, the invitation may be an unencrypted invitation that can be accepted by any device within range of the communication protocol used to broadcast the invitation.

[0036] like Figure 2 As shown, in response to receiving an invitation, electronic device 110 may provide electronic device 104 with a request to join a collaborative session. For example... Figure 2 As shown, a request can be provided from electronic device 110 to electronic device 104 directly (e.g., via short-range wireless communication, such as Bluetooth communication) or via a network, such as via session server 200. For example, session server 200 could be... Figure 1This is a specific implementation of one of the servers in server 130. As shown, electronic device 110 can provide a request to session server 200, and session server 200 can forward the request to electronic device 104. In one or more implementations, in response to receiving a request from electronic device 110, electronic device 104 can provide authorization for electronic device 110 to join and / or control the collaborative session. Authorization can be provided directly from electronic device 104 to electronic device 110, or via session server 200. For example, controlling the collaborative session may include controlling the output of electronic device 104 (e.g., including controlling content being output by electronic device 104, such as via media output device 150). Authorization can be provided from electronic device 104 to session server 200. Session server 200 can provide instructions to electronic device 110 regarding the authorization.

[0037] In one or more specific implementations, electronic device 104 may provide an invitation and / or authorization for electronic device 110 to join a collaborative session based in part on the proximity of electronic device 110 to electronic device 104 and / or media output device 150 (e.g., based on the individual determination of electronic device 110 within the proximal range of electronic device 104 and / or media output device 150). In various use cases, the proximal range may extend from electronic device 104 and / or media output device 150 by several feet (e.g., a few feet, such as the approximate size of the interior of a vehicle, or by tens or hundreds of feet, such as the detectable range of a communication protocol or the audible range of an audio output), or may extend only to within a few inches or centimeters of electronic device 104 and / or media output device 150. In one example, electronic device 104 may determine that electronic device 110 is close to electronic device 104 by directly exchanging invitations and / or requests using a proximity communication protocol. In another example, electronic device 104 and / or media output device 150 may determine that electronic device 110 is close to electronic device 104 and / or media output device 150 by broadcasting a first announcement that does not include information for requesting to join a collaborative session prior to broadcasting an invitation, and by determining that electronic device 110 is within the proximal range (e.g., within a few inches or centimeters) of electronic device 104 and / or media output device 150 based on the signal strength associated with the first announcement (e.g., the signal strength of the response to the first announcement from electronic device 110, or the signal strength determined based on the change in measurable characteristics of the antenna of electronic device 104 and / or media output device 150 due to the presence of electronic device 110). This confirmation that the device is within inches or centimeters of the electronic device 104 and / or the media output device 150 can be used in use cases where the media output device 150 is a portable or smart speaker in a home or at a party (e.g., to prevent invitations from being sent to a neighbor's home or to a party attendee). In various specific implementations, the size of the proximal range used to trigger an invitation or authorization to join can be set by the user of the electronic device 104 and / or the media output device 150, or can be determined automatically, such as based on the type of the media output device 150 (e.g., by the electronic device 104 and / or the media output device 150 itself). (For example, if the media output speaker 150 is implemented in a vehicle, the proximal range may be several feet, or if the media output device 150 is a portable or smart speaker, the proximal range may be several inches or centimeters.)

[0038] In another example, electronic device 110 may provide proximity confirmation information to electronic device 104. For example, electronic device 110 may (e.g., using a microphone of electronic device 110) obtain a recording of the acoustic environment of electronic device 110 (e.g., a recording of a few seconds, a second, or less than a second) (e.g., including a recording of audio content being output by electronic device 104 via media output device 150). 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 can compare hashed, encrypted, and / or otherwise encoded audio received from electronic device 110 with hashed, encrypted, and / or otherwise encoded audio locally obtained by electronic device 104 (e.g., 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 locally obtained by electronic device 104, it can be determined that electronic device 110 is close to electronic device 104 and / or media output device 150. For example, in this way, electronic device 104 (and / or electronic device 110) can confirm that electronic device 104 and electronic device 110 are in the same acoustic environment (e.g., within the hearing range of each other and / or the media output device). For example, this type of audio-based proximity verification can be used to confirm that electronic device 110 is close enough to media output device 150 so that a user of electronic device 110 can hear the audio content being output by media output device 150.

[0040] In one or more specific implementations, the invitation may provide information that electronic device 110 can use to request joining a collaborative session, but without any 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 the 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 embodiments, electronic device 110 may use keys for multiple contacts to perform an identification operation to identify one of the keys corresponding to a specific trusted contact. For example, an encrypted invitation may include an unencrypted value, such as a random number or the local communication address of electronic device 104 (e.g., the local communication address may be periodically updated to prevent tracking of electronic device 104), and an unencrypted hash value of that value calculated using the key corresponding to electronic device 104. Electronic device 110 may hash this value with each of the keys for each of the multiple contacts locally stored thereon until the hash value of the value with the specific key matches the hash value in the invitation. When electronic device 110 determines that one of the keys matches the hash value of the encrypted invitation and the key when hashed with the value in the encrypted invitation, electronic device 110 may identify the contact corresponding to electronic device 104 as the contact corresponding to that key. In one or more embodiments, the identified key may be used to decrypt a payload included in the encrypted invitation. For example, the payload may include a session identifier for a collaborative session associated with electronic device 104.

[0042] Using the identified key, electronic device 110 can also obtain contact information of electronic device 104 previously stored at electronic device 110. In one or more embodiments, electronic device 110 may include this contact information in a request provided to session server 200. Session server 200 can then use the contact information provided by electronic device 110 to forward the request to electronic device 104 (e.g., along with a session identifier). In this way, the privacy of the user of electronic device 104 can be protected while still providing the ability to invite nearby devices to join and / or control collaborative sessions.

[0043] In another example use case (where the user of electronic device 104 requests that an invitation to a collaborative session be sent to all nearby devices (e.g., all nearby devices within a proximity range)), the invitation may be an unencrypted invitation. In this example use case, electronic device 104 may include an obfuscated identifier of the electronic device in the invitation (e.g., along with a session identifier used for the collaborative session). For example, the obfuscated identifier may be obtained specifically for the collaborative session by electronic device 104, and the obfuscated identifier may not include any information identifying the user of electronic device 104. When electronic device 110 receives an unencrypted invitation including the obfuscated identifier, electronic device 110 may include the obfuscated identifier in a request to session server 200. In this way, the invitation includes information for requesting to join the collaborative session (e.g., the obfuscated identifier of the user of the electronic device and / or the identifier of the collaborative session). In increasingly more specific implementations, the obfuscated identifier may have been previously configured between electronic device 104 and session server 200, and session server 200 may have previously stored an obfuscated identifier related to contact information of electronic device 104.

[0044] When session server 200 receives a request including an obfuscated identifier from electronic device 110, the session server can use the obfuscated identifier to look up contact information for electronic device 104, and can use the obtained contact information to forward the request to electronic device 104. In this way, the privacy of the user of electronic device 104 is protected from being disclosed to electronic device 110, while still allowing electronic device 104 to invite electronic device 110 to join a collaborative session associated with electronic device 104. As discussed in further detail below, the invitation can be provided to electronic device 110 in other ways, such as by displaying a scannable code (e.g., a barcode, QR code, etc.) on the display of electronic device 104, and by scanning the scannable code using electronic device 110. For example, the scannable code may include an encoded obfuscated identifier of electronic device 104, which can be used by electronic device 110 to generate requests and / or control commands to session server 200.

[0045] Figure 3 This is a schematic diagram illustrating various aspects and / or operations executable by electronic device 110 for controlling a cooperative session with electronic device 104 according to various aspects of this disclosure. For example, in a cooperative session where electronic device 110 has been authorized to join (as in... Figure 2Afterwards, electronic device 110 may provide commands (e.g., control commands) to electronic device 104. As shown, electronic device 110 may provide commands to electronic device 104 via session server 200 (e.g., via network 106). In one or more other embodiments, electronic device 110 may provide commands directly to electronic device 104. As shown, the command may be a control command for modifying content being output by electronic device 104 (e.g., via media output device 150). For example, the control command may be generated by electronic device 110 in response to user input to electronic device 110 (e.g., from a user of electronic device 104, via a touch surface of electronic device 104, mouse, button, switch, touchscreen, camera, sensor, and / or microphone), which includes user input for modifying 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 being provided to media output device 150 for output (e.g., via speakers 152 and / or display 155 of media output device 150). As an example, modifying the content being 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 songs from a playlist. As another example, modifying the content being output by electronic device 104 via media output device 150 may include controlling a video conferencing session whose audio and / or video are being output by the media output device. As yet another example, modifying the content being output by electronic device 104 via media output device 150 may include entering or modifying input to a map-building application to provide visual and / or auditory direction using media output device 150. In one or more other embodiments, in response to a command from electronic device 110, electronic device 104 may modify content being directly output by electronic device 104 (e.g., by display 300 of electronic device 104). As an example, modifying content being directly output by electronic device 104 may include modifying a document or other data being displayed by electronic device 104.

[0047] In one or more specific implementations, when a command is received at electronic device 104, electronic device 104 can process the command as if it were received as direct user input to electronic device 104 (e.g., from a user of electronic device 104, via a touch surface of electronic device 104, mouse, button, switch, touchscreen, camera, sensor, and / or microphone). For example, after being authorized to join a collaborative session, a user interface (UI) may be displayed by display 302 of electronic device 110, which includes substantially the same information and / or control elements displayed by the UI of electronic device 104 for controlling output (e.g., for controlling the output of content by media output device 150). For example, electronic device 104 may have installed applications (e.g., media player applications, data editing applications, conferencing applications, map building applications, etc.) for controlling the output of electronic device 104 (e.g., directly or via media output device 150).

[0048] In some use cases, electronic device 110 may also install an application, and when authorized to join a collaborative session, information may be provided by session server 200 to populate the UI of the application at electronic device 110 to display substantially the same information as that displayed by the UI of the application at electronic device 104. In this way, electronic device 110 can present content information about what is being output by electronic device 104 and operate the same control elements provided by electronic device 104 (e.g., play button, stop button, pause button, volume controls, scrub bar, text input field, search field, playlist creation controller, playlist modification controller, etc.). In this way, the user of electronic device 110 can operate the control elements of the application at electronic device 110 to control the output of electronic device 104 (e.g., via media output device 150).

[0049] In one or more other use cases, electronic device 110 may not have an application installed thereon and may have access to a web-based version of the user interface (e.g., hosted by session server 200 or content server 202). For example, the web-based version of the user interface may be populated by session server and / or content server 202 to display substantially the same information and / or control elements displayed by the user interface of the application at electronic device 104. In one or more other use cases, electronic device 110 may not have an application installed thereon and may have a reduced version (e.g., a fragment of the application) of the application that can be immediately (e.g., without requiring a reduced version of the application to be installed at electronic device 110) available for collaborative sessions. For example, the reduced version of the application may display a user interface that can be populated by session server and / or content server 202 to display substantially the same information and / or control elements displayed by the user interface of the application at electronic device 104.

[0050] In one or more specific implementations, electronic device 104 may have access to a subscription to services provided by content server 202. Figure 2 and Figure 3 In the example, electronic device 110, invited by electronic device 104 to control the output of electronic device 104, may or may not have access to a subscription to the service provided by content server 202. However, even in a use case where electronic device 110 does not have access to a subscription to the service provided by content server 202, electronic device 110 can still use a combination of Figure 2 and Figure 3 The described operations are used to join a collaborative session with electronic device 104 and control the use of electronic device 104 by having a subscription to it with access rights to generate output.

[0051] As this article combines Figure 2 and Figure 3 As discussed in the examples, invitations from electronic device 104 can be provided in various ways. For example, Figure 4 Example options for inviting other devices to join a collaborative session are illustrated, which electronic device 104 may provide to its user. As shown, electronic device 104 may provide user-selectable option 400 for allowing trusted contacts to join the collaborative session. When selected, user-selectable option 400 allows electronic device 104 to periodically broadcast encrypted invitations, which are encrypted using information known to one or more devices of one or more trusted contacts stored at electronic device 104. Figure 4In the example, electronic device 104 also provides a user-selectable option 402 for inviting nearby devices to join the collaborative session. For example, when selected, user-selectable option 402 allows electronic device 104 to broadcast an unencrypted invitation to the collaborative session to nearby devices, such as by using a short-range communication protocol. Figure 4 As shown, electronic device 104 may also or alternatively provide a scanable code 404 that can be used to join a collaborative session. For example, scanable code 404 may include an encoded identifier of the collaborative session and an encoded obfuscated identifier of electronic device 104, as discussed herein. In one or more embodiments, scanable code 404 may be displayed on display 155 of electronic device 104 and may be scanned, for example, using a camera of another electronic device such as electronic device 110. It should be understood that scanable code 404 may be used to invite any other device with the ability to scan and interpret scanable code 404 (e.g., including devices not associated with a contact stored at electronic device 104, devices associated with a contact stored at electronic device 104, and / or devices of trusted contacts).

[0052] Figure 5 An example of trusted contacts that can be stored on an electronic device, such as electronic device 104, is shown. Figure 5 As shown, a list 500 of contacts 502 may be stored at electronic device 104. Each contact in the contacts 502, acting as trusted contacts, may be stored with a corresponding key 504 (e.g., an identity resolution key or IRK, which may be a symmetric key stored at both electronic device 104 and the device corresponding to contact 502, or a public key for its private key stored at the device corresponding to contact 502). For example, each key 504 may be an encryption key that has been configured in cooperation with the corresponding contact's electronic device, and the key is stored for that electronic device. For example, configuring the key 504 may include storing a copy of the key 504 at electronic device 104 associated with a corresponding contact (e.g., contact B corresponding to electronic device 110) of another electronic device (e.g., electronic device 110), and storing the same key 504 (or a complementary key) (e.g., associated with a contact 502 such as contact A corresponding to electronic device 104) at another electronic device. Each contact in the contacts 502 may also include contact information 506 for that contact.

[0053] In one or more specific embodiments, the invitation provided by electronic device 104 to electronic device 110 may include a value (e.g., the local communication address of electronic device 104) and the relationship between that value and a specific contact 502 (e.g., Figure 5In the example, the hash value of key 504 of contact B). In these specific implementations, electronic device 110 can use the value received in the invitation and the hash value stored at electronic device 110 with one or more corresponding contacts 502 (including contacts of electronic device 104) at electronic device 110. Figure 5 In the example, contact A) is identified by hashing one or more keys 504 associated with it to identify electronic device 104. Electronic device 110 can identify the contact corresponding to electronic device 104 by a hash value that identifies the value of one of the multiple keys that matches 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 storing the key 504 can also be identified. Once the contact 502 corresponding to the key 504 is identified, the contact information 506 of electronic device 104 can be obtained from information stored locally (e.g., in list 500) at electronic device 110. For example, contact information 506 may include a phone number, email address, or any other (e.g., alphanumeric) identifier of electronic device 104. As shown, one or more contacts among the contacts 502 stored at electronic device 104 may have user information 508 corresponding to that contact. As an example, user information 508 may include name, picture, avatar, etc.

[0054] In one or more embodiments, when a contact is determined to be a trusted contact, key 504 may be configured for contact 502 stored by electronic device 104. In one or more embodiments, contacts stored at electronic device 104 may be determined to be trusted contacts in various ways. As an example, a contact may be determined to be a trusted contact by electronic device 104 when a user of electronic device 104 identifies a contact as a member of a trusted group (such as a family group, friends group, colleagues group, or another group registered, for example, at a remote server). As another example, a contact may be determined to be a trusted contact by electronic device 104 when a user of electronic device 104 stores a contact in a contact list at electronic device 104 (e.g., in an electronic address book). For example, storing a contact in a contact list may include adding a name, picture, avatar, or other identifying information along with contact information 506 to the contact.

[0055] As another example, based on the communication history between electronic device 104 and electronic devices associated with a contact, a contact can be identified as a trusted contact by electronic device 104. For example, Figure 6 Message thread 600 is illustrated, which includes two-way (e.g., bidirectional) message transmission communication between electronic device 104 and another electronic device. Figure 6In the example, when at least one message is transmitted from electronic device 104 to electronic device corresponding to a contact, electronic device 104 can determine that the contact corresponding to message thread 600 is a trusted contact (e.g., a contact who transmits a single message to electronic device 104 (to which electronic device 104 does not transmit a response) may not be determined to be a trusted contact). Figure 7 Another example is shown where call list 700 is displayed. Figure 7 In the example, call list 700 includes incoming calls from another electronic device associated with the contact, and outgoing calls from the electronic device to another electronic device associated with the contact. In one or more embodiments, electronic device 104 may determine that a contact is a trusted contact when a user of electronic device 104 answers at least one incoming call, or when both incoming and outgoing calls are connected (e.g., two-way or bidirectional communication). Figure 7 The call can be a telephone call, audio conference and / or video conference between electronic device 104 and another electronic device.

[0056] In one or more embodiments, a contact can be identified as a trusted contact by electronic device 104 based on the storage of contact 502 in contact list 500 and at least one bidirectional communication with the contact. In one or more embodiments, a contact can be identified as a trusted contact by electronic device 104 based on the storage of contact 502 in contact list 500, the storage of contact information of electronic device 104 at the contact's device (e.g., electronic device 110), and at least one bidirectional communication with the contact.

[0057] As another example, a contact can be identified as a trusted contact by electronic device 104 based on an extreme proximity interaction between electronic device 104 and a contact's electronic device that can induce an NFC exchange of key 504 between the devices (e.g., by tapping the contact's electronic device together with electronic device 104). As another example, the trusted contact status can be synchronized across multiple electronic devices associated with the same user account (e.g., smartphones, smartwatches, tablets, laptops, and / or one or more other devices associated with the same user).

[0058] As discussed herein, during a collaborative session (e.g., and 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 (e.g., via media output device 150). While electronic device 110 is provided with 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 may collaborate to curate playlists of content for output by electronic device 104, and / or may collaborate to stop, pause, play, drag, and / or otherwise change and / or update the content being output by electronic device 104. During a collaborative session, electronic device 104 may also invite one or more additional electronic devices to join the collaborative session and / or control the output of electronic device 104.

[0059] In one or more embodiments, attributes may be provided at electronic device 104, electronic device 110, media output device 150, and / or one or more other electronic devices in a collaborative session. These attributes identify which electronic device (e.g., and / or its user) has selected the content currently being output by electronic device 104. For example, Figure 8 An example use case is illustrated where attribute information 802 is displayed by media output device 150 when 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 using speakers 152 and / or displays 155 of the media output device). For example, in a use case where the content currently being output by electronic device 104 via media output device 150 is selected at electronic device 110 (and output by electronic device 104 in response to a corresponding control command from electronic device 110, such as via session server 200), attribute information 802 may include (e.g., as stored in user information 508 at electronic device 104) the name of the user of electronic device 110, the identifier of electronic device 110 itself, the image of the user of electronic device 110, the avatar of the user of electronic device 110, and / or any other information identifying electronic device 110 and / or the user of electronic device 110. In this way, the user of electronic device 104 and the user of electronic device 110 (both of whom are close to each other and to media output device 150) can view the display 155 of media output device 150 and identify which user in the collaborative session has selected the current content being output by the electronic device via media output device 150.

[0060] like Figure 8As illustrated, media output device 150 may also display content information 800, which indicates the content currently being output by electronic device 104 at media output device 150. For example, content information 800 may include song titles, album titles, artist names, ebook titles, podcast titles, movie titles, album covers, logos, movie poster images, TV series titles, the duration of the current content, the remaining time for replaying the current content, indications of upcoming content, indications of previously played content, and / or any other information describing the content being output by electronic device 104 at media output device 150. As shown, content information 800 and attribute information 802 may be provided by electronic device 104 to media output device 150 for display. For example, attribute information 802 may be obtained by electronic device 104 from user information 508 of contact 502, which is stored at electronic device 104 for the electronic device (and / or the user of the electronic device) that selects the current content for output. Content information 800 and attribute information 802 may be provided to the media output device 150 as metadata along with the content to be output, or may be provided to the media output device separately from the content to be output.

[0061] like Figure 8 As shown, 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 via session server 200 (e.g., and / or any other device connected to the collaborative session).

[0062] Figure 9 A flowchart illustrating an example process 900 for providing a nearby device invitation to an electronic device, according to a specific implementation of the art of this subject, is provided. For illustrative purposes, this document primarily refers to... Figure 1 The process 900 is described using media output device 150, electronic device 104, and electronic device 110. However, the process 900 is not limited to... Figure 1 The media output device 150, electronic device 104, and electronic device 110, 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). Further for 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. Furthermore, the blocks of process 900 need not be performed in the order shown, and / or one or more blocks of process 900 need not be performed and / or may be replaced by other operations.

[0063] like Figure 9As illustrated, at block 902, an electronic device (e.g., electronic device 104 or media output device 150) may directly (e.g., via proximity communication, such as Bluetooth communication) offer an invitation to a second device (e.g., electronic device 110) to engage in a collaborative session (e.g., initiated and / or controlled by the first device) associated with the first device.

[0064] In one or more embodiments, the invitation may be an encrypted invitation (e.g., encrypted for decryption by a trusted contact of the first device). The electronic device may encrypt at least a portion of the invitation using a key (e.g., key 504) previously configured by both the first and second devices before providing the invitation. For example, the first device may configure the key in response to identifying a contact of the second device stored at the first device. As another example, the first device may configure the key in response to identifying one or more previous communications between the first and second devices (e.g., including at least one outgoing call from the electronic device). In one or more embodiments, the encrypted invitation may include connection information for the collaborative session (e.g., a local communication address) and a hash value of the key.

[0065] In one or more other implementations, providing an invitation may include broadcasting an unencrypted invitation in response to a user request to invite all nearby devices to the collaborative session (e.g., using a proximity communication protocol to limit the physical distance at 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 embodiments, providing an invitation may include providing the invitation based on the first device determining that the second device has been within at least a predetermined time period (e.g., one second, two seconds, or several seconds) of the first device's proximity (e.g., within a few inches or centimeters, such as within three inches or three centimeters). For example, a user of the second device may place or hold the second device on, near, or on the first device to trigger an invitation to be transmitted from the first device. In one or more embodiments, before providing an invitation, the first device may determine that the second device has been within at least a predetermined time period of the first device's proximity by: broadcasting a first announcement (e.g., a first Bluetooth announcement or other proximity protocol announcement) that does not include information used to request joining the collaboration session (e.g., does not include the identifier of the collaboration session or the identifier of the first device or the user) in response to a user request to invite all proximity devices to the collaboration session; and determining that the second device has been within at least a predetermined time period of the first device's proximity based on the signal strength (e.g., RSSI) associated with the first announcement. In these embodiments where a first notification without information for requesting to join a collaborative session is provided, the invitation may include a second notification that includes information for requesting to join the collaborative session (e.g., a session identifier and an obfuscated identifier of the first device). In various embodiments, the second notification may be unencrypted or encrypted using information related to the first notification exchanged between the first and second devices (e.g., a key). In response to receiving the second notification, the second device may display a user interface (e.g., a proximity card or "prox" card) with optional options for requesting to join the collaborative session.

[0067] At box 904, the first device may respond to an invitation to receive a request to join a collaborative session from the second device. In one or more embodiments, the request may be received directly from the second device (e.g., using short-range communication, such as Bluetooth communication). In one or more embodiments, 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] At box 906, the first device may authorize the second device to control a collaborative session via a network (e.g., via a session server, such as session server 200 described herein). In one or more embodiments, the first device may authorize the second device in part based on determining that the second device is within proximity to the first device (e.g., within range of a short-range communication protocol, and / or within hearing range).

[0069] At box 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 via a third device (such as media output device 150). For example, a collaborative session may include the output of media content (e.g., audio content, video content, etc.) by the first device via a third device separate from the first device (e.g., by transmitting 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 an exemplary example, control commands from the second device may include selection of media content (e.g., from a media library accessible using a subscription associated with the first device). As an example, a collaborative session may include any or all of the following: a document editing session (e.g., multiple invited users providing control input to a collaborative document from their multiple corresponding devices), a data sharing session, a group communication session, a map building session, a music listening session or other audio content listening session, or a video viewing session. In various specific implementations, a collaborative session may include those incorporated herein by reference. Figure 11 and / or Figure 12 Any or all of the operations described.

[0070] Figure 10 A flowchart illustrating another example process 1000 for providing a nearby device invitation to an electronic device, according to a specific implementation of the art of this subject, is provided. For illustrative purposes, this document primarily refers to... Figure 1 The process 1000 is described using media output device 150, electronic device 104, and electronic device 110. However, the process 1000 is not limited to... Figure 1 The media output device 150, electronic device 104, and electronic device 110, 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). Further for 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. Furthermore, the blocks of process 1000 need not be performed in the order shown, and / or one or more blocks of process 1000 need not be performed and / or may be replaced by other operations.

[0071] like Figure 10As illustrated, at block 1002, an electronic device (e.g., electronic device 110) can receive an invitation to a collaborative session associated with a second device (e.g., electronic device 104) directly from the second device. In one or more embodiments, the first device can identify a contact (e.g., contact 502) of the second device stored at the first device based on the invitation. For example, in one or more embodiments, the invitation may include a value (e.g., the proximity 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 embodiments, identifying a contact may include generating a local hash value at the first device by hashing the value with each of one or more corresponding keys (e.g., key 504) stored at the first device that are associated with one or more corresponding contacts (e.g., contact 502) (including the contact). Identifying a contact may also include identifying the contact by identifying a local hash value that matches the value from the invitation hashed with the key.

[0072] In one or more other implementations, the invitation may be an unencrypted invitation broadcast by a second device (e.g., using a proximity communication protocol) in response to a user request from the second device to invite all nearby devices to the collaborative session. For example, the unencrypted invitation may include a session identifier and an obfuscated identifier from the second device.

[0073] At box 1004, the first device may respond to an invitation to provide a request to the second device to join a collaborative session. In one or more embodiments, the request may be provided to the second device directly (e.g., using short-range communication, such as Bluetooth communication). In one or more embodiments, 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 embodiments (e.g., in which a key is used to encrypt the invitation), providing a request to join a collaborative session may include obtaining an identifier of a contact stored at the first device (e.g., in user information 508), and providing the request to join the collaborative session along with the obtained identifier to the server (e.g., session server 200).

[0074] At box 1006, the first device may receive authorization for a control collaboration session for the first device from the second device. For example, the first device may receive authorization directly from the second device or through a network such as network 106.

[0075] At box 1008, the first device may (e.g., via a server such as session server 200 to the second device) provide control commands for controlling the output of the second device via a collaborative session. In one or more embodiments (e.g., in which a key is used to encrypt the invitation), providing the control commands may include obtaining an identifier of a contact stored on the first device (e.g., in user information 508) and providing the control commands along with the obtained identifier to a server (e.g., session server 200) for the collaborative session. The server may forward the control commands to the second device based on the identifier (e.g., by a communication address associated with the identifier stored on the first device that identifies the second device). In one or more embodiments, the second device may modify its output (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 commands, as illustrated herein by example. Figure 3 , Figure 9 and / or Figure 11 As described. For example, providing control commands for controlling the output of the second device may include providing the second device with a selection of media content to be 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 map building session, or a group communication session.

[0076] Figure 11 A flowchart illustrating an example process 1100 for coordinated control of an electronic device according to a specific implementation of the subject matter is provided. For illustrative purposes, this document primarily refers to... Figure 1 The process 1100 is described using media output device 150, electronic device 104, and electronic device 110. However, the process 1100 is not limited to... Figure 1 The media output device 150, electronic device 104, and electronic device 110, 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. Further for 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. Furthermore, the blocks of process 1100 need not be performed in the order shown, and / or one or more blocks of process 1100 need not be performed and / or may be replaced by other operations.

[0077] like Figure 11As illustrated, at block 1102, an electronic device (e.g., electronic device 104) that is outputting content (e.g., audio content) via a media output device separate from the first device (e.g., via a speaker, such as speaker 152 of media output device 150) can 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 specific embodiments, before the (e.g., audio) content is output by the first device via the media output device (e.g., speaker), and before the invitation is provided, the first device can provide a user-selectable option for allowing or denying the provision of the invitation (e.g., ...). Figure 4 (User-selectable option 400). In various specific implementations, the loudspeaker can be a loudspeaker in a vehicle, a portable loudspeaker, or a loudspeaker in a building.

[0078] In one or more specific implementations, the invitation may not contain identification information of the first device or the user of the first device. For example, the invitation may include a key and / or may 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., explicit) identifier of the first device, but cannot be used by any other device to derive an unobfuscated (e.g., explicit) identifier.

[0079] In one or more embodiments, providing an invitation may include providing an encrypted invitation to a trusted contact on the first device. In one or more embodiments, providing an invitation may include providing a scannable code to a 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 a camera or other sensor of the second device.

[0080] In one or more embodiments, the first device may (e.g., via selection of user-selectable option 402) receive a user request to invite a nearby device to control audio content being output by the first device via a speaker, and may provide an invitation by broadcasting an unencrypted invitation from the first device using a short-range wireless communication protocol in response to the user request.

[0081] At box 1104, the first device may respond to an invitation to 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). Figure 2(As described). In one or more embodiments, in response to a request and in part based on the determination that the second device is within proximity to the first device, the first device may grant authorization for the second device to control audio content.

[0082] At box 1106, following a request (e.g., and after authorization from the first device), the first device may receive from the second device a command for modifying content (e.g., audio) being output by the first device via a media output device (e.g., as incorporated herein by reference). Figure 2 (As described). In one or more embodiments, providing an invitation to a second device may include providing the invitation directly from the first device to the second device (e.g., using proximity communication, such as Bluetooth communication), and receiving a request may include receiving a request directly from the second device (e.g., using proximity communication, such as Bluetooth communication).

[0083] At box 1108, the first device may respond to a command to modify (e.g., audio) content being output by the first device via a media output device (e.g., as described herein). Figure 3 (As described). In one or more embodiments, providing an invitation to the second device may include providing the invitation directly from the first device to the second device (e.g., using short-range communication, such as Bluetooth communication), and receiving control commands may include receiving control commands from the second device at the first device via a network (e.g., via network 106, such as via a server, such as session server 200). In one or more embodiments, modifying (e.g., audio) content may include the first device obtaining different content (e.g., new songs, new episodes, new movies, etc.) from a server (e.g., content server 202), and providing the different content for output to a media output device (e.g., a speaker) via the first device.

[0084] In one or more specific embodiments, process 1100 may further include, while modified (e.g., audio) content is being output by the first device via a media output device, displaying attributes associated with the second device (e.g., attribute information 802) on a display (e.g., display 155) associated with the media output device (e.g., associated with a speaker) (e.g., display 155). Figure 8 (As described).

[0085] In one or more embodiments, modifying (e.g., audio) content being output by the first device via a media output device (e.g., a speaker) may include modifying the (e.g., audio) content in part based on a determination that the second device remains within the proximity range of the first device (e.g., based on proximity communication and / or proximity verification based on audio). In one or more embodiments, process 1100 may further include determining that the second device has moved away from the first device (e.g., beyond the proximal distance, such as outside the range of a proximity communication protocol and / or outside the hearing range of a speaker). The first device may terminate control of the (e.g., audio) content by the second device in response to determining that the second device has moved away from the first device. In one or more embodiments, in response to determining that the second device has moved away from the first device, the first device may also (e.g., via a network or another network) provide the second device with a playlist (or other summary) associated with a portion of the (e.g., audio) content output by the first device via a media output device (e.g., a speaker) when the second device has control over the (e.g., audio) content.

[0086] Figure 12 A flowchart illustrating another example process 1200 for coordinated control of electronic devices according to a specific implementation of the subject matter is provided. For illustrative purposes, this document primarily refers to... Figure 1 The process 1200 is described using media output device 150, electronic device 104, and electronic device 110. However, the process 1200 is not limited to... Figure 1 The media output device 150, electronic device 104, and electronic device 110, 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. Further for 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. Furthermore, the blocks of process 1200 need not be performed in the order shown, and / or one or more blocks of process 1200 need not be performed and / or may be replaced by other operations.

[0087] like Figure 12 As illustrated, at block 1202, an electronic device (e.g., electronic device 110) can receive an invitation (e.g., audio) 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. Figure 2 (As described).

[0088] In one or more embodiments, the first device may use encrypted information in the invitation and a key (e.g., key 504) previously configured by the first and second devices to identify a contact (e.g., contact 502) associated with a user of the second device and stored at the first device. In one or more embodiments, receiving an invitation may include receiving it directly from the second device at the first device (e.g., using proximity communication, such as Bluetooth communication), and providing a request may include providing a request directly from the first device to the second device. In one or more embodiments, receiving an invitation may include receiving the invitation based on the proximity of the second device to the first device (e.g., by the first device being within proximity communication range of the second device, and / or within hearing range of the second device and / or media output devices). In one or more embodiments, 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), and the first device may not have access to the service (e.g., the first device does not have and / or is not logged into a subscription to the service).

[0089] At box 1204, the first device may respond to an invitation to provide the second device with a request to control the content (e.g., audio) being output by the second device via a media output device (e.g., as described herein). Figure 2 (As described). Requests can be made directly from a first device (e.g., using a proximity communication profile) or via a network (e.g., network 106) and / or a server (e.g., session server 200).

[0090] At box 1206, the first device may, upon request, provide the second device with a command for modifying content (e.g., audio) being output by the first device via a media output device (e.g., as incorporated herein by reference). Figure 3 (As described). For example, commands can 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 this technology is the collection and use of data available from specific and legitimate sources for the purpose of inviting nearby devices and / or coordinating the control of electronic devices. This disclosure contemplates that, in some instances, the collected data may include personal information data that uniquely identifies or can be used to identify specific individuals. Such personal information data may include voice samples, voice profiles, demographic data, location-based data, online identifiers, telephone numbers, email addresses, home addresses, biometric data or records related 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 recognizes that the use of such personal information data in the techniques of this invention can be used to benefit users. For example, personal information data can be used for nearby device invitations and / or collaborative control of electronic devices.

[0093] This disclosure anticipates that entities responsible for collecting, analyzing, disclosing, transmitting, storing, or otherwise using such personal information data will comply with established privacy policies and / or privacy practices. Specifically, it is expected that such entities will implement and consistently apply privacy practices generally recognized as meeting or exceeding industry or governmental requirements for protecting user privacy. Such information regarding the use of personal data should be prominently displayed and readily accessible to users, and should be updated as data collection and / or use change. Users' personal information should be collected only for lawful use. Furthermore, such collection / sharing should only occur after receiving user consent or other lawful grounds provided for in applicable law. Additionally, such entities should consider taking any necessary steps to protect and safeguard the right to access such personal information data and ensure that other entities with access to such personal information data comply with their privacy policies and procedures. Furthermore, such entities may be subject to third-party assessments to demonstrate their compliance with widely accepted privacy policies and privacy measures. Moreover, policies and practices should be tailored to the specific types of personal information data collected and / or accessed, and made applicable to applicable laws and standards, including specific jurisdictional considerations that may allow for the imposition of higher standards. For example, in the United States, the collection or access to certain health data may be governed by federal and / or state laws, such as the Health Insurance Portability and Accountability Act (HIPAA); while health data in other countries may be subject to other regulations and policies and should be handled accordingly.

[0094] Regardless of the foregoing, this disclosure also anticipates implementation schemes that allow users to selectively block the use or access to personal information data. That is, this disclosure anticipates providing hardware and / or software components to prevent or block access to such personal information data. For example, in examples of nearby device invitations and / or collaborative control of electronic devices, this technology can be configured to allow users to opt-in or opt-out during or at any time after registering for the service. In addition to providing opt-in and opt-out options, this disclosure also anticipates providing notifications related to access to or use of personal information. For example, users may be notified when downloading an application that their personal information data will be accessed, and then reminded again just before the application accesses the personal information data.

[0095] Furthermore, the intent of this disclosure is that personal information data should be managed and processed in a manner that minimizes the risk of unintentional or unauthorized access or use. Once data is no longer needed, this risk can be minimized by restricting data collection and deleting data. Additionally, and where applicable, including in certain health-related applications, data deidentification can be used to protect user privacy. Deidentification can 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 the address level or at a level insufficient for facial recognition), controlling how data is stored (e.g., aggregating data among users), and / or other methods such as differentiated privacy.

[0096] Therefore, while this disclosure broadly covers the use of personal information data to implement one or more of the various disclosed embodiments, it is also contemplated that various embodiments can be implemented without access to such personal information data. That is, various embodiments of the present invention will not become inoperable due to the absence of all or part of such personal information data.

[0097] Figure 13 An electronic system 1300 is illustrated that can be used to implement one or more specific embodiments of the subject matter. The electronic system 1300 can be as follows: Figure 1 The media output device 150, electronic device 104, electronic device 110, electronic device 115, and / or server 120 shown are and / or may be part of them. Electronic system 1300 may include various types of computer-readable media and interfaces for various other types of computer-readable media. Electronic system 1300 includes a bus 1308, one or more processing units 1312, system memory 1304 (and / or buffers), ROM 1310, persistent storage device 1302, input device interface 1314, output device interface 1306, and one or more network interfaces 1316, or subsets and variations thereof.

[0098] Bus 1308 generally represents all system buses, peripheral buses, and chipset buses that communicatively connect multiple internal devices of electronic system 1300. In one or more embodiments, bus 1308 communicatively connects one or more processing units 1312 to ROM 1310, system memory 1304, and persistent storage device 1302. One or more processing units 1312 retrieve instructions to be executed and data to be processed from these various memory units in order to perform the processes disclosed in this subject matter. In different embodiments, one or more processing units 1312 may be a single processor or a multi-core processor.

[0099] ROM 1310 stores static data and instructions required by one or more processing units 1312 and other modules of electronic system 1300. On the other hand, persistent storage device 1302 can be a read-write memory device. Persistent storage device 1302 can be a non-volatile memory cell that stores instructions and data even when electronic system 1300 is powered off. In one or more embodiments, mass storage devices (such as disks or optical discs and their corresponding disk drives) can be used as persistent storage device 1302.

[0100] In one or more embodiments, a removable storage device (such as a floppy disk, flash drive, and its corresponding disk drive) may be used as persistent storage device 1302. Like persistent storage device 1302, system memory 1304 may be a read-write memory device. However, unlike persistent storage device 1302, system memory 1304 may be volatile read-write memory, such as random access memory. System memory 1304 may store any instructions and data that one or more processing units 1312 may need during operation. In one or more embodiments, the processes disclosed in this subject matter are stored in system memory 1304, persistent storage device 1302, and / or ROM 1310 (each implemented as a non-transitory computer-readable medium). One or more processing units 1312 retrieve instructions to be executed and data to be processed from these various memory units to execute the processes of one or more embodiments.

[0101] Bus 1308 is also connected to input device interface 1314 and output device interface 1306. Input device interface 1314 enables a user to communicate information to electronic system 1300 and select commands. Input devices that can be used with input device interface 1314 may include, for example, an alphanumeric keypad and pointing devices (also referred to as "cursor control devices"). Output device interface 1306 may, for example, enable the display of images generated by electronic system 1300. Output devices that can be used with 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 device for outputting information. One or more embodiments may include a device that functions as both an input device and an output device, such as a touchscreen. In these embodiments, the feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, verbal, or tactile input.

[0102] Finally, as Figure 13As shown, bus 1308 also couples electronic system 1300 to one or more networks and / or one or more network nodes via one or more network interfaces 1316. In this way, electronic system 1300 may be part of a computer network (such as a LAN, wide area network (“WAN”), or intranet), or may be part of one of the networks (such as the Internet). Any or all components of electronic system 1300 may be used in conjunction with the disclosures herein.

[0103] These functions can be implemented in computer software, firmware, or hardware. The technology can be implemented using one or more computer program products. Programmable processors and computers can be included in or packaged as mobile devices. These processes and logical flows can be executed by one or more programmable processors and one or more programmable logic circuits. General-purpose and special-purpose computing devices, as well as storage devices, can be interconnected via communication networks.

[0104] Some specific implementations include electronic components such as microprocessors, storage devices, and memories that store computer program instructions in machine-readable or computer-readable media (also referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Examples of such computer-readable media include RAM, ROM, read-only optical discs (CD-ROM), recordable optical discs (CD-R), rewritable optical discs (CD-RW), read-only digital versatile optical discs (e.g., DVD-ROM, dual-layer DVD-ROM), various recordable / rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and / or solid-state hard disk drives, read-only and recordable Blu-ray drives. ® Disks, high-density optical discs, any other optical or magnetic media, and floppy disks. Computer-readable media may store computer programs that can be executed by at least one processing unit and include a set of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as machine code generated by a compiler, and files that include higher-level code that can be executed by a computer, electronic component, or microprocessor using an interpreter.

[0105] While the above discussion primarily concerns microprocessors or multi-core processors that execute software, 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 on the circuit itself.

[0106] As used in this specification and any claim of this application, the terms "computer," "server," "processor," and "memory" refer to electronic or other technical devices. These terms exclude persons or groups of persons. For the purposes of this specification, the terms "displayed" or "being displayed" mean displayed on an electronic device. As used in this specification and any claim of this application, the terms "computer-readable medium" and "computer-readable medium" are strictly limited to tangible, touchable objects that store information in a form readable by a computer. These terms do not include any wireless signals, wired download signals, or any other transient signals.

[0107] To provide interaction with the user, specific embodiments of the subject matter described in this specification can be implemented on a computer having a display device for displaying information to the user (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) and a keyboard and pointing device (e.g., a mouse or trackball) that the user can use to provide input to the computer. Other types of devices can also be used to provide interaction with the user; for example, feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, verbal, or tactile input. Furthermore, the computer can interact with the user by transmitting documents to and receiving documents from the device used by the user; for example, by transmitting a webpage to a web browser in response to a request received from a web browser on the user's client device.

[0108] Implementations of the subject matter described in this specification can be implemented in a computing system that includes back-end components, such as a data server, or middleware components, such as an application server, or front-end components, such as a client computer with a graphical user interface or web browser through which a user can interact with a specific implementation of the subject matter described in this specification, or any combination of one or more such back-end components, middleware components, or front-end components. The components of the system can be interconnected via digital data communication (e.g., a communication network) of any form or medium. Examples of communication networks include local area networks (“LANs”) and wide area networks (“WANs”), interconnected networks (e.g., the Internet) and peer-to-peer networks (e.g., self-organizing peer-to-peer networks).

[0109] A computing system may include clients and servers. Clients and servers are generally geographically isolated but can interact via a communication network. The client-server relationship is established by computer programs running on respective computers and having a client-server relationship with each other. In some implementations, the server sends data (e.g., HTML pages) to the client device (e.g., to display data to a user interacting with the client device and to receive user input from the user interacting with the client device). Data generated at the client device (e.g., the result of user interaction) can be received from the client device at the server.

[0110] Those skilled in the art will recognize 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. To illustrate this interchangeability between hardware and software, various exemplary blocks, modules, elements, components, methods, and algorithms have been broadly described above in terms of their functionality. Whether such functionality is implemented as hardware or software depends on the specific application and the design constraints imposed on the overall system. The functionality may be implemented differently for each specific application. Various components and blocks may be arranged in different ways (e.g., in different orders, or partitioned in different ways) without departing from the scope of the subject matter.

[0111] It should be understood that the specific order or hierarchical structure of the steps in the process disclosed in this invention is an example of the exemplary method. Based on design preferences, it should be understood that the specific order or hierarchical structure of the steps in the process can be rearranged. Some steps in the process can be performed simultaneously. The appended method claims present elements of various steps in the sample order and are not intended to limit one to the presented specific order or hierarchical structure.

[0112] The preceding description is provided to enable any person skilled in the art to practice the various aspects described herein. The preceding description provides various examples of the subject matter, and the subject matter is not limited to these examples. Various modifications to these aspects will be apparent to those skilled in the art, and the general principles defined herein may be applied to other aspects. Therefore, this claim is not intended to be limited to the aspects shown herein, but rather to be consistent with the language of the claim, wherein reference to the singular form of an element is not intended to mean “only one,” but rather “one or more,” unless specifically indicated. Unless otherwise specifically stated, the term “some” means one or more. Male pronouns (e.g., his) include female and neutral (e.g., her and its), and vice versa. Titles and subtitles (if any) are for convenience only and do not limit the invention described herein.

[0113] The predicates “configured to,” “operable to,” and “programmed to” do not imply any specific tangible or intangible modification to a particular subject but are intended to be used interchangeably. For example, a component or a processor configured to monitor and control operations 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 can be interpreted as either programmed to execute code or operable to execute code.

[0114] As used herein, the term "automatic" can include execution by a computer or machine without user intervention; for example, by instructions in response to a predicate action of a computer or machine or other initiating mechanism. The word "example" is used herein to mean "serving as an example or illustration." No aspect or design described herein as an "example" is necessarily to be construed as preferred or advantageous over other aspects or designs.

[0115] Phrases such as "aspect" do not imply that this aspect is essential to the subject matter or that this aspect applies to all configurations of the subject matter. Disclosures relating to an aspect may apply to all configurations, or one or more configurations. An aspect may provide one or more examples. Phrases such as "aspect" may refer to one or more aspects, or vice versa. Phrases such as "implementation" do not imply that this implementation is essential to the subject matter or that this implementation applies to all configurations of the subject matter. Disclosures relating to an implementation may apply to all implementations, or one or more implementations. An implementation may provide one or more examples. Phrases such as "implementation" may refer to one or more implementations, or vice versa. Phrases such as "configuration" do not imply that this configuration is essential to the subject matter or that this configuration applies to all configurations of the subject matter. Disclosures relating to a configuration may apply to all configurations or one or more configurations. A configuration may provide one or more examples. Phrases such as "configuration" may refer to one or more configurations, or vice versa.

[0116] All structural and functional equivalents of elements throughout the various aspects described herein that are known or later become apparent to those skilled in the art are expressly incorporated herein by reference and are intended to be covered by the claims. Furthermore, nothing disclosed herein is intended to be made public, regardless of whether such disclosure is expressly stated in the claims. No claim element should be interpreted in accordance with 35 USC §112(f) unless the element is expressly stated using the phrase “component for…” or, in the case of a method claim, using the phrase “step for…”.

Claims

1. A method comprising: providing, by a first device directly to a second device, an invitation for a collaborative session associated with the first device; receiving, by the first device from the second device, a request to join the collaborative session in response to the invitation; providing, by the first device from the first device to the second device over a network, authorization for the second device to control the collaborative session; and modifying, by the first device, output of the first device based on a control command from the second device. encrypting at least a portion of the invitation prior to providing the invitation using a key previously configured by the first device and the second device.

2. The method of claim 1, wherein the invitation is an encrypted invitation, and wherein the method further comprises: configuring, by the first device, the key in response to identifying a contact for the second device stored at the first device.

3. The method of claim 2, further comprising: configuring, by the first device, the key in response to identifying a previous communication between the first device and the second device.

4. The method of claim 2, further comprising:

5. The method of claim 2, wherein the encrypted invitation includes a hash value of the key and connection information for the collaborative session. broadcasting an unencrypted invitation in response to a user request to invite all nearby devices to the collaborative session.

6. The method of claim 1, wherein providing the invitation comprises: providing the invitation based on a determination by the first device that the second device has been within a proximal range of the first device for at least a predetermined period of time.

7. The method of claim 1, wherein providing the invitation comprises: determining, by the first device prior to providing the invitation, that the second device has been within the proximal range of the first device for at least the predetermined period of time by:

8. The method of claim 7, further comprising: broadcasting, by the first device in response to a user request to invite all proximal devices to the collaborative session, a first advertisement that does not include information for requesting to join the collaborative session; and determining that the second device has been within the proximal range of the first device for at least the predetermined period of time based on a signal strength associated with the first advertisement.

9. The method of claim 8, wherein the invitation includes a second advertisement that includes the information for requesting to join the collaborative session.

10. The method of claim 1, wherein the collaborative session includes outputting, by the first device, media content via a third device separate from the first device, and wherein the control command from the second device includes a selection of the media content.

11. The method of claim 1, wherein the collaborative session includes a document editing session.

12. The method of claim 1, wherein the collaborative session includes a data sharing session.

13. The method of claim 1, wherein the collaborative session includes a group communication session.

14. A method comprising: receiving, by a first device directly from a second device, an invitation for a collaborative session associated with the second device; providing, by the first device to the second device, a request to join the collaborative session in response to the invitation; receiving, by the first device at the first device from the second device over a network, authorization for the first device to control the collaborative session; and ​ ​ provide, by the first device, a control command for controlling output of the second device via the collaborative session.

15. The method of claim 14, further comprising: identifying, by the first device and based on the invitation, a contact of the second device stored at the first device.

16. The method of claim 15, wherein the invitation includes a value, and the value is hashed with a key, and wherein identifying the contact comprises: generating a plurality of local hash values at the first device by hashing the value with each of a plurality of respective keys stored at the first device in relation to a plurality of respective contacts stored at the first device including the contact; and identifying the contact by identifying one of the local hash values that matches the value from the invitation hashed with the key.

17. The method of claim 16, wherein providing the request to join the collaborative session comprises: obtaining an identifier of the contact stored at the first device; and providing the request to join the collaborative session to a server along with the obtained identifier.

18. The method of claim 14, wherein providing the control command for controlling the output of the second device comprises: provide, from the first device to the second device, a selection of media content for output by the second device.

19. The method of claim 14, wherein providing the control command to the second device over the network comprises: provide the request to a server for the collaborative session for forwarding by the server to the second device.

20. The method of claim 14, wherein providing the request to the second device comprises: provide the request directly from the first device to the second device.

21. The method of claim 14, wherein the collaborative session comprises at least one of: a media output session, a document editing session, a data sharing session, a map building session, or a group communication session.

22. A device, comprising: a memory; and one or more processors configured to: provide, directly to a second device, an invitation to a collaborative session associated with the device; receive, from the second device, a request to join the collaborative session in response to the invitation; provide, to the second device over a network, authorization for the second device to control the collaborative session; and modify output of the device based on control commands from the second device.

23. The device of claim 22, wherein the collaborative session comprises output of media content by the device via a third device separate from the device, and wherein the control commands from the second device comprise a selection of the media content.