1. Field of Art
The present disclosure relates generally to operating an application program running on a mobile computing device, more specifically to delegating the operation generally associated with the application program to the operating system of the mobile computing device.
2. Description of the Related Art
Mobile computing devices such as a personal digital assistant (PDA), a smart phone, an MP3 player often use different user input devices. For example, some mobile computing devices employ a combination of a touchscreen and a number of buttons as their user input devices while other mobile computing devices employ keypads or touchscreens as their sole user input devices. In some cases, two or more input devices of the same mobile computing device allow the same operation to be performed on the mobile computing device. For example, to place a phone call in a smartphone, a user may press a designated key on the smartphone or touch an icon appearing on the touchscreen of the smartphone.
In conventional mobile computing devices, application programs are programmed to process primitive input messages from device drives and perform the operations as indicated by the input messages. In a mobile computing device using a touchscreen, for example, the operating system (specifically, the device drivers) installed on the mobile computing device translates physical input signals into primitive input event messages (e.g., key ‘a’ of keypad was pressed) that can be deciphered by application programs. Each application program includes codes or routines to receive the input event messages and perform operations according to the input event messages.
In conventional mobile computing devices, each application program must be programmed to receive and to respond to the input event messages. Although the device driver of the operating system translates physical input signals into the input event messages, each application program must include codes or routines to address input event messages associated with different device drivers. Also, different application developer may use different conventions to define which input event messages represent which operations on the application programs. This may lead to inconsistent definition of user inputs in different application programs which degrades the overall user experience of the mobile computing device.
Furthermore, the application programmer is burdened with including codes and routines to address different types of input devices. The application program developers must anticipate user input devices that may be used in the mobile computing devices, and provide routines and codes in each application program to address user inputs from different types of user input devices. The issue is exacerbated when a new type of user input device is developed and becomes integrated into the mobile computing device. When a new user input device becomes available, the application program developers must update the application programs individually to work in conjunction with the new user input device.
Therefore, among other deficiencies, the present art lacks schemes and methods that allow users to have a consistent experience in multiple application programs despite using different input devices to receive user inputs. Further, the present art also lacks a navigation scheme and methods that allows application programs to consistently interface with different types of user input devices.
Embodiments disclosed employ an operating system that translates a physical input signal from an input device to a navigation message representing a signal logically higher in level than the physical input signal and invoking a navigation operation at two or more application programs executable on the operating system. The navigation operation represents a unit of action (e.g., ‘select’ an item) intended by a user on an application program. The navigation operation may be an operation that is common to or applicable to two or more application programs. The operation system is delegated with the task of processing the low-level input signal into the high-level navigation message; and therefore, the application program is relieved of the task to address the low-level input signals.
In one embodiment, the navigation message invokes core navigation commands including, for example, selection of an item in the application program, activation of a selected item within the application program, returning to a state of the mobile computing device before activating a selected item, changing to a state of the mobile computing device where predetermined operations of the mobile computing device may be taken, and changing to a state where options for the application program can be set.
In one embodiment, the operating system comprises a core navigation module for mapping inputs from different input devices to the navigation messages. The core navigation module includes an input mapping table indicating which input signals from which input device should invoke which navigation operations. The core navigation module is used to consistently translate user inputs from different input devices into the navigation message for invoking the navigation operations at the application programs.
In one embodiment, the operating system defines a set of navigation messages. The first input signal of the first input device may be mapped to a first subset of the set of the navigation messages, and the second input signal of the second input device may be mapped to a second subset of the set of the navigation messages. The first subset of the navigation messages may overlap with the second subset of the navigation messages. By using different subsets of navigation messages for different input devices, the input devices may be customized to represent a number of navigation messages according to the capability and characteristics of the input devices.
The features and advantages described in the specification are not all inclusive and, in particular, many additional features and advantages will be apparent to one of ordinary skill in the art in view of the drawings, specification, and claims. Moreover, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the disclosed subject matter.
Embodiments disclosed can be readily understood by considering the following detailed description in conjunction with the accompanying drawings.
Embodiments of an operating system provide an environment where application programs need not address differences in input signals from different input devices. The operating system processes primitive input signals into high-level navigation messages indicating a navigation operation at application programs. The operating system provides the high-level navigation messages to the application programs instead of the primitive input signals; and thus, the application program is relieved of tasks associated with addressing idiosyncrasies in the primitive input signals from different input devices.
The mobile computing device refers to any portable computing device having at least one input device. The mobile computing device can be computing devices including, among others devices, a smartphone, a personal digital assistant (PDA), a game console, an MP3 player, and a mobile phone. The mobile computing device may also be referenced as a mobile client device or handheld computing device. The mobile client device includes at least a processor and a storage device for storing an operating system and an application program.
A physical input signal is a primitive signal generated by an input device of the mobile computing device. The physical input signal indicates physical changes in the input device including, among other changes, changes in the resistance or capacitance of an electronic component. In a keypad, for example, the physical input signal indicates whether a certain key was pressed by a user. In a touchscreen, for example, the physical input signal indicates which portion (vertical and horizontal coordinates) of the screen was touched by the user.
A navigation message refers to a message provided by an operating system to indicate a navigation operation intended by the user of the mobile computing device. The user of the mobile computing device provides user input to the input devices of the mobile computing device with an intention to cause certain events at the application programs. For example, when the user presses a ‘back’ key, the user's intention is not to cause an electrical signal from the key but to cause a navigation operation to return to a previous screen of the application program. The navigation message represents the user's such intention, i.e., invoking a navigation operation on the part of the application program. The number and types of navigation messages may vary depending on the mobile computer device. That is, the mobile computing device may use only a subset of the navigation messages provided by the operating system. Alternatively, the mobile computing device may provide navigation messages in addition to common navigation messages defined by the operating system.
Both the smartphone of
The above examples of the mobile computing devices are merely to illustrate different input devices that may be incorporated into mobile computing devices. Various other types of input devices that may be used in the mobile computing devices include, among other devices, a mouse, a trackball, a keyboard, a joystick, a microphone for a voice command system or other input devices yet to be developed.
The processor is associated with the memory 200 to execute instructions for operating the mobile computing device. The memory 200 stores software components including an operating system 220 and application programs 210A-N (hereinafter collectively referred to as the application programs 210). The memory 200 can be implemented by various storage devices including, a flash memory device, a hard disk, a floppy disk, and Random Access Memory (RAM).
The operating system 220 manages the resources of the mobile computing device, and allows the application programs 210 to interact with the input devices 240A-N. The operating system 220 includes drivers 226, hardware information 224, a core navigation module 228, and a style sheet 222. As in conventional operating systems, each device driver is associated with a hardware component such as the screen 238 or the input device 240A-N to allow the application programs 210 to interact with the hardware components. Specifically, the device drivers associated with the input devices 240A-N translate physical input signals from input devices into primitive input event messages (e.g., key ‘a’ of keypad was pressed). In one or more embodiments, a multiple sequence of input event messages is mapped into a single navigation message. The input event messages are then translated by the core navigation module 228 to the navigation messages representing high-level navigation operations.
The hardware information 224 is managed by the operating system to indicate the current hardware configuration of the mobile computing device. The hardware information 224 may be automatically generated by the mobile computing device after detecting the hardware components installed on the mobile computing device. Alternatively, the hardware information 224 may be compiled and stored on the mobile computing device by the manufacture of the mobile computing device. In one embodiment, the hardware information 224 is referenced by the operating system 220 to determine the device drivers to be loaded, and the user input devices 240A-N to be mapped in the core navigation module 228.
The core navigation module 228 provides the navigation messages to the application programs 210. In one embodiment, the core navigation module 228 maps user inputs from different input devices to the navigation messages, as described in detail below with reference to
The style sheet 222 interacts with the application programs 210 to display screen images with consistent appearances on the display devices of the mobile computing device, as described below in detail with reference to
The navigation messages are distinct from the low-level input event messages provided by the drivers 226. The input event messages provided by the drivers 226 indicate certain user inputs from the user input devices and may not represent high-level navigation operations to be invoked at the application program. An input event message provided by the driver upon receiving a physical input signal does not represent certain navigation operations. The input event messages may be mapped by the application programs (in conventional methods) or by the core navigation module (in embodiments of this disclosure) to different operations, and therefore, the input event messages themselves may not represent certain navigation operations. In the mobile computing devices of the present disclosure, the input event messages are translated by the core navigation module 228 into the navigation messages. The navigation messages, contrary to the input event messages, represent navigation operations because the same navigation messages invoke the same navigation operation in multiple application programs 210 to the extent possible.
In one embodiment, the navigation messages indicate, among other operations, a ‘select’ operation, an ‘activation’ operation, a ‘back’ operation, a ‘home’ operation, and an ‘options’ operation. The ‘select’ operation allows the user to select an item of the application program through navigation. The ‘activation’ operation activates an item selected after navigating through menus or items of the application program. The ‘back’ operation indicates returning to a previous state within the application program (e.g., returning to a previous page or screen). The ‘home’ operation changes going to a specific screen in the operating system or the application program. The application programs of the mobile computing device can be organized into a tree structure where each branch of the tree structure represents different sets of operations. The ‘home’ operation allows the user to transition from one branch of operation to the root of the operation or another branch of operation. For example, the ‘home’ operation will allow the user to leave currently active application programs (e.g., a calendar program) and transition to a different axis of operation where predetermined operations such as placing a phone call or receiving a phone call may be performed. The ‘options’ operation allows the user to transition the application program to a state where certain user options for the application programs can be configured.
In another embodiment, the navigation messages further indicates zoom (relative zoom or zoom to a specific scale), scroll/panning, and directional flicking operations.
The number and types of operations to be represented by the navigation messages may differ depending on the type and application of the mobile computing device. In one embodiment, the navigation messages are provided for navigation operations that are essential to the operation of the application programs. In another embodiment, the navigation messages are defined exhaustively to include all the navigation operations that can be performed on the application programs.
In one embodiment, an application program 210A sends codes that represent the visual elements to the style sheet 222. The style sheet 222 interprets the codes from the application program 210A and generates messages representing the visual elements to be displayed on the display devices. By using the style sheet 222, the visual elements may be rendered on the display devices in a consistent manner regardless of differences in the application programs 210 or hardware configurations of the display devices.
In the example of
The mobile computing device of
The screen B 334 may have different capability, characteristics or size compared to the screen A 322. The application programs 210 may display consistent screen images on the screen B despite the different capability or size of the screen because the style sheet 222 translates the code from the application program 210 into the visual element messages adapted to the screen B 334. Specifically, the style sheet 222 references the hardware information 224 to determine the capability, characteristics or size of the screen B. Then the style sheet 222 takes into account the different capability, characteristics or size of screens, and generates the visual element messages in a manner to allow the screen images in different screens to have similar appearances.
The physical input signals from the input devices 314, 318 are translated to the input event messages by respective device drivers 350, 354. Specifically, the physical input signals from the touchscreen 314 are translated into the input event messages by the touchscreen driver 354. Similarly, the physical input signals from the keypad 318 are converted into the input event messages by the keypad driver 350. The scroll wheel driver 360 (shown in a box with dashed lines) is not active because the input/output device set 340A does not include a scroll wheel. The input event messages are provided to the core navigation module 228 to translate the input event messages to the navigation messages, as explained in detail below with reference to
As illustrated in
The examples of
After identifying and retrieving the navigation message corresponding to the input event messages, the core navigation module 228 sends the navigation messages to the application program to invoke the navigation operations. In one embodiment, the core navigation module 228 modifies the navigation messages into a form that can be recognized by a particular application program receiving the navigation messages. For example, the core navigation module 228 may translate a navigation message not recognized by the application program into a sequence of navigation messages recognized by the application program.
In the example of
Some input devices may be associated with only a subset of the navigation operations that can be provided by the operating system 220. In the example of
Despite the differences in the input devices, the core navigation module 228 provides the high-level navigation messages to the application programs. Therefore, the application programs do not need to address the differences in the input signals from different input devices, and consistent operation across different computing devices can be achieved. The application program need not include codes and routines to address different types of input devices. Further, the core navigation module 228 may allow high-level navigation messages to be mapped from a complex sequence of input event messages, thereby allowing use of complex navigation operations otherwise too onerous for the application program to implement. Also, when new input devices become available and are integrated into the mobile computing device, only the core navigation module 228 needs to be updated as rather than modifying all of the application programs to accommodate the new input devices.
After a second user input is received 622 at the second input device (e.g., a touchscreen), the second input device sends 626 the physical input signal to the operating system 220. The operating system 220 (specifically, the device driver for the second input device) receives 642 the physical input signal, and generates a second input event message. The operating system 220 retrieves 646 a second navigation message from the core navigation module 228 and sends 650 the second navigation message to the application program 210. The application program 210 receives 658 the second navigation message and performs a second navigation operation (e.g., ‘activate’ operation) corresponding to the second navigation message.
In one embodiment, the device drivers may include information on mapping of the input event messages with the navigation messages. The information may be transferred to the core navigation module 228 when the device driver becomes active. In one embodiment, the information from device driver is used to insert a new row in the input mapping table 530. By taking advantage of the information in the device driver, the core navigation module 228 is automatically updated or changed when new input devices are coupled or integrate to the mobile computing device.
As noted above, embodiments may be configured as software elements or modules. The software may be processes (e.g., as described with reference to
Some embodiments may be implemented, for example, using any tangible computer-readable media, machine-readable media, or article capable of storing software. The media or article may include any suitable type of memory unit, memory device, memory article, memory medium, storage device, storage article, storage medium and/or storage unit, such as any of the examples described with reference to a memory. The media or article may comprise memory, removable or non-removable media, erasable or non-erasable media, writeable or re-writeable media, digital or analog media, hard disk, floppy disk, Compact Disk Read Only Memory (CD-ROM), Compact Disk Recordable (CD-R), Compact Disk Rewriteable (CD-RW), optical disk, magnetic media, magneto-optical media, removable memory cards or disks, various types of Digital Versatile Disk (DVD), subscriber identify module, tape, cassette, or the like.
As used herein any reference to “one embodiment” or “an embodiment” means that a particular element, feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, method, article, or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Further, unless expressly stated to the contrary, “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B is true (or present).
Also, use of the “a” or “an” are employed to describe elements and components of embodiments of the present invention. This was done merely for convenience and to give a general sense of the embodiments of the present invention. This description should be read to include one or at least one and the singular also includes the plural unless it is obvious that it is meant otherwise.
Embodiments of the present disclosure provide an environment where application programs are relieved of tasks for processing low-level input messages associated with different input devices. The low-level input messages are translated by the operating system to a high-level navigation message and then provided to the application programs. Advantageously, the codes in the application programs need not be changed to address different low-level input messages associated with different input devices. Also, consistent navigation operations within and beyond the application programs can be achieved because the same high-level navigation messages are used across different application programs.
Upon reading this disclosure, those of skill in the art will appreciate still additional alternative structural and functional designs for a system and a process for a providing navigation messages through the disclosed principles herein. Thus, while particular embodiments and applications have been illustrated and described, it is to be understood that the disclosed embodiments are not limited to the precise construction and components disclosed herein and that various modifications, changes and variations will be apparent to those skilled in the art may be made in the arrangement, operation and details of the method and apparatus of the present embodiments disclosed herein without departing from the spirit and scope as defined in the appended claims.