The present disclosure relates generally to operating systems and operating system environments.
Various operating systems provide features and applications that are often specific to the given operating system. For this reason, it has become useful for computing devices, including handheld mobile devices, to be capable of running more than one operating system environment. By running more than one operating system environment on a device, users are able to access the features and applications associated with each of the operating system environments, thereby enhancing the capabilities and functions of the device.
In the past, virtualization techniques have been used to accomplish running multiple operating system environments; however such approaches require emulation of an entire machine which is resource intensive. Systems have now been developed that enable actual running of multiple operating system environments without the need for such resource intensive machine emulation. Such systems utilize a common kernel where the operating system environments may be considered middleware, in that, some services related to the various applications may be supported within the confines of the environment. Therefore, in these systems, the operating system environments co-exist independently, and do not require virtualization as in the past. Devices supporting these multiple environments therefore enable users to access and enjoy the features of the operating systems and their associated data such as applications.
Nevertheless, some demarcation between the operating system environments must exist for the purpose of presentation to the device user. The environments usually provide their own unique approach to how associated data is displayed by the operating system. In some cases, the user may be compelled to switch display views in order to work with one or another operating system environment. Being forced to switch views in this manner negatively impacts user experience because the work or operating contexts in which the user was engaged can be lost or muddled among the various views. Furthermore, any given operating system environment will not understand, and therefore will be incapable of interpreting, data associated with a different operating system environment and any associated data or working context.
The various embodiments disclosed provide an enhanced user experience when using multiple operating system environments having a common kernel. The embodiments combine the graphical display data from one operating system environment with the graphical display data from at least a second operating system environment to create a combined graphical display. For example, in one embodiment, a mobile device home screen of a first operating system environment is displayed as active or live wallpaper, and display data from a second operating system environment is handled as overlay data that hovers above the live wallpaper. In this example, when the user moves image objects of the second operating system environment over live wallpaper objects, the active or live state of the live wallpaper objects is preserved. Also, if the user switches between workspaces, the live wallpaper is maintained, which results in a smoother and more consistent user experience in working with the two operating system environments
The disclosed embodiments provide a method that includes generating live wallpaper display data associated with a first operating system environment; and generating overlay display data associated with a second operating system environment. The overlay display data is overlaid on the live wallpaper of the first operating system environment to create a combined display image. Both operating system environments of the method utilize a common kernel. The method may include generating at least one active application window as a portion of the live wallpaper display data. The at least one active application window is a window image object associated with an application of the first operating system environment.
The method may also include generating a plurality of widget windows as a portion of the live wallpaper display data. The widget windows are widget image objects associated with the first operating system environment. The method will then generate at least one active application window from the second operating system environment, as a portion of the overlay display data.
The user may interact with the combined display as a graphical user interface. For example, the method obtains position input corresponding to positional movement of the at least one active application window, generates real time overlay display data updates corresponding to the positional movement, and maintains any active widget portions of the live wallpaper in an active state, even if covered over by the overlay display data. In other words, the active or live background, that is, the live wallpaper, remains active even when the second operating system environment is in use.
The method may employ, for example, the Android™ operating system as the first operating system that generates the live wallpaper, and a Linux® based operating system environment as the second operating system environment. However, any of various operating system environments may be used in accordance with the embodiments, such as, but not limited to, Android™, Linux®, Ubuntu®, etc.
The method may also include displaying, on a display, the live wallpaper display data. Accordingly, the overlay display data of the second operating system environment may include at least one application window overlaying the live wallpaper and covering a portion of the live wallpaper.
The embodiments disclosed include an apparatus that performs the above outlined method. The apparatus includes multi-environment display data handling logic, operative to generate live wallpaper display data associated with a first operating system environment. The multi-environment display data handling logic generates overlay display data associated with a second operating system environment, which is then overlaid on the live wallpaper of the first operating system environment.
The multi-environment display data handling logic is also operative to generate at least one active application window, associated with the first operating system environment, as a portion of the live wallpaper display data. For example, the multi-environment display data handling logic is operative to generate a plurality of widget windows as a portion of the live wallpaper display data, and generate at least one active application window as a portion of the overlay display data. The at least one active application window may associated with the second operating system environment, and the plurality of widget windows may be associated with the first operating system environment.
The multi-environment display data handling logic is operative to obtain position input corresponding to positional movement of the at least one active application window, generate real time overlay display data updates corresponding to the positional movement, and maintain any active widget portions of the live wallpaper in an active state, even if covered over by the overlay display data.
The apparatus may include a display, operatively coupled to the multi-environment display data handling logic. The display is operative to display the live wallpaper display data, and the overlay display data.
Another disclosed embodiment is a computer readable, non-volatile, non-transitory memory that stores executable instructions for execution on at least one processor. The instructions, when executed, cause the at least one processor to generate live wallpaper display data associated with a first operating system environment, and generate overlay display data associated with a second operating system environment, with both operating system environments utilizing a common kernel. The instructions may also cause the at least one processor to overlay the overlay display data on the live wallpaper of the first operating system environment to create a combined display image.
Turning now to the drawings wherein like numerals represent like components,
In accordance with some embodiments, the mobile device 101 may interact with another display 201, which may be a larger display, as shown in
The term “display” as used herein refers to a device that displays “display data” to form an image or images, such as, but not limited to, a picture, a computer desktop, a gaming background, a video, an application window etc. Examples of a display include a television, computer monitor, etc., or an integrated display as found in electronic devices such as a laptop computer, handheld computing device, mobile telephone, PDA, etc. The display device may employ any appropriate display technology, such as for example, a CRT, LCD flat panel, LED flat panel, plasma screen, etc.
The terms “screen,” “home screen,” and “workspace” are used interchangeably in reference to an “image” which refers generally to what is “displayed” on a display. That is, an image, including a “screen,” “home screen,” and/or “workspace” may be displayed on a display. Examples of images include, but are not limited to, a computer desktop (i.e. a background), a gaming background, a video, an application window, an icon, a widget, etc., including also the active or live wallpaper described herein. In other words, the term “image” may refer to a background, or may refer individually, or collectively, to elements or objects in the foreground, of hovering over, a background image such as the live wallpaper. The term “display data” is used interchangeably herein with the term “image data” and refers to the information (data, or digital information) that the display interprets and/or decodes to show (i.e. to display) the user an image such as a workspace or home screen, as well as any associated elements or objects in the foreground of home screens or workspaces, or the live wallpaper, etc.
As mentioned briefly above, the mobile device 101 first operating system environment may provide various “home screens” that enable the user to organize application icons 107 and widgets 109. In other words, various icons and widgets may be distributed between various home screens. The live wallpaper 105 as shown in
In another embodiment, the home screens of the first operating system environment may be mapped to workspaces of the second operating system environment. In this example, the live wallpaper 203, as illustrated generally by the dotted line within the perimeter of the display 201, may show a home screen of the first operating system environment. In this example, only the icons 211 and widgets 207, 209 that the user associated with the displayed home screen would be displayed. Likewise, the windows 213 and 215 may be associated with a workspace of the second operating system, and that workspace may be mapped with the given home screen. In this case, only windows for the given workspace would be shown, along with image objects for the mapped home screen. That is, the combined display may show only those image objects which the user associated with the mapped workspace/home screen. The user may switch (i.e. toggle), or scroll, away from one workspace/home screen, and back again to, for example, the workspace/home screen of the combined image shown in
Among the advantages of the embodiment illustrated by
Further details of the various embodiments are best understood with reference to
In accordance with the embodiments, the programmable processor 303 may run various operating system environments 307, such as operating system environment 1, operating system 2 environment, and so on through an N-th operating system environment. In other words, the programmable processor 303 is operative to run one or more of the various operating system environments 307, concurrently. The plurality of operating system environments 307 are each completely autonomous and can exist and function independently from one another. One or more of the operating system environments may be run concurrently, and each operating system environment utilizes a common kernel 305. In other words, each one of the operating system environments is completely autonomous and may exist and function completely independently, without any of the other operating system environments being executed. The operating system environments provide “environments,” in that, for example, all necessary libraries, toolkits, windowing, etc., is present within the environment to enable an application associated with the operating system environment to function. The common kernel 305 provides fundamental interaction at the hardware level of mobile device 301. For example, the common kernel 305 may provide required operating system tasks such as program loading, system resource allocation, handling device input and output, and some memory management functions. The common kernel 305 may be created as an object-oriented design that can interface, and enable communication with, programming objects within the various operating system environments 307.
Examples of operating system environments include, but are not limited to, Android™, Ubuntu®, other Linux® based operating systems, etc. In one example embodiment, the mobile device 301 may be connected to the peripheral device 327 by way of a docking port that provides the communication bus 329. In this example, the mobile device 301 display data may be shown on display 325 which may be larger in dimensions than the integrated display 321.
In accordance with the various embodiments, the apparatus 300 includes multi-environment display data handling logic 309. The multi-environment display data handling logic 309 may be contained within one or more of the various operating system environments 307. However, for the example embodiment illustrated in
The term “logic” as used herein may include software and/or firmware executing on one or more programmable processors (including CPUs and/or GPUs), and may also include ASICs, DSPs, hardwired circuitry (logic circuitry), or combinations thereof. For the example embodiment illustrated by
Although the example provided by
As mentioned briefly above, in some embodiments, the apparatus 300 may include the peripheral device 327 which may further have a docking station, such that the mobile device 301 may be docked within the peripheral device 327 and obtain the benefit of the larger display 325 as well as other possible peripherals. One example of such an apparatus is the Motorola Lapdock® product.
Although the communication bus 329, which may be any appropriate interface, is shown connected directly to the larger display 325, it is to be understood that various other hardware and components may exist in the peripheral device intervening between the hardware 319 and the display 325. In other words,
In some embodiments, the multi-environment display data handling logic 309 may also map home screens of the first operating system environment to workspaces of the second operating system environment to obtain the combined image, which may be displayed on display 321, or on the larger display 325 of the peripheral device 327. In one example embodiment, the first operating system environment may be an Android™ operating system environment that provides various home screens. The second operating system environment maybe a Linux® based operating system environment that includes workspaces. The multi-environment display data handling logic 309 may, in this case, create a mapping between the home screens of the first operating system environment and the workspaces of the second operating system environment to create the combined image. However, in this example, the mapped home screen/workspaces are handled as overlay display data, that overlays the live wallpaper 203. Additionally, some portions of the home screen display data may be fixed to the live wallpaper 203. As mentioned above, a live widget 209, which may provide real time data, may be fixed to the live wallpaper 203. In other words, various mapped home screen/workspaces may hover above the live wallpaper 203 and any fixed live widgets that are fixed in place on the live wallpaper 203. The overlay display data may be handled similar to display data for overlaid windows (i.e. cascading windows), where windows may be arranged in a manner in which they overlap one another. However, the multi-environment display data handling logic 309 may handle the display data for the live wallpaper as real time data, along with display data from other operating system environments.
The multi-environment display data handling logic 309 may handle display data from any of the operating system environments 307, and send data to shared memory space of memory 311, to the GPU 315, or combinations of both as appropriate. For example, in one embodiment the multi-environment display data handling logic 309 may determine which of the first display data or the second display data should be transparent and which should be opaque, etc., and accordingly provide the configured combined display data to a shared memory space contained within memory 311. In some instances, the first (or other) operating system environment may be called upon to perform graphically intensive application activity such as for example displaying video. In those instances, the multi-environment display data handling logic 309 may pass first display data and/or second display data to the GPU 315 to more efficiently handle video data processing. In other words, the multi-environment display data handling logic 309 makes decisions related to the first display data and second display data, from the corresponding first operating system environment and second operating system environment (or N-th display data from the N-th operating system environment), and acts accordingly to utilize either shared memory space of the memory 311, or interact with the GPU 315 to achieve the combined image. In one example, the second display data associated with the second operating system environment may be handled as overlay data with respect to the first display data associated with the first operating system environment which corresponds to the live wallpaper 203. The multi-environment display data handling logic 309 may also handle graphics information in various formats. For example, GDK (GIMP Drawing Kit) information may be used by one or more operating system environments, while JAVA graphics objects may be used by others. In accordance with the embodiments, the multi-environment display data handling logic 309 utilizes shared memory space of memory 311 to handle various graphics objects, and/or other such display data, accordingly, by for example, changing or adjusting object properties.
Important to understand is that some graphical objects may be afforded various attributes including, but not limited to, state attributes that determine a live or active status of an object, or data displayed by the object. One example is the live widget 207, which may be an image object that provides real time information. In accordance with the embodiment, such image object state information is preserved, such that the real time information is accordingly shown on the live wallpaper 203. For example, turning briefly to
Additionally, in some embodiments, the use may also switch to a new workspace or home screen, (i.e. a mapped workspace/home screen in some embodiments). Upon switching back to the current workspace/home screen the clock widget would have remained in operation and be shown in its current state (i.e. showing the current time). The widget 207 may also remain fixed in position on the live wallpaper 203 such that it does not move with the workspace/home screens.
In 705, display data is obtained from the second operating system environment, for example, from workspaces. In 707, the multi-environment display data handling logic 309, determines the overlay display data and corresponding transparency portions and accordingly accesses shared memory space, or the GPU, in 709. The display data is then send to the display hardware as shown in 711. The user may then interact with the displayed image as a GUI as illustrated by blocks 713 through 719. That is, user input is detected in 713 and the input event is handled in 715. This operation may involve the common kernel 305, and also the multi-environment display data handling logic 309. Input associated with the first operating system environment is handled as shown in 719, while input associated with the second operating system environment is handled as shown in 717. Display data updates are handled accordingly in blocks 701 and 705, for the first and second operating system environments, respectively.
Among other advantages of various embodiments disclosed herein, the user experience is enhanced when accessing application data or other data using one or more operating system environments. Although the embodiments have been described using examples related to two operating system environments, the various embodiments are not limited to only two operating system environments and can incorporate many operating system environments as illustrated by the plurality of operating system environments 307 shown in
The various embodiments also include computer readable memory that may contain executable instructions, for execution by at least one processor, that when executed, cause the at least one processor to operate in accordance with the multi-environment display handling logic 309 functionality herein described. The computer readable memory may be any suitable non-volatile, non-transitory, memory such as, but not limited to, programmable chips such as EEPROMS, flash ROM (thumb drives), compact discs (CDs) digital video disks (DVDs), etc., that may be used to load executable instructions or program code to other processing devices or electronic devices such as those that may benefit from the features of the herein described embodiments. The executable instructions may also include the various operating system environments and the common kernel.
While various embodiments have been illustrated and described, it is to be understood that the invention is not so limited. Numerous modifications, changes, variations, substitutions and equivalents will occur to those skilled in the art without departing from the scope of the present invention as defined by the appended claims.
The present disclosure is related to copending U.S. patent application Ser. No. ______, Attorney Docket No. CS39606, “METHOD AND APPARATUS FOR DISPLAYING DATA FROM A PLURALITY OF CONCURRENT OPERATING SYSTEM ENVIRONMENTS,” and U.S. patent application Ser. No. ______, Attorney Docket No. CS39608, “METHOD AND APPARATUS FOR PROVIDING CONTEXTUAL INFORMATION BETWEEN OPERATING SYSTEM ENVIRONMENTS,” both of which are assigned to the same assignee as the present application, and both of which are hereby incorporated by reference herein.