Patent Description:
The present description relates generally to user switching for multi-user devices, and more particularly to user switching for multi-user devices on a per application basis.

Multiple different devices in a home may be communicably coupled together to form a connected home environment. For example, a connected home environment may include a smart thermostat, smart switches, smart light bulbs, and the like. Multi-user devices may be included in the connected home environment. For example, <CIT> discloses a method for facilitating multi-user interaction with a data processing system (e.g. tablet) comprising individual profiles for respective individual users as well a family profile for a collective family user.

Electronic devices commonly provide applications, services, and/or other features that are associated with, or connected to, external accounts for the user of the device. For example, a streaming application on a mobile phone may be associated with a user account at a streaming service provider server, and a photo album application may be configured to display photos that are stored at a cloud server in connection with a cloud account of the user. In this way, applications, services, and/or other features provided by the electronic device can leverage the processing power, storage, and/or other resources of various remote servers with which the user of the electronic device maintains an account, and service providers can control access to various applications and services for account holders.

A multi-user device may facilitate user switching to allow various authorized or registered users of the multi-user device to operate the multi-user device. Multi-user devices can also provide applications, services, and/or other features that are associated with, or connected to, external accounts for a currently active, or logged-in, user of the multi-user device. Thus, when the active user of the multi-user device switches, the external accounts used by the applications, services, etc. may also change.

However, user switching can be become particularly complicated when the multi-user device is part of a connected home environment that is managed by one of the users, such as a primary user. In this regard, one or more processes or applications of the multi-user device may need to remain associated with the external account of the primary user even when the currently active or logged-in, user of the multi-user devices switches.

The disclosed solution maintains a logical mapping between all accounts of each user when the current or active user account on a multi-user device is switched. As described in further detail herein, the solution is implemented in a way that is developer friendly, in that an application developer does not need to know about or manage data for the multiple accounts of each user, or even be aware that there are multiple users of the multi-user device. With the disclosed solution, an application developer can provide an application that accommodates user switching between multiple users of a multi-user device by, for example, simply opting into a multi-user option provided a framework of the multi-user device. Conversely, if the application should remain associated with the external account of the primary user regardless of and/or irrespective of which user is currently active, and/or if the application developer does not want user switching for the application managed by the multi-user device, the application developer may opt out of the multi-user option.

Internally, the multi-user device generates a profile for each user of the device, keeping track of each account of each user in that user's profile before, during, and/or after user-switching events at the multi-user device. Thus, when an application and/or service is launched, the multi-user device determines whether the application/service is configured to accommodate user switching and accordingly facilitates providing the application/service with access to the appropriate external user account information. In this manner, the subject technology can provide for user switching for a multi-user device that is effectuated and/or controlled on a per application/service basis.

<FIG> illustrates an example network environment <NUM> that includes a multi-user device in accordance with one or more implementations. Not all of the depicted components may be used in all implementations, however, and one or more implementations may include additional or different components than those shown in the figure. Additional components, different components, or fewer components may be provided.

In the example of <FIG>, a network environment <NUM> includes electronic devices <NUM>, <NUM>, <NUM>, <NUM>, <NUM> and <NUM> (hereinafter "the electronic devices <NUM>-<NUM>"), a local area network ("LAN") <NUM>, a network <NUM>, and a content provider <NUM> and one or more cloud-based service(s) <NUM> (hereinafter "the servers <NUM>-<NUM>"). In one or more implementations, the electronic devices <NUM>-<NUM> may part of a connected home environment <NUM>, and the LAN <NUM> may communicatively (directly or indirectly) couple any two or more of the electronic devices <NUM>-<NUM> within the connected home environment <NUM>. Moreover, the network <NUM> may communicatively (directly or indirectly) couple any two or more of the electronic devices <NUM>-<NUM> with the content provider <NUM> and/or the cloud-based services <NUM>, for example, in conjunction with the LAN <NUM>.

In one or more implementations, the LAN <NUM> may include one or more different network devices/network medium and/or may utilize one or more different wireless and/or wired network technologies, such as Ethernet, optical, Wi-Fi, Bluetooth, Zigbee, Powerline over Ethernet, coaxial, Ethernet, Z-Wave, cellular, or generally any wireless and/or wired network technology that may communicatively couple two or more devices.

In one or more implementations, the network <NUM> may be an interconnected network of devices that may include, and/or may be communicatively coupled to, the Internet. For explanatory purposes, the network environment <NUM> is illustrated in <FIG> as including electronic devices <NUM>-<NUM>, and the servers <NUM>-<NUM>; however, the network environment <NUM> may include any number of electronic devices and any number of servers.

One or more of the electronic devices <NUM>-<NUM> may be, for example, a portable computing device such as a laptop computer, a smartphone, a smart speaker, a peripheral device (e.g., a digital camera, headphones), a set top box including a digital media player, a tablet device, a wearable device such as a smartwatch or a band, a connected home device, such as a wireless camera, a router and/or wireless access point, a wireless access device (e.g., a door lock), a smart thermostat, smart light bulbs, home security devices (e.g., motion sensors, door/window sensors, etc.), smart outlets, smart switches, and the like, or any other appropriate device that includes and/or is communicatively coupled to, for example, one or more wired or wireless interfaces, such as WLAN radios, cellular radios, Bluetooth radios, Zigbee radios, near field communication (NFC) radios, and/or other wireless radios.

By way of example, in <FIG> each of the electronic devices <NUM>-<NUM> is depicted as a smart speaker, the electronic device <NUM> is depicted as a smartphone, the electronic device <NUM> is depicted as a smartwatch, and each of the electronic devices <NUM>-<NUM> is depicted as a set top box which may include a digital media player (e.g., configured to receive digital data such as music and/or video from one or more services associated with one or more accounts of one or more users, and stream the digital data to a display device such as a television or other video display) and/or a digital arcade (e.g., configured to providing gaming applications associated with one or more gaming accounts of one or more users). In one or more implementations, one or more of the electronic devices <NUM>-<NUM> may be integrated into its corresponding display device. One or more of the electronic devices <NUM>-<NUM> may be, and/or may include all or part of, the device discussed below with respect to <FIG>, and/or the electronic system discussed below with respect to <FIG>.

In one or more implementations, the electronic devices <NUM>-<NUM> may correspond to multi-user devices. One or more of the multi-user devices may be associated with a home account and usable to provide content and/or respond to requests (e.g., voice requests) for multiple users associated with respective user accounts of the connected home environment <NUM> (e.g., authorized users). One of more of the electronic devices <NUM>-<NUM> may be multi-user devices that are configured allow selection of an active user from multiple users of the electronic device.

In one or more implementations, the electronic device <NUM> may correspond to a personal device associated with a user account (e.g., of a user named "Alison"). Alison may reside in or be a guest of the home/residence (e.g., corresponding to the connected home environment <NUM>), which is also the home of another user (e.g., named "Bob"). The electronic device <NUM> may be associated with a user account for Bob, and the electronic devices <NUM>-<NUM> may correspond to a home account for Bob. For example, the respective users may register and/or associate their respective electronic devices <NUM>-<NUM> to their respective user accounts through a service provider, such as through an account service of the cloud-based services <NUM>.

In one or more implementations, Bob may interact with the electronic device <NUM> in order to access and/or output content (e.g., video and/or music available through Bob's content library) on one or more of the electronic devices <NUM>-<NUM>. Moreover, (e.g., based on an invitation from Bob via the electronic device <NUM> and acceptance by Alison via the electronic device <NUM> or via direct registration of the user account of Allison at one or more of electronic devices <NUM>-<NUM>), Alison's user account may be associated with, and accessible on, one or more of the electronic devices <NUM>-<NUM> (e.g., the multi-user devices) in Bob's connected home environment <NUM>. Thus, in one example, Alison may use her electronic device <NUM> as a remote control in order to output content (e.g., content that is provided by the content provider <NUM> in association with her content library) on one or more of the electronic devices <NUM>-<NUM>.

Alternatively or in addition, Alison may access her media content (e.g., music and/or video) on one or more of the electronic devices <NUM>-<NUM> without using her electronic device <NUM>. For example, the electronic devices <NUM>-<NUM> (e.g., smart speakers) may have a virtual assistant application running thereon, and Alison may provide a voice request to stream music (e.g., via the content provider <NUM>) in association with her user account (e.g., content library). In another example, the electronic devices <NUM>-<NUM> (e.g., set top boxes) may have respective remote control devices that Alison can use (e.g., via physical button(s) and/or voice requests spoken to the remote) to output video and/or music via the content provider <NUM> and/or the cloud-based services <NUM> in association with her user account(s).

In one or more implementations, the content provider <NUM> may be configured to provide content (e.g., media content and/or other type(s) of content) to a device (e.g., one or more of the electronic devices <NUM>-<NUM>). In one or more implementations, the cloud-based services <NUM> may include an account service configured to perform operations in association with user accounts such as: storing data (e.g., voice profiles, user settings/preferences, billing information, purchased content information, purchased service information, etc.) with respect to a user account, sharing and/or sending data with other users with respect to a user account, and/or associating devices and/or groups of devices (e.g., within the connected home environment <NUM>) with user accounts such as user purchase accounts that may provide access to authorized content, such as movies, music, and the like.

In one or more implementations, the cloud-based services <NUM> may also include a cloud storage service configured to perform operations in association with cloud accounts, such as backing up device data with respect to a cloud account, synchronizing data (e.g., messages, photos, videos, etc.) across multiple devices of a user having a cloud account, storing passwords, tokens, and/or preferences in association with the cloud account, and/or storing files such as documents and/or photos, etc. in association with the cloud account. In one or more implementations, cloud-based services <NUM> may also include a gaming service configured to perform operations in association with a game account such as: controlling access to gaming applications based on the game account, and/or storing gaming data (e.g., data indicating a state of play or user settings or parameters for each of one or more games) in association with a game account.

One or more of the servers <NUM>-<NUM> may be, and/or may include all or part of the device discussed below with respect to <FIG>, and/or the electronic system discussed below with respect to <FIG>. Each of the servers <NUM>-<NUM> may include one or more servers, such as a cloud of servers. For explanatory purposes, a single server is shown and discussed with respect to various operations for each of the servers <NUM>-<NUM>. However, these and other operations discussed herein may be performed by one or more servers, and each different operation may be performed by the same or different servers.

<FIG> illustrates an example device that may implement a system for switching between users of a multi-user device in accordance with one or more implementations. For example, the device <NUM> of <FIG> can correspond to any of the electronic devices <NUM>-<NUM> and/or the servers <NUM>-<NUM> of <FIG>. Not all of the depicted components may be used in all implementations, however, and one or more implementations may include additional or different components than those shown in the figure. Additional components, different components, or fewer components may be provided.

The device <NUM> may include a processor <NUM>, a memory <NUM>, a communication interface <NUM> and an audio input device <NUM>. The processor <NUM> may include suitable logic, circuitry, and/or code that enable processing data and/or controlling operations of the device <NUM>. In this regard, the processor <NUM> may be enabled to provide control signals to various other components of the device <NUM>. The processor <NUM> may also control transfers of data between various portions of the device <NUM>. Additionally, the processor <NUM> may enable implementation of an operating system or otherwise execute code to manage operations of the device <NUM>.

The memory <NUM> may include suitable logic, circuitry, and/or code that enable storage of various types of information such as received data, generated data, code, and/or configuration information. The memory <NUM> may include, for example, random access memory (RAM), read-only memory (ROM), flash, and/or magnetic storage.

In one or more implementations, in a case where the device <NUM> corresponds to one of the electronic devices <NUM>-<NUM>, the memory <NUM> may store one or more components configured to receive a request to switch an active user of the device <NUM> (e.g., from a primary user to a secondary user, from a secondary user to a primary user, or from one secondary user to another secondary user) and provide for switching the active user as described herein. Moreover, the audio input device <NUM> may include suitable logic, circuitry, and/or code for capturing audio input, such as voice requests. For example, the audio input device <NUM> may include one or more microphones and/or other devices for capturing audio input.

In one or more implementations, in a case where the device <NUM> corresponds to the cloud-based services <NUM>, the memory <NUM> may store user profile data (e.g., voice profiles), user billing data, user purchase data, and/or configuration settings associated with a home environment (e.g., the connected home environment <NUM>) in association with user purchase accounts, may store data such as photos, messages or the like associated with cloud accounts of various users, and/or may store gaming data associated with game accounts of various users, as described in further detail hereinafter.

The communication interface <NUM> may include suitable logic, circuitry, and/or code that enables wired or wireless communication, such as between any of the electronic devices <NUM>-<NUM> and/or the servers <NUM>-<NUM> over the network <NUM> (e.g., in conjunction with the LAN <NUM>). The communication interface <NUM> may include, for example, one or more of a Bluetooth communication interface, a cellular interface, an NFC interface, a Zigbee communication interface, a WLAN communication interface, a USB communication interface, or generally any communication interface.

In one or more implementations, one or more of the processor <NUM>, the memory <NUM>, the communication interface <NUM>, the audio input device <NUM>, and/or one or more portions thereof, may be implemented in software (e.g., subroutines and code), may be implemented in hardware (e.g., an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), a Programmable Logic Device (PLD), a controller, a state machine, gated logic, discrete hardware components, or any other suitable devices) and/or a combination of both.

When switching between users on a multi-user device (e.g., switching between user accounts on a connected home device such as a set top box or a smart speaker), the subject technology allows some applications, functions, services, games, etc. to switch to the new user and some to remain associated with the prior user. For example, it can be problematic if an application or game that a secondary user is running on the device accesses application data or game data for the primary user of that device. For example, a secondary user playing a game on the device after switching the device to their user account may find themselves playing the game as the primary user, or at a level recently played by the primary user (e.g., if the game accesses game history data associated with the primary user's gaming service account), rather than as themselves at their own level. It can also be problematic if a multi-user device that is part of a connected home environment is switched out of the connected home environment when the active user of the multi-user device is switched (e.g., away from the primary user associated with the home environment to a secondary user).

The user switching system and methods disclosed herein allow each user of a multi-user device to operate aspects of the device using their own user-specific data when appropriate, main maintaining the association of other aspects of the device with the primary user's data when appropriate, as described herein.

<FIG> illustrates an example multi-user device, implemented as a set top box, that can provide for user switching between multiple users. As illustrated in <FIG>, an electronic device <NUM> is implemented as a multi-user device that can provide applications (apps) such as a home app <NUM>, a streaming app <NUM>, a purchased content app <NUM>, a photos app <NUM>, a files app <NUM>, and a game app <NUM>. Although these examples of apps that can be provided by a multi-user device are described in connection with <FIG>, it should be appreciated that electronic device <NUM> can include more or fewer apps, different apps, and/or other features and/or components.

In the example of <FIG>, home app <NUM> and purchased content app <NUM> are configured to communicate with an account service <NUM> of cloud-based services <NUM>. Home app <NUM> and purchased content app <NUM> may access account information such as billing information, profile information, connected home environment information, etc. from the account service <NUM> using a user purchase account identifier for a user of electronic device <NUM>.

Home app <NUM> may be configured to allow the user of electronic device <NUM> to control other devices in a connected home environment such as one or more of electronic devices <NUM>, <NUM>, and <NUM> of connected home environment <NUM> and/or may allow the user of another electronic device in the connected home environment <NUM> to control electronic device <NUM>. Home app <NUM> may be associated with a user purchase account of a primary user of the electronic device <NUM> that is also the primary user of one or more of electronic devices <NUM>, <NUM>, and <NUM> of connected home environment <NUM>. When the active user of electronic device <NUM> is switched from the primary user to a secondary user (or between secondary users), electronic device <NUM> maintains the association of home app <NUM> with the account of the primary user. In this way, user switching at electronic device <NUM> may not affect the connected state of the connected home environment.

Purchased content app <NUM> may allow a user to access purchased content such as purchased movies, television shows, and/or purchased or subscribed services such as digital media (e.g., music or video) streaming services purchased by that user in association with their user purchase account. In contrast to the home app <NUM>, when the active user of electronic device <NUM> is switched from the primary user to a secondary user (or between secondary users), electronic device <NUM> switches the association of purchased content app <NUM> to the user purchase account of the new active user. In this way, when the new active user opens the purchased content app <NUM>, the new active user has access to their own purchased content via the purchased content app <NUM> (rather than access to purchased/subscribed content of the prior user's purchased content).

In the example of <FIG>, photos app <NUM> and files app <NUM> are configured to communicate with a cloud storage service <NUM> of cloud-based services <NUM>. Photos app <NUM> may be configured to display photos and/or videos stored at the cloud storage service <NUM> using a cloud account identifier for a user of electronic device <NUM>. Photos app <NUM> may download some or all of the photos and/or videos stored at cloud storage service <NUM> so that they can be readily available for viewing with the electronic device <NUM>. Files app <NUM> may be configured to provide access to one or more files and/or file folders stored for a user at the cloud storage service <NUM>.

When the active user of electronic device <NUM> is switched from the primary user to a secondary user (or between secondary users), electronic device <NUM> maintains the association of photos app <NUM> with the cloud account of the primary user. In this way, user switching at electronic device <NUM> does not cause frequent massive data transfers between electronic device <NUM> and cloud storage service <NUM> to pre-load the photos of a particular user to the electronic device <NUM>. In contrast to the photos app <NUM>, when the active user of electronic device <NUM> is switched from the primary user to a secondary user (or between secondary users), electronic device <NUM> switches the association of files app <NUM> to the cloud account of the new active user. In this way, when the new active user opens the files app <NUM>, the new active user has access to their own files via the files app <NUM> (rather access to the prior user's files).

In the example of <FIG>, game app <NUM> may be configured to communicate with a gaming service <NUM> of cloud-based services <NUM>. Game app <NUM> may be configured to interactively provide a gaming experience to a user of electronic device <NUM>. Game app <NUM> may determine whether a user has access to the game and/or may obtain gaming data such as game progress data (e.g., data indicating a highest level reached and/or in-game rewards achieved) from the gaming service <NUM> using a game account identifier for an active user of electronic device <NUM>.

When the active user of electronic device <NUM> is switched from the primary user to a secondary user (or between secondary users), electronic device <NUM> switches the association of game app <NUM> to the game account of the current active user. In this way, user switching at electronic device <NUM> ensures that each user of game app <NUM> plays the game as themselves (including using their own avatar and/or from the last level reached) rather than as the primary or previous user.

In order to allow the electronic device <NUM> to determine whether to switch the association of each application when the active user is switched, each application at electronic device <NUM> may be configured as a multi-user application or a single user application. For example, each application may be configured as a multi-user application or a single user application by an active user flag <NUM> that can be selected or de-selected, respectively, such as by the developer of each application. In the example of <FIG>, the active user flag <NUM> is selected for purchased content app <NUM>, files app <NUM>, and game app <NUM> (e.g., so that user-specific data for the current active user of the electronic device <NUM> is used for operation of that application, as described above), and active user flag <NUM> is unselected for home app <NUM>, photos app <NUM>, and streaming app <NUM> (e.g., so that data for the primary user of electronic device <NUM> is used for the operation of that application, regardless of and/or irrespective of which user is currently the active user of the device).

As discussed in further detail herein, when an application is launched at electronic device <NUM>, a system level process may receive a request for global variables, including global variables that provide access and/or reference to user-specific data, such as a pointer to, and/or entitlement/privilege for, user-specific data. The system level processes may provide the application with user information for the primary user of the device if the active user flag <NUM> is not selected, and may provide the application with the global variables for the active user of the device (whether the active user is the primary user of one of one or more secondary users) if the active user flag <NUM> is selected. In this way, electronic device <NUM> can manage the user switching for multiple applications associated with multiple services for multiple users.

In one or more implementations, the global variables that are provided to an application may direct the application to information corresponding to a user purchase account identifier (ID), a cloud account identifier (ID) and/or a gaming account identifier (ID) that allow the application to access the relevant data for a relevant user at the electronic device and/or at the relevant cloud-based service. In one or more implementations, the information may be security tokens that provide authorization to the user purchase account identified by the user purchase account identifier, the cloud account identified by the cloud account identifier, and/or the game account identified by the gaming account identifier.

In the example of <FIG>, streaming app <NUM> may be a third party streaming application that is configured to stream content from content provider <NUM>. One or more of the users of electronic device <NUM> may also have streaming accounts with the content provider <NUM>. In some implementations, two or more (e.g., all) of the users of the electronic device <NUM> may share a single account with the content provider <NUM>. In some examples, streaming app <NUM> can itself maintain multiple user preferences or histories as part of the single account with the content provider <NUM>. When the active user of electronic device <NUM> is switched from the primary user to a secondary user (or between secondary users), electronic device <NUM> may maintain the association of streaming app <NUM> with the content provider account of the primary user if the active user flag <NUM> is not selected, or may switch the association of the streaming app <NUM> to the content provider account of the active user if the active user flag <NUM> is selected. Although the active user flag may be set by the developer of the application, in one or more implementations, the active user flag may also be user-configurable, such as on a per-application basis.

Data may be stored, arranged, transferred, and/or otherwise managed by a multi-user device, such as electronic device <NUM>, in a way that facilitates the user switching operations described in connection with <FIG>.

<FIG> illustrates a schematic diagram of an example of data storage and/or management at electronic device <NUM> to facilitate user switching. As shown in <FIG>, an application <NUM> (e.g., purchased content app <NUM>, files app <NUM>, game app <NUM>, home app <NUM>, photos app <NUM>, streaming app <NUM>, and/or any other app) installed at the electronic device <NUM> may include an active user flag <NUM> as described above, code <NUM> for running the application, and application data <NUM>. Application data <NUM> may include general application data such as libraries or the like that are permanently or semi-permanently stored (e.g., between software updates) for the application, and/or runtime data such as user-specific data obtained by application <NUM> during operation of the application.

<FIG> also schematically illustrates an active user switch <NUM> that can be provided by electronic device <NUM>. Active user switch <NUM> may include a user interface with which a user can select, from the authorized or registered users of the electronic device <NUM>, a current active user. The user interface for the active user switch <NUM> may include, for example, a scrollable list of user names for users that have registered with electronic device <NUM> (e.g., using their own user purchase accounts with account service <NUM>). As described above in connection with <FIG>, when the active user flag <NUM> for application <NUM> is selected, application <NUM> is provided with one or more global variables that direct the application to the data for an active user selected by the active user switch <NUM>. As described above in connection with <FIG>, when the active user flag <NUM> for application <NUM> is not selected, application <NUM> is provided with one or more global variables that direct the application to the data for the primary user of electronic device <NUM>, regardless of and/or irrespective of which user has been selected by the active user switch <NUM>.

As illustrated in <FIG>, electronic device <NUM> may locally store primary user data <NUM> for the primary user of electronic device <NUM>, secondary user data <NUM> for a secondary user of the electronic device <NUM>, and/or active user data <NUM> for a current active user of the electronic device. The active user may be the primary user or one of the secondary users at any given time.

Electronic device <NUM> may also include a user profile database <NUM> in which user profiles for the primary user and/or one or more secondary users are stored. In the example of <FIG>, the user profile database <NUM> includes user profile <NUM> (e.g., a primary user profile for a primary user, referenced in <FIG> as "User A") and a user profile <NUM> (e.g., a secondary user profile for a secondary user, referenced in <FIG> as "User B"), though it should be appreciated that user profile database <NUM> may also store user profiles for one or more additional secondary users of electronic device <NUM>.

As illustrated in <FIG>, each user profile in the user profile database <NUM> may include identifiers (IDs) of one or more (e.g., at least two) accounts for the corresponding user. In the example of <FIG>, the account identifiers for each user profile include a purchase account ID <NUM>, a cloud account ID <NUM>, and a gaming account ID <NUM>. The purchase account ID <NUM> for each user profile may be an identifier of a user purchase account of the corresponding user at account service <NUM>. The cloud account ID <NUM> for each user profile may be an identifier of a cloud account of the corresponding user at cloud storage service <NUM>. The gaming account identifier <NUM> may be an identifier of a gaming account of the corresponding user at gaming service <NUM>. Although not explicitly shown in <FIG>, it should be appreciated that authorization information (e.g., one or more passwords or other security information previously provided by each user, and/or cryptographic information derived therefrom) may also be stored in association with each of the purchase account ID <NUM>, the cloud account ID <NUM>, and the gaming account ID <NUM> of each user profile to facilitate access to the corresponding data stored at the cloud-based services <NUM>.

As indicated in <FIG>, account service <NUM> may store account data (e.g., user purchase account data) for each of the users of electronic device <NUM> (e.g., including User A Data <NUM> for User A of electronic device <NUM> and User B Data <NUM> for User B of electronic device <NUM>), and for other users of other electronic devices. Cloud storage service <NUM> may store cloud data for each of the users of electronic device <NUM> (e.g., including User A Data <NUM> for User A of electronic device <NUM> and User B data <NUM> for User B of electronic device <NUM>), and for other users of other electronic devices. In one or more implementations, the cloud data stored for each user at cloud storage service <NUM> may include, photos, files, one or more passwords, tokens, preferences, or the like for one or more accounts, applications, games, etc. associated with that user. Gaming service <NUM> may store gaming data for each of the users of electronic device <NUM> (e.g., including User A Data <NUM> for User A of electronic device <NUM> and User B data <NUM> for User B of electronic device <NUM>), and for other users of other electronic devices.

Application <NUM> can be associated with any one of several accounts and/or remote services, and each user of electronic device <NUM> can have an account with any of the remote services (e.g., as described in connection with <FIG>). Storing the various account identifiers in the user profile for each user allows electronic device <NUM> to provide application <NUM> with the correct user-specific data associated with the correct account of the correct user, even for multi-user devices having multiple users, each with multiple application-related accounts.

In order to efficiently direct an application <NUM> to the user-specific data for the correct user account of the correct user, electronic device <NUM> may locally store user-specific data in separate portions (e.g., separate partitions or volumes) of the memory of the electronic device that are reserved for a specific user. In the example of <FIG>, electronic device <NUM> includes storage for primary user data <NUM> of a primary user. As shown, primary user data <NUM> may include connected home data <NUM>, photos <NUM>, and app data <NUM> (as examples). Connected home data <NUM> may include data for accessing and/or controlling other devices in the connected home environment <NUM> of <FIG>, and/or for allowing and/or coordinating access and/or control of electronic device <NUM> by one or more of the other devices or other users of the connected home environment <NUM>. Photos <NUM> may be photos (and/or videos) that are stored at electronic device <NUM> (e.g., for viewing and/or management using photos app <NUM> of <FIG>). Photos <NUM> may include some or all of (and may be occasionally or periodically synchronized with) the photos stored in the User A data <NUM> at cloud storage service <NUM>. App data <NUM> may be application data that is used by other applications at electronic device <NUM> that do not have the active user flag selected, such as account information and/or history information for streaming app <NUM> of <FIG>.

Primary user data <NUM> may also include account data <NUM>, cloud data <NUM>, and gaming data <NUM> for the primary user. Account data <NUM>, cloud data <NUM>, and gaming data <NUM> stored in the primary user data <NUM> at electronic device may include (e.g., and may be occasionally or periodically synchronized with), some or all of the User A Data <NUM> at account service <NUM>, User A data <NUM> at cloud storage service <NUM>, and User A data <NUM> at gaming service <NUM>, respectively. Electronic device <NUM> stores the user purchase account ID <NUM>, the cloud account ID <NUM>, and the gaming account ID <NUM> in the user profile <NUM> of the primary user for accessing the User A Data <NUM> at account service <NUM>, User A data <NUM> at cloud storage service <NUM>, and User A data <NUM> at gaming service <NUM> (e.g., for populating and/or synchronizing the corresponding primary user data <NUM> prior to running an application <NUM> and/or for obtaining the application data <NUM> at runtime for an application <NUM>).

In the example of <FIG>, electronic device <NUM> also includes storage for secondary user data <NUM> of a secondary user (e.g., a secondary user such as User B of <FIG> for which a user profile <NUM> is stored). Although <FIG> only shows secondary user data <NUM> for a single secondary user (e.g., User B), it should be appreciated that electronic device <NUM> may include additional separate storage for secondary user data <NUM> of one or more additional secondary users (e.g., additional secondary users for which additional user profiles <NUM>, each including a user purchase account ID <NUM>, a cloud account ID <NUM>, and a gaming account ID <NUM>, are stored in user profile database <NUM>).

As shown, secondary user data <NUM> may include account data <NUM>, cloud data <NUM>, and gaming data <NUM> for the secondary user. Account data <NUM>, cloud data <NUM>, and gaming data <NUM> stored in the secondary user data <NUM> at electronic device <NUM> may include (e.g., and may be occasionally or periodically synchronized with), some or all of the User B Data <NUM> at account service <NUM>, User B data <NUM> at cloud storage service <NUM>, and User B data <NUM> at gaming service <NUM>, respectively. Electronic device <NUM> stores the user purchase account ID <NUM>, the cloud account ID <NUM>, and the gaming account ID <NUM> in the user profile <NUM> of the secondary user for accessing the User B Data <NUM> at account service <NUM>, User B data <NUM> at cloud storage service <NUM>, and User B data <NUM> at gaming service <NUM> (e.g., for populating and/or synchronizing the corresponding secondary user data <NUM> prior to running an application <NUM> and/or for obtaining the application data <NUM> at runtime for an application <NUM>).

In one or more implementations, in addition to, or alternatively to storing account data <NUM>, cloud data <NUM>, and gaming data <NUM> for each user in dedicated memory for that user (e.g., in separate memory partitions for primary user data <NUM> and secondary user data <NUM>) at electronic device <NUM>, the account data <NUM>, cloud data <NUM>, and gaming data <NUM> can be obtained and stored only for the current active user of electronic device, such as in active user data <NUM> (e.g., before or at runtime for an application <NUM> associated with one of the account service <NUM>, the cloud storage service <NUM>, and the gaming service <NUM>).

For example, when the active user is switched from a primary user (e.g., User A of <FIG>) to a secondary user (e.g., User B of <FIG>), the purchase account ID <NUM> of the secondary user may be used to access the account data (e.g., User B Data <NUM>) at account service <NUM> to download information associated with media purchased by the secondary user into the account data <NUM> of the active user data <NUM> (e.g., for use as the application data <NUM> for a media player application at the electronic device). In this example, the information associated with media purchased by the secondary user can replace information associated with media purchased by the primary user that was stored as the account data <NUM> in the active user data <NUM> while the primary user was the active user. Similar operations can be performed to replace cloud data <NUM> and/or gaming data <NUM> stored for the primary user in the active user data <NUM> while the primary user was the active user with cloud data <NUM> and/or gaming data <NUM> for the secondary user when the active user is switched from the primary user to the secondary user.

In other implementations, the account data, cloud data, and gaming data for the primary user and the one or more secondary users may be stored in the respective primary user data <NUM> and secondary user data <NUM> (e.g., and periodically synchronized with the corresponding data at cloud-based services <NUM>), and accessed directly therefrom by application <NUM> (e.g., without replacing/moving data into and out of a data store for a current active user). In other implementations, the account data, cloud data, and gaming data for the primary user and the one or more secondary users may be stored in the respective primary user data <NUM> and secondary user data <NUM> (e.g., and periodically synchronized with the corresponding data at cloud-based services <NUM>), and copied to the respective active user data <NUM> from the primary user data <NUM> or the secondary user data <NUM> when the primary user or the secondary user is selected as the active user.

In order to provide access (e.g., read and/or write access) to the user-specific data for the correct user account of the correct user to any application <NUM> installed at electronic device <NUM> (e.g., when the application is launched and/or during running of the application), electronic device <NUM> may provide (e.g., as one of a set of global variables that define a launch context for an application), a user tag that identifies the correct user for that application. When an application <NUM> launches at electronic device <NUM>, the system-level processes at electronic device <NUM> determine whether the active user flag for that application is selected. If the active user flag for that application is selected, the system-level processes set the user tag to indicate the active user (e.g., which may be the primary user or one of one or more secondary users), and provides the user tag to the application. If the active user flag for that application is unselected, the system-level processes set the user tag to indicate the primary user (e.g., irrespective of which user is set as the active user), and provides the user tag to the application. In this way, each application running on electronic device <NUM> can be pointed to the data for the correct user for that application. For example, each application <NUM> can use the user tag to determine the location (e.g., primary user data <NUM>, secondary user data <NUM>, or active user data <NUM>) from which to obtain user-specific data for running of the application, and/or to determine the location (e.g., primary user data <NUM>, secondary user data <NUM>, or active user data <NUM>) to which to write user-specific data based on the running of the application.

Further, because the electronic device <NUM> maintains user profiles and/or user data (and/or access thereto) for each of the various accounts of each user (e.g., including user account IDs and/or user account data for account service <NUM>, cloud storage service <NUM>, and gaming service <NUM>) that are associated with the various applications installed at the electronic device, each application can determine the location of the correct data for the correct account for running the application using only the provided user tag. For example, upon launch, home app <NUM> may be provided with a user tag that indicates the primary user (regardless of and/or irrespective of which user is set as the active user because the active user flag <NUM> is not selected) and can obtain account data <NUM> associated with User A data <NUM> for account service <NUM> using the provided user tag identifying the primary user. As another example, upon launch, game app <NUM> may be provided with a user tag that indicates the secondary user (e.g., in a scenario in which the secondary user is the active user, and because the active user flag <NUM> is selected) and can obtain gaming data <NUM> associated with User B data <NUM> for gaming service <NUM> using the provided user tag identifying the primary user. In this way, each application <NUM> runs based on the user-specific data for the correct user account of the correct user.

In one or more implementations, when the active user is changed (e.g., using active user switch <NUM>) between launches of an application <NUM>, the application may receive a user tag identifying the same or a different user depending on whether the active user flag <NUM> is set for the application. In one or more implementations, when the active user is changed while application is running, the system-level processes at electronic device <NUM> may determine whether the active user flag <NUM> for the application is selected, and if so, may close the application, re-launch the application, and provide the re-launching application with an updated user tag indicating the new active user. In one or more implementations, the close and re-launch of the application caused by a user switch can be performed in the background. In one or more implementations, the application may be refreshed to reflect the active user without closing and re-launching.

<FIG> illustrates an example process for user switching for a multi-user device in accordance with one or more implementations. For explanatory purposes, the process <NUM> is primarily described herein with reference to the electronic device <NUM> and the cloud-based services <NUM> of <FIG>. However, the process <NUM> is not limited to the electronic device <NUM> and the cloud-based services <NUM> of <FIG>, and one or more blocks (or operations) of the process <NUM> may be performed by one or more other components and/or other suitable devices (e.g., any of the electronic devices <NUM>-<NUM> and/or one or more other servers and/or services). Further for explanatory purposes, the blocks of the process <NUM> are described herein as occurring in serial, or linearly. However, multiple blocks of the process <NUM> may occur in parallel. In addition, the blocks of the process <NUM> need not be performed in the order shown and/or one or more blocks of the process <NUM> need not be performed and/or can be replaced by other operations.

In the example process <NUM>, at block <NUM>, a multi-user device stores (e.g., in memory of the multi-user device) a plurality of installed applications (e.g., application <NUM> of <FIG>, such as home app <NUM>, photos app <NUM>, files app <NUM>, purchased content app <NUM>, game app <NUM>, streaming app <NUM>, or any other application), each being configured as a multi-user application or a single user application, such as by having an active user flag <NUM> that is either selected or unselected.

At block <NUM>, the multi-user device stores an indicator <NUM> of an active user, the active user being switchable between multiple users of the multi-user device, the multiple users including a primary user (e.g., User A in the example of <FIG>) of the multi-user device and one or more secondary users (e.g., User B in the example of <FIG>) of the multi-user device. The multi-user device may also store, for each user of the multiple users of the multi-user device, a user profile, such as user profile <NUM> as described above in connection with <FIG>, that includes at least two account identifiers for that user. The at least two account identifiers may include two or more of a purchase account identifier <NUM> of a user purchase account (e.g., a user purchase account associated with a user purchase service such as account service <NUM>), a cloud account identifier <NUM> of a cloud account (e.g., a cloud account associated with a cloud storage service such as cloud storage service <NUM>), and a gaming account identifier <NUM> of a gaming account (e.g., a gaming account associated with a gaming service such as gaming service <NUM>).

At block <NUM>, upon launch of one of the plurality of installed applications that is configured as a multi-user application (e.g., for which the active user flag is selected), user information for the active user (e.g., a user tag indicating the active user) of the multi-user device is provided to the one of the plurality of installed applications that is configured as a multi-user application (e.g., the one of the plurality of installed applications for which the active user flag <NUM> is selected).

The one of the plurality of installed applications for which the active user flag <NUM> is selected may obtain user-specific data for running of the application using the user information for the active user of the multi-user device. The multi-user electronic device may then run the one of the plurality of installed applications for which the active user flag is selected using the user-specific data. In one or more examples, obtaining the user-specific data (e.g., for the active user) may include obtaining the user-specific data from local storage for the active user (e.g., from active user data <NUM> or secondary user data <NUM>) at the multi-user device. In one or more examples, obtaining (e.g., for the active user) the user-specific data may include obtaining the user-specific data from a cloud-based service (e.g., from account service <NUM>, cloud storage service <NUM>, or gaming service <NUM>).

In various operational scenarios, the one of the plurality of installed applications for which the active user flag is selected may be associated with one of the user purchase account, the cloud account, and the game account, and obtaining the user-specific data may include obtaining the user-specific data using a corresponding one of the purchase account identifier <NUM>, the cloud account identifier <NUM>, and the gaming account identifier <NUM> in the user profile <NUM> for the active user (e.g., User B in the example of <FIG>).

At block <NUM>, upon launch of another of the plurality of installed applications configured as the single user application (e.g., one of the plurality of installed applications for which the active user flag <NUM> is unselected), user information for the primary user of the multi-user device (e.g., a user tag indicating the primary user) is provided to the other of the plurality of installed applications configured as the single user application (e.g., the one of the plurality of installed applications for which the active user flag <NUM> is unselected). The user information for the primary user may be provided to the single user application (e.g., the one of the plurality of installed applications for which the active user flag is unselected) irrespective of whether the primary user is the active user (e.g., whether the primary user is or is not the active user upon launch of the other of the plurality of installed applications). In some operational scenarios, providing the user information for the primary user to the one of the plurality of installed applications for which the active user flag is unselected may include providing the user information for the primary user to the one of the plurality of installed applications for which the active user flag is unselected, while the active user is one of the one or more secondary users. In other operational scenarios, providing the user information for the primary user to the one of the plurality of installed applications for which the active user flag is unselected may include providing the user information for the primary user to the one of the plurality of installed applications for which the active user flag is unselected, while the active user is the primary user.

The one of the plurality of installed applications for which the active user flag <NUM> is unselected obtains user-specific data (e.g., connected home data <NUM>, photos <NUM>, app data <NUM>, account data <NUM>, cloud data <NUM>, and/or gaming data <NUM> for the primary user) for running of the application using the user information for the primary user of the multi-user device. The multi-user electronic device may then run the one of the plurality of installed applications for which the active user flag is unselected using the user-specific data. In one or more examples, obtaining the user-specific data (e.g., for the primary user) may include obtaining the user-specific data from local storage for the primary user (e.g., active user data <NUM> or primary user data <NUM>) at the multi-user device. In one or more examples, obtaining (e.g., for the primary user) the user-specific data may include obtaining the user-specific data from a cloud-based service (e.g., from the User A data at account service <NUM>, cloud storage service <NUM>, or gaming service <NUM>).

In various operational scenarios, the one of the plurality of installed applications for which the active user flag is unselected may be associated with one of the user purchase account, the cloud account, and the game account of the primary user, and obtaining the user-specific data may include obtaining the user-specific data using a corresponding one of the purchase account identifier <NUM>, the cloud account identifier <NUM>, and the gaming account identifier <NUM> in the user profile <NUM> for the primary user (e.g., User A in the example of <FIG>).

The multi-user device may also provide an active user switch <NUM> by which the active user of the multi-user device can be selected from the multiple users of the multi-user device. Prior to providing user information to a launching application (e.g., at block <NUM> or <NUM>), the multi-user device may determine whether an active user flag <NUM> for the launching application is selected. The multi-user device may also determine, prior to providing the user information for the active user of the multi-user device to the one of the plurality of installed applications for which the active user flag is selected at block <NUM>, whether the active user is the primary user or one of the one or more secondary users.

In a state of the multi-user device in which the primary user is the active user, the memory of the device may store first user-specific information (e.g., connected home data <NUM> or photos <NUM> as described in connection with <FIG>) for the primary user associated with a first one of the installed applications (e.g., home app <NUM>, photos app <NUM>), and may store second user-specific information (e.g., account data <NUM>, cloud data <NUM>, or gaming data <NUM>) for the primary user and associated with a second one of the installed applications (e.g., purchased content app <NUM>, files app <NUM>, or game app <NUM>). Responsive to a switch of the active user from the primary user to one of the one or more secondary users, multi-user electronic device <NUM> may continue to store the first user-specific information for the primary user and associated with a first one of the installed applications, and may replace, in the memory, the second user-specific information for the primary user and associated with the second one of the installed applications with different user-specific information (e.g., account data <NUM>, cloud data <NUM>, or gaming data <NUM> for the secondary user) for the one of the one or more secondary users and associated with the second one of the installed applications (e.g., purchased content app <NUM>, files app <NUM>, or game app <NUM>).

The present disclosure recognizes that the use of such personal information data, in the present technology, can be used to the benefit of users. For example, the personal information data can be used for user switching for a multi-user device. Accordingly, use of such personal information data may facilitate transactions (e.g., on-line transactions). Further, other uses for personal information data that benefit the user are also contemplated by the present disclosure. For instance, health and fitness data may be used, in accordance with the user's preferences to provide insights into their general wellness, or may be used as positive feedback to individuals using technology to pursue wellness goals.

Despite the foregoing, the present disclosure also contemplates embodiments in which users selectively block the use of, or access to, personal information data. That is, the present disclosure contemplates that hardware and/or software elements can be provided to prevent or block access to such personal information data. For example, in the case of user switching for a multi-user device, the present technology can be configured to allow users to select to "opt in" or "opt out" of participation in the collection of personal information data during registration for services or anytime thereafter. In addition to providing "opt in" and "opt out" options, the present disclosure contemplates providing notifications relating to the access or use of personal information. For instance, a user may be notified upon downloading an app that their personal information data will be accessed and then reminded again just before personal information data is accessed by the app.

<FIG> illustrates an electronic system <NUM> with which one or more implementations of the subject technology may be implemented. The electronic system <NUM> can be, and/or can be a part of, one or more of the electronic devices <NUM>-<NUM>, the content provider <NUM> and/or the cloud-based services <NUM> shown in <FIG>. The electronic system <NUM> may include various types of computer readable media and interfaces for various other types of computer readable media. The electronic system <NUM> includes a bus <NUM>, one or more processing unit(s) <NUM>, a system memory <NUM> (and/or buffer), a ROM <NUM>, a permanent storage device <NUM>, an input device interface <NUM>, an output device interface <NUM>, and one or more network interfaces <NUM>, or subsets and variations thereof.

Finally, as shown in <FIG>, the bus <NUM> also couples the electronic system <NUM> to one or more networks and/or to one or more network nodes, such as the content provider <NUM> shown in <FIG>, through the one or more network interface(s) <NUM>. In this manner, the electronic system <NUM> can be a part of a network of computers (such as a LAN, a wide area network ("WAN"), or an Intranet, or a network of networks, such as the Internet. Any or all components of the electronic system <NUM> can be used in conjunction with the subject disclosure.

In accordance with aspects of the disclosure, a multi-user device, is provided that includes a memory storing a plurality of installed applications, each having an active user flag that is either selected or unselected, and an indicator of an active user, the active user being switchable between multiple users of the multi-user device, the multiple users including a primary user of the multi-user device and one or more secondary users of the multi-user device; and one or more processors configured to provide, upon launch of one of the plurality of installed applications for which the active user flag is selected, user information for the active user of the multi-user device to the one of the plurality of installed applications for which the active user flag is selected, and provide, upon launch of one of the plurality of installed applications for which the active user flag is unselected, user information for the primary user of the multi-user device to the one of the plurality of installed applications for which the active user flag is unselected.

In accordance with aspects of the disclosure, storing, at a multi-user device, a plurality of installed applications, each having an active user flag that is either selected or unselected; storing, at the multi-user device, an indicator of an active user, the active user being switchable between multiple users of the multi-user device, the multiple users including a primary user of the multi-user device and one or more secondary users of the multi-user device; providing, upon launch of one of the plurality of installed applications for which the active user flag is selected, user information for the active user of the multi-user device to the one of the plurality of installed applications for which the active user flag is selected; and providing, upon launch of one of the plurality of installed applications for which the active user flag is unselected, user information for the primary user of the multi-user device to the one of the plurality of installed applications for which the active user flag is unselected.

In accordance with aspects of the disclosure, a non-transitory machine-readable medium is provided storing instructions that, when executed by one or more processors, causes the one or more processors to: store, at a multi-user device, a plurality of installed applications, each having an active user flag that is either selected or unselected; store, at the multi-user device, an indicator of an active user, the active user being switchable between multiple users of the multi-user device, the multiple users including a primary user of the multi-user device and one or more secondary users of the multi-user device; provide, upon launch of one of the plurality of installed applications for which the active user flag is selected, user information for the active user of the multi-user device to the one of the plurality of installed applications for which the active user flag is selected; and provide, upon launch of one of the plurality of installed applications for which the active user flag is unselected, user information for the primary user of the multi-user device to the one of the plurality of installed applications for which the active user flag is unselected.

In accordance with aspects of the disclosure, a non-transitory machine-readable medium is provided storing instructions that, when executed by one or more processors, causes the one or more processors to: store, at a multi-user device, a plurality of installed applications, each being configured as a multi-user application or a single user application; provide, upon launch of one of a plurality of installed applications configured as the multi-user application, user information for an active user to the one of the plurality of installed applications; and provide, upon launch of another of the plurality of installed applications configured as the single user application, user information for the primary user of the multi-user device to the other of the plurality of installed applications irrespective of whether the primary user is the active user.

It is understood that any specific order or hierarchy of blocks in the processes disclosed is an illustration of example approaches. Based upon design preferences, it is understood that the specific order or hierarchy of blocks in the processes may be rearranged, or that all illustrated blocks be performed. Any of the blocks may be performed simultaneously. In one or more implementations, multitasking and parallel processing may be advantageous.

The word "exemplary" is used herein to mean "serving as an example, instance, or illustration". Any embodiment described herein as "exemplary" or as an "example" is not necessarily to be construed as preferred or advantageous over other implementations. Furthermore, to the extent that the term "include", "have", or the like is used in the description or the claims, such term is intended to be inclusive in a manner similar to the term "comprise" as "comprise" is interpreted when employed as a transitional word in a claim.

Claim 1:
A multi-user device (<NUM>), comprising:
a memory (<NUM>) storing:
a plurality of installed applications, each having a respective active user flag that is either selected or unselected; and
an indicator of an active user distinct from the respective active user flags, the active user being switchable between multiple users of the multi-user device, the multiple users including a primary user of the multi-user device and one or more secondary users of the multi-user device; and
one or more processors configured to:
provide, upon launch of one of the plurality of installed applications that was stored in the memory with the respective active user flag selected prior to the launch, user-specific data for the running of the one of the plurality of installed applications using user information for the active user of the multi-user device to the one of the plurality of installed applications for which the respective active user flag is selected; and
provide, upon launch of one of the plurality of installed applications that was stored in the memory with the respective active user flag unselected prior to the launch, user-specific data for the running of the one of the plurality of installed applications using user information for the primary user of the multi-user device to the one of the plurality of installed applications for which the respective active user flag is unselected.