CROSS-REFERENCE TO RELATED APPLICATIONSThis application claims priority to U.S. Provisional Patent Application No. 61/570,521, filed Dec. 14, 2011, which is hereby incorporated by reference in its entirety.
TECHNICAL FIELDThe present disclosure relates to dynamically switching user profiles.
BACKGROUNDComputing devices such as mobile telephones, tablets, and laptops have proliferated in recent years. These devices can be equipped with processors, memory, and the capability to communicate through local and wide area networks, including the Internet. With some computing devices, the user of the computing device can establish a user profile and store a set of preferences for operating the computing device in the user profile. The user profile can include the files and folders saved by the user; the applications, software, programs, etc. downloaded to the computing device by the user; security settings for loading the user profile; operation restrictions for the user; layout of the display of the computing device including font size, icon size, type of wallpaper, etc.; and any other items or settings for operation of the user profile on the computing device.
SUMMARYDisclosed herein are methods and apparatuses for dynamic switching of user profiles on computing devices.
One aspect of the disclosed embodiments is a method of operating a computing device having an image-sensing device. The method includes identifying a first user profile under which the computing device is operating. The first user profile is associated with a first user value indicative of a first user. The method further includes receiving an image from the image-sensing device, generating a current user value indicative of a current user of the computing device based on the received image, determining if the current user value corresponds to the first user value, and configuring at least some programs operating on the computing device using a second user profile that is selected based on the current user value if the current user value does not correspond to the first user value.
Another aspect of the disclosed embodiments is a method of operating a computing device having an image-sensing device. The method includes identifying a first user profile under which the computing device is operating. The first user profile is associated with a first user value indicative of a first user. The method further includes receiving an image from the image-sensing device, generating a current user value indicative of a current user of the computing device based on the received image, determining if the current user value corresponds to the first user value, and determining if a second user profile is available to the computing device if the current user value does not correspond to the first user value, the second user profile associated with a second user value.
Another aspect of the disclosed embodiments is a computing device. The computing device includes an input-output device, such as a display screen, an image-sensing device, a memory, and one or more processors. The one or more processors are configured to execute instructions stored in the memory to identify a first user profile under which the computing device is operating. The first user profile is associated with a first user value indicative of a first user. The one or more processors are further configured to receive an image from the image-sensing device, generate a current user value indicative of a current user of the computing device based on the received image, determine if the current user value corresponds to the first user value, and configure at least some programs operating on the computing device using a second user profile that is selected based on the current user value if the current user value does not correspond to the first user value.
These and other embodiments will be described in additional detail hereafter.
BRIEF DESCRIPTION OF THE DRAWINGSThe description herein makes reference to the accompanying drawings wherein like reference numerals refer to like parts throughout the several views, and wherein:
FIG. 1 is a block diagram showing an example of a computing device.
FIGS. 2A and 2B are illustrations showing the operation of a profile utility application as displayed on the display screen of a computing device.
FIG. 3 is an illustration showing an operation in which a different user profile is selected for operation of the computing device.
FIG. 4 is a flow chart showing a process for dynamically switching a user profile on a computing device.
DETAILED DESCRIPTIONAs computing devices proliferate, so do the number of users operating each computing device. Some device users can find some traditional methods of loading and operating a user profile cumbersome, such as providing a username and password, if the computing device includes a limited user interface. Some device users can also find some traditional methods of accessing a user profile difficult to execute. Some device users can be incapable of complying with some traditional methods but still need to be provided a specific user profile. For example, a young child can share a computing device with a parent and be capable of running some games and applications on the computing device and at the same time be incapable of entering a username and password.
The apparatuses and methods described herein, in some cases, allow for switching from a first user profile to a second user profile, limiting access to the files, folders, applications, security settings, etc. of the first user of the computing device while loading the files, folders, applications, security settings, etc. of the second user of the computing device without requiring the first user to log out or lock operation of the computing device or the second user to manually enter information to load and operate the second user profile.
FIG. 1 is a block diagram of an example of acomputing device10. Thecomputing device10 can be in the form of a computing system including multiple computing devices, or in the form of a single computing device, for example, a mobile phone, a tablet computer, a laptop computer, a notebook computer, and the like.
Thecomputing device10 can include a data processing apparatus, which in this case is a central processing unit, CPU12, and amemory14. As an example, the CPU12 can be a conventional central processing unit. Alternatively, the CPU12 can be any other type of device, or multiple devices now-existing or hereafter developed, capable of manipulating or processing information, including, for example, optical processors, quantum and/or molecular processors, general purpose processors, special purpose processors, IP cores, ASICS, programmable logic arrays, programmable logic controllers, microcode, firmware, microcontrollers, microprocessors, digital signal processors, memory, or any combination of the foregoing. In the claims, the term “processor” should be understood as including any of the foregoing, either singly or in combination. Although the disclosed embodiments can be practiced with a single processor as shown, e.g. CPU12, advantages in speed and efficiency can be achieved using more than one processor.
Thememory14 in thecomputing device10 can be a random access memory device (RAM). Any other suitable type of storage device can be used as thememory14. Thememory14 can include code anddata18 that is accessed by the CPU12 using abus16. Thememory14 can further include anoperating system20 andapplication programs22, theapplication programs22 including programs that permit the CPU12 to perform the methods described herein. For example, theapplication programs22 can includeapplications1 through N which further include a profile utility application that performs the methods described herein. Thecomputing device10 can also include asecondary storage24, which can, for example, be a memory card used with amobile computing device10. Because the user profiles may contain a significant amount of information, they can be stored in whole or in part in thesecondary storage24 and loaded into thememory14 as needed for processing.
Thecomputing device10 can also include one or more input-output devices, such as adisplay screen26, which can be a touch sensitive display screen that combines a display with a touch sensitive element that is operable to sense touch inputs. Thedisplay screen26 is coupled to the CPU12 via thebus16. Other input-output devices that permit a user to program or otherwise use thecomputing device10 can be provided in addition to or as an alternative to thedisplay screen26. When the input-output device is or includes a display, the display can be implemented in various ways, including by a liquid crystal display (LCD) or a cathode-ray tube (CRT) or light emitting diode (LED) display, such as an OLED display.
Thecomputing device10 can also include an image-sensing device, for example front-facingcamera28, or any other image-sensing device now existing or hereafter developed that can sense the image of a user operating thecomputing device10. The front-facingcamera28 can be positioned such that it is directed toward a user that is operating thecomputing device10. Stated another way, the position and optical axis of the front-facingcamera28 can be configured such that the field of vision of the front-facingcamera28 includes an area that is directly adjacent to thedisplay screen26, from which thedisplay screen26 is visible. The front-facingcamera28 can be configured to receive images, for example, of the face of a user while the user is operating thecomputing device10.
AlthoughFIG. 1 depicts the CPU12 and thememory14 as being integrated into a single unit, other configurations can be utilized. The operations of the CPU12 can be distributed across multiple machines (each machine having one or more of processors) which can be coupled directly or across a local area or other network. Thememory14 can be distributed across multiple machines such as network-based memory or memory in multiple machines performing the operations of thecomputing device10. Although depicted here as a single bus, thebus16 can be composed of multiple buses. Further, thesecondary storage24 can be directly coupled to the other components of thecomputing device10 or can be accessed via a network and can comprise a single integrated unit such as a memory card or multiple units such as multiple memory cards. Thecomputing device10 can thus be implemented in a wide variety of configurations.
FIGS. 2A and 2B are illustrations showing the operation of a profile utility application as displayed on the input-output device, in this case adisplay screen26, of acomputing device10. Thecomputing device10 includes the image-sensing device, in this case the front-facingcamera28, described inFIG. 1. The front-facingcamera28 faces the user while the user operates thecomputing device10 and is capable of receiving an image. Thecomputing device10 also includesvarious application programs22 as described inFIG. 1. Icons32a-ewhich render on thedisplay screen26 can represent a set ofapplication programs22 with each icon32a-ebeing capable of selection by a user to operate a givenapplication program22 on thecomputing device10. Different users of thesame computing device10 can each establish a user profile which includes preferences for operating thecomputing device10 associated with the user.
FIG. 2A shows the operation of a first user profile with the icons32a-erepresenting fivedifferent application programs22 that a first user can operate on thecomputing device10 as associated with the first user profile.FIG. 2B shows the operation of a second user profile with the icons32a-crepresenting threedifferent application programs22 that a second user can operate on thecomputing device10 as associated with the second user profile. User profiles can includedifferent application programs22 that are available to different users, different settings for thecomputing device10 such as font size and icon32a-esize as shown by comparing the icon32a-esize betweenFIG. 2A andFIG. 2B, different files and folders as initiated and stored by different users, and different security and access settings that regulate what types ofapplication programs22 can be operated by the user on thecomputing device10. For example, the first user profile shown inFIG. 2A has access to the Internet throughicon32dand to a camera throughicon32e,whereas the second user profile shown inFIG. 2B does not have icons enabling access to the internet or to the camera. Thevarious application programs22, display settings, security and access settings, and files and folders available for a given user profile can be collectively described as “programs.”
FIG. 3 is an illustration showing an operation in which a different user profile is selected for operation of thecomputing device10. In this example, afirst user40 and asecond user42 have both previously established user profiles on thecomputing device10. The image-sensing device, in this example the front-facingcamera28, is operable to capture one or more images of thefirst user40 while thefirst user40 is operating the computing device30 by interacting with thedisplay screen26. Thecomputing device10 can configure at least some programs that are operating on thecomputing device10 using a first user profile that has been established by thefirst user40 and is associated with thefirst user40. The first user profile can include a value that represents thefirst user40, such as an image of the first user's face, or data that is derived from or representative of the first user's face.
In this example, during the time period when thecomputing device10 is configured according to the first user profile (i.e. operating under the first user profile), the device can be handed to or picked up by thesecond user42. The front-facingcamera28 can capture an image of thesecond user42. Thecomputing device10 can configure at least some programs operating on thecomputing device10 using the second user profile if thecomputing device10 determines that the image of thesecond user42 corresponds to a value that is stored in the second user profile. A second user profile can be utilized to configure thecomputing device10 if the second user profile is associated in some way with the captured image of thesecond user42. This operation can be performed without an affirmative action that “logs out” thefirst user40, suspends operation of thecomputing device10, or locks operation of thecomputing device10.
In other examples, thefirst user40 can be “logged out” of the device or have otherwise placed thecomputing device10 into a low power state, a locked state, or other state in which thecomputing device10 is no longer in active use. Thecomputing device10 may or may not continue to be configured according to the first user profile. When thecomputing device10 is picked up by thesecond user42, the front-facingcamera28 can capture an image of thesecond user42. Thecomputing device10 can configure at least some programs operating on thecomputing device10 using the second user profile if thecomputing device10 determines that the image of thesecond user42 corresponds to a value that is stored in the second user profile. That is to say that the second user profile is utilized to configure thecomputing device10 if the second user profile is associated in some way with the captured image of thesecond user42.
In other examples, thesecond user42 may not have previously established a user profile on thecomputing device10. In these examples, thecomputing device10 can deny access to thesecond user42 or can allow access to thesecond user42. Examples for allowing access to thesecond user42 when a user profile has not previously been established will be explained herein. The operations of the various methods of dynamically switching a user profile on thecomputing device10 are further explained in connection withFIG. 4 below.
FIG. 4 is a flow chart showing an example of aprocess50 for dynamically switching a user profile on acomputing device10. Inprocess50, thecomputing device10 is initially configured according to and operating under a first user profile.
Instage52, thecomputing device10 can identify a first user profile under which thecomputing device10 is operating. The first user profile can be associated with a first user value indicative of a first user. The first user value can have been previously generated by thecomputing device10 based on one or more images associated with a first user of thecomputing device10. For example, one or more images of the first user can be captured by the image-sensing device, e.g. the front-facingcamera28, on thecomputing device10 and an image-analysis algorithm can be employed to analyze the one or more images of the first user and generate geometric data indicative of one or more facial features in the one or more images that can be used as a first user value. The first user value can be the basis for comparison to geometric data generated from images captured during operation of thecomputing device10 by a current user.
Instage54, thecomputing device10 can receive an image from the front-facingcamera28. The image received can be that of the face of the current user of thecomputing device10.
Instage56, thecomputing device10 can generate a current user value indicative of the current user of thecomputing device10 based on the image received instage54. For example, the current user value can be generated by a facial recognition application program detecting one or more specific positions, or coordinates, of facial features (e.g. corners of the eyes, corners of the mouth, top and bottom edges of the lips, etc.). Other facial features and positions are also possible and can be detected by the facial recognition application to generate the current user value.
Instage58, thecomputing device10 can compare the current user value to the first user value. For example, thecomputing device10 can compare the coordinates of facial features of the first user value and current user value.
Indecision block60, thecomputing device10 can make a determination as to whether the current user value corresponds to the first user value. For example, thecomputing device10 can determine if a coordinate comparison between the current user value and first user value indicates that the coordinates are similar enough to indicate to thecomputing device10 that the current user has the same identity as the first user having the first user profile operating on thecomputing device10.
If, atdecision block60, thecomputing device10 determines that the current user value corresponds to the first user value, thecomputing device10 can continue to operate using the first user profile atstage62. If thecomputing device10 continues to operate using the first user profile, theprocess50 ends. The current user, in this case the first user, need not be aware that theprocess50 has occurred, allowing seamless operation of thecomputing device10.Stages52 through58 anddecision block60 ofprocess50 can occur periodically, at a set interval or prompt by an application program, or continuously during the operation of thecomputing device10. The profile utility application can also be disabled by the current user in the case where the current user wishes to allow another user to operate thecomputing device10 without switching profiles.
If, atdecision block60, thecomputing device10 determines that the current user value does not correspond to the first user value, thecomputing device10 can be configured to operate at least some programs using a second user profile that is selected based on the current user value atstage64. If thecomputing device10 configures at least some programs using the second user profile, theprocess50 ends. There are several embodiments ofstage64 that will be described below.
In one embodiment ofstage64 where the current user value does not correspond to the first user value, thecomputing device10 can compare the current user value to a stored user value of each user profile of a plurality of stored user profiles. If the current user value does not correspond to the stored user value of any user profile of the plurality of stored user profiles, thecomputing device10 can select a guest profile as the second user profile. The guest profile can have limited access toapplication programs22, files, folders, etc. This embodiment allows a current user without a stored user profile to operate thecomputing device10 without exposing the security settings, files, folders,application programs22, etc. of stored user profiles to the current user.
In another embodiment ofstage64 where the current user value does not correspond to the first user value, thecomputing device10 can compare the current user value to a stored user value of each user profile of a plurality of stored user profiles. If the current user value does not correspond to the stored user value of any user profile of the plurality of stored user profiles, thecomputing device10 can create the second user profile for the current user and display an interface for configuring the second user profile to the current user. This embodiment allows a current user without a stored user profile to configure their own user profile on thecomputing device10 specifying the security settings,application programs22, etc. the current user prefers to use while operating thecomputing device10 without exposing the security settings, files, folders,application programs22, etc. of stored user profiles to the current user.
In another embodiment ofstage64 where the current user value does not correspond to the first user value, thecomputing device10 can compare the current user value to a stored user value of each user profile of a plurality of stored user profiles. If the current user value does not correspond to the stored user value of any stored user profile of the plurality of stored user profiles, thecomputing device10 can display one or more indicators, wherein each indicator of the one or more indicators is associated with a respective stored user profile of the plurality of stored user profiles. The current user can select an indicator using the user interface of thecomputing device10. Thecomputing device10 can receive the signal that the current user has selected an indicator of the one or more indicators, and thecomputing device10 can select the stored user profile that is associated with the selected indicator as the second user profile to be configured on thecomputing device10. This embodiment is useful in the case where the current user value does not correspond to a stored user value due to changes to the physical features of the current user, for example, changes in facial hair, low lighting during the image capture, changes in eyeglasses for the current user, an inconvenient black eye, etc. Thecomputing device10 can further require additional security measures, such as a password or PIN number entry, if the current user selects a stored user profile due to the current user value failing to correspond to a stored user value.
In another embodiment ofstage64 where the current user value does not correspond to the first user value, thecomputing device10 can compare the current user value to a stored user value of each user profile of a plurality of stored user profiles. If the current user value corresponds to a stored user value of a stored user profile, thecomputing device10 can send a notification to the user, the notification requesting selection of the first user profile, e.g. the current user profile, or the second user profile, e.g. the stored user profile. The notification can be, for example, an indicator that another profile is available for use displayed in the background or on a notification bar on thedisplay screen26 of thecomputing device10. In this example, if thecomputing device10 receives a signal indicating selection of the first user profile, thecomputing device10 continues to operate using the first user profile. If thecomputing device10 receives a signal indicating selection of the second user profile, thecomputing device10 configures at least some programs using the second user profile. If the notification is ignored, thecomputing device10 continues to operate using the first user profile. This embodiment is useful in the case where a second user seeks to update settings, applications, or features for a first user without immediately switching user profiles. For example, the second user can be a parent and the first user a child with the parent picking up thecomputing device10 to install a new application for the child currently using thecomputing device10.
In each of the embodiments of theprocess50 for dynamically switching a user profile on acomputing device10, the first user profile and second user profile can be stored in a location external to thecomputing device10. For example, acomputing device10 can be a public device such as a clock-radio in a hotel room capable of operating with user profiles. The current user of the clock-radio can have a user profile stored using a cloud computing service, or the cloud. The cloud can include hundreds or thousands of servers configured to provide scalable computing resources. Storing the user profile on the cloud can, for example, allow more than onecomputing device10 to access the user profile. In this example, the current user of the clock-radio can access personal files, folders, and/orapplication programs22 on the clock-radio after the clock-radio has been configured with the stored user profile associated with the current user.
The embodiments of the computing device10 (and the algorithms, methods, instructions etc. stored thereon and/or executed thereby) can be realized in hardware including, for example, intellectual property (IP) cores, application-specific integrated circuits (ASICs), programmable logic arrays, optical processors, programmable logic controllers, microcode, firmware, microcontrollers, servers, microprocessors, digital signal processors or any other suitable circuit. In the claims, the term “processor” should be understood as encompassing any the foregoing, either singly or in combination. The terms “signal” and “data” are used interchangeably. Further, portions ofcomputing device10 do not necessarily have to be implemented in the same manner.
In one embodiment, thecomputing device10 can be implemented using a general purpose computer/processor with a computer program that, when executed, carries out any of the respective methods, algorithms and/or instructions described herein. In addition or alternatively, for example, a special purpose computer/processor can be utilized which can contain specialized hardware for carrying out any of the methods, algorithms, or instructions described herein.
Further, all or a portion of embodiments described can take the form of a computer program product accessible from, for example, a computer-usable or computer-readable medium. A computer-usable or computer-readable medium can be any device that can, for example, tangibly contain, store, communicate, or transport the program for use by or in connection with any processor. The medium can be, for example, an electronic, magnetic, optical, electromagnetic, or a semiconductor device. Other suitable mediums are also available.
While this disclosure includes what is presently considered to be the most practical and preferred embodiments, it is to be understood that the disclosure is not to be limited to the disclosed embodiments but, on the contrary, is intended to cover various modifications and equivalent arrangements included within the spirit and scope of the appended claims, which scope is to be accorded the broadest interpretation so as to encompass all such modifications and equivalent structures as is permitted under the law.