Motion based display management

A display manager is configured to handle the drawing of windows on one or more displays for an application differently based on detected motion information that is associated with a device. The display manager may not display windows for some applications while motion is detected, while the display manager may display windows for other applications even when motion is detected. Motion enabled applications may interact with the display manager and motion information to determine how to display windows while motion is detected.

BACKGROUND

Computers today are used in many different environments. Not only are computers common at home, computers are becoming more mainstream in moving devices, such as cars and other moving devices. Computing systems, however, are typically designed for use while stationary. Using these computing systems while a device is in motion can be difficult and even dangerously distracting.

SUMMARY

A display manager is configured to handle the drawing of windows for an application on one or more displays based on motion information that is associated with a device. Each of the displays that is associated with the application may be drawn differently. Additionally, each application may use different display characteristics based on the motion. For example, the display manager may not display windows for some applications while motion is detected, while the display manager may display windows for other applications even when motion is detected. Motion enabled applications may interact with the display manager and the motion information to determine how to display windows while motion is detected.

DETAILED DESCRIPTION

Referring now to the drawings, in which like numerals represent like elements, various embodiment will be described. In particular,FIG. 1and the corresponding discussion are intended to provide a brief, general description of a suitable computing environment in which embodiments may be implemented.

Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Other computer system configurations may also be used, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. Distributed computing environments may also be used where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.

Referring now toFIG. 1, an illustrative computer architecture for a computer100utilized in the various embodiments will be described. While the computer architecture shown inFIG. 1is generally configured as a mobile computer, it may also be configured as a desktop. Computer100includes a central processing unit5(“CPU”), a system memory7, including a random access memory9(“RAM”) and a read-only memory (“ROM”)10, and a system bus12that couples the memory to the central processing unit (“CPU”)5.

A basic input/output system containing the basic routines that help to transfer information between elements within the computer, such as during startup, is stored in the ROM10. The computer100further includes a mass storage device14for storing an operating system16, a display manager30, a motion manager32, motion integrated applications24and legacy applications25, which are described in greater detail below.

The mass storage device14is connected to the CPU5through a mass storage controller (not shown) connected to the bus12. The mass storage device14and its associated computer-readable media provide non-volatile storage for the computer100. Although the description of computer-readable media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, the computer-readable media can be any available media that can be accessed by the computer100.

According to various embodiments, computer100may operate in a networked environment using logical connections to remote computers through a network18, such as the Internet. The computer100may connect to the network18through a network interface unit20connected to the bus12. The network connection may be wireless and/or wired. The network interface unit20may also be utilized to connect to other types of networks and remote computer systems. The computer100may also include an input/output controller22for receiving and processing input from a number of other devices, including a keyboard, mouse, or electronic stylus (not shown inFIG. 1). Similarly, an input/output controller22may provide output to a display screen23, a printer, or other type of output device. The computer100also includes one or more motion devices34that are designed to provide motion information. The motion devices may include, but are not limited to devices such as global positioning systems, accelerometers, speedometers, cameras, and the like. Generally, any device that determines motion may be utilized.

As mentioned briefly above, a number of program modules and data files may be stored in the mass storage device14and RAM9of the computer100, including an operating system16suitable for controlling the operation of a networked personal computer, such as the WINDOWS® VISTA® operating system from MICROSOFT® CORPORATION of Redmond, Wash. The operating system may utilize a display manager30that is configured to draw graphical windows on the display23of the computing device100. Generally, display manager30draws the pixels (e.g. windows) to a display, such as display23, instead of an application drawing the pixels directly to the display. Motion manager32is configured to process information received by motion device(s)34and interact with display manager30. While motion manager32is shown within display manager30, motion manager32may be separated from display manager. Additionally, display manager may be configured as part of operating system16. The mass storage device14and RAM9may also store one or more program modules. In particular, the mass storage device14and the RAM9may store one or more motion integrated application programs24and legacy applications25.

Legacy applications are applications that are created without knowledge of motion information that may be exposed by display manager30. Motion integrated applications are applications that are created that include logic to utilize the motion information that is exposed by display manager30.

Generally, display manager30is configured to determine how to display windows on a display based on the motion data provided by motion devices34. For example, the display manager30may never display windows for some applications while motion is detected, while the display manager30may display windows for other applications even when motion is detected. According to one embodiment, when motion is detected, display manager30ceases to draw the windows that are associated with the legacy applications25currently running. Other applications, such as motion integrated applications24, may be informed of the motion by display manager30and react appropriately based on the functionality of the application. For example, when a device is in motion, a motion integrated application24may instruct the display manager to draw a window larger than normal and the application may activate a touchscreen as opposed to receiving input through a keyboard. The display manager30may also be configured to change the appearance of windows based on the detected motion (e.g. drawing windows larger, only showing one window on a display, and the like). Additional details regarding the display manager and motion manager will be provided below.

FIG. 2illustrates a block diagram of a motion based display management system. As illustrated, system200includes an operating system16, a display manager30, a motion manager32, Global Positioning System (GPS)212, accelerometer214, motion device216, motion enabled application24, legacy application26, normal display218, restricted display1(220) through restricted display N222. While display manager30is illustrated separately from operating system16, display manager30may be incorporated into operating system16. Similarly, motion manager32may be configured as part of display manager30and/or operating system16.

Display manager30is located between the applications and the displays and controls the drawing of pixels to the displays. Instead of individual windows that are associated with an application drawing directly to a display, the display manager30causes the drawing for an application to be directed to off-screen surfaces in video memory, which are then rendered into a desktop image and presented on the display when determined. Display manager30coordinates with motion manager32in order to determine motion of a device. Motion manager32is configured to receive information from a motion device, such as a GPS device212, accelerometer214, or some other motion device216and provide the motion manager to windows desktop manager30. In response to a motion event, the display manager30may decide whether or not to draw a window to a display.

According to one embodiment, motion enabled applications24have access to motion information through an Application Programming Interface (API). For example, a motion enabled application24may have a window displayed even while the device is moving if it makes an API call to acknowledge the motion before the display manager displays the contents of the window. The motion enabled applications may also register for events concerning the motion detected by motion manager32. The events may related to predetermined motion conditions, such as: speed, location, acceleration, and the like. The motion enabled applications24can then make the decision of what is an appropriate display based on the motion events.

As discussed above, a legacy application26is not aware of the motion information, and a as a result, does not know when a device is in motion. According to one embodiment, no windows are displayed for a legacy application when motion is detected. According to another embodiment, the display manager30may provide an option to bypass the blocking of displaying of windows when motion is detected. The display manager30may also be configured show a display indicating that the display has been stopped based on the motion.

In addition to controlling the display of windows to a display, the display manager30can change the user interface on a display based on the motion. For example, the default text sizes of a window can be changed, the window controls can be changed (e.g. increased in size), and the like. The shell experience of the display can also change. For example, different menus could be displayed. When the motion of the device stops, or falls below a predetermined threshold, the display manager30displays the windows normally.

Motion enabled applications24and display manager30may also be configured to change behavior based on motion thresholds and/or the location of a display within a device. For example, one application may be within a car that allows displays to be shown that are not near a driver when motion is detected. In this example, the displays away from the driver would be treated as a normal display (218). A motion enabled application24may also restrict a display depending on the motion. For example, when motion is less than a predetermined amount, restricted display1(220) may be used. When motion is greater than a certain amount, restricted display N222may be used. Each display that is associated with an application may be treated differently.

Referring now toFIGS. 3-5, illustrative processes for motion based display management will be described.

When reading the discussion of the routines presented herein, it should be appreciated that the logical operations of various embodiments are implemented (1) as a sequence of computer implemented acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system. The implementation is a matter of choice dependent on the performance requirements of the computing system implementing the invention. Accordingly, the logical operations illustrated and making up the embodiments described herein are referred to variously as operations, structural devices, acts or modules. These operations, structural devices, acts and modules may be implemented in software, in firmware, in special purpose digital logic, and any combination thereof.

Referring now toFIG. 3, a process for managing the displays for legacy applications and motion integrated applications is described.

After a start operation, the process flows to operation310where a motion event is detected. A motion event may be configured to be any event based on motion, such as motion detected, motion stopped, certain speed detected; certain acceleration detected; location changed; and the like. According to one embodiment, motion is detected using motion devices including but not limited to: GPS devices; accelerometers; speedometers; cameras and the like.

Moving to decision operation320a determination is made as to whether the motion event is an end of motion event. An end of motion event is an event that indicates that no motion is detected and/or the motion is under a predetermined threshold. For example, an end of motion event may be indicated for a device traveling less than three (3) miles per hour or some other predetermined threshold. When the motion event is an end of motion event, the process flows to operation330where the display for the application returns to normal operation. During normal operation, the display manager draws the windows on the displays without modification. When the motion event is not an end of motion event (i.e. motion is detected) the process flows to decision operation340.

At decision operation340, a determination is made as to whether the application is a legacy application. When the application is legacy application, the process flows to operation350where the display for the legacy application is shut-off until an end of motion event is detected. Alternatively, as discussed above, the legacy application may be allowed to display if a bypass has be established for the legacy application. Additionally, some other modification may be made to the display.

When the application is not a legacy application, the process moves to decision operation360where a determination is made as to whether the change the display. According to one embodiment, motion integrated applications are treated as legacy applications unless the motion integrated application includes logic to override the default behavior. When the display is to be changed, the process flows to operation370where the display is changed. The display change may be many different display changes. For example, the display may be shut-off, the display may be modified (i.e. bigger font, fewer windows, etc.), one display may be modified while another display is allowed to be drawn. When the display is not to change, the process flows to an end operation.

Referring now toFIG. 4, a process for using events for managing the displays of motion integrated applications is described.

After a start operation, the process flows to operation410where a motion event is detected as described above.

Moving to operation420, a determination is made as to what applications have registered for the detected motion event. For example, one application may register for all motion events, whereas another application may only register for a motion event when the device exceeds a certain speed (e.g. 10 mph).

Flowing to operation430, the motion event is sent to the registered applications. For example, the motion event may be delivered to the applications through a callback mechanism or some other delivery method may be used.

Moving to operation440, any instructions are received from the motion enabled applications in response to the motion event. The instructions are used by the display manager to determine how to render the display(s) that are associated with the application.

Transitioning to operation450, the display(s) that are associated with the application are drawn. The process then moves to an end operation.

Referring now toFIG. 5, a process for changing a drawing policy based on motion is described.

After a start operation, the process flows to operation510where a motion event is detected as described above.

Moving to decision operation520, a determination is made as to whether to change the drawing policy of the device. For example, a display manager may determine to only show one window when a motion event is detected, a window may be displayed differently (e.g. larger, bigger fonts, less information), windows may be tiled, and the like. According to one embodiment, the drawing policy change may affect both the drawing for legacy applications as well as the drawing for motion integrated applications. When the drawing policy is not changed, the process returns to operation510. When the drawing policy is to change, the process flows to operation530where the windows are displayed according to the drawing policy. The process the moves to an end block.