System and method for an extendable mobile communications device user interface
A system and method for an extendable software interface includes software architecture for use in a mobile device having a processor and a memory device. The software architecture includes a set of first-order controller software instructions configured to interface the application program with a first-order data model, and a first-order data object stored in the memory device in the form of the first-order data model. The first-order data object includes a second-order data object. A second-order set of controller software instructions configured to interact with the second-order data object is also included in the software architecture.
Latest BlackBerry Limited Patents:
This application is a continuation of U.S. patent application Ser. No. 12/887,758, filed on Sep. 22, 2010, which is a continuation of U.S. patent application Ser. No. 11/237,010, filed on Sep. 28, 2005, (now U.S. Pat. No. 7,805,729), which is a continuation of U.S. patent application Ser. No. 09/897,207, filed on Jul. 2, 2001, (now U.S. Pat. No. 6,990,672), which claimed priority from U.S. Provisional Application No. 60/215,605, filed Jun. 30, 2000. These prior applications, including their entire written descriptions and drawing figures, are hereby incorporated into the present application by reference.
BACKGROUND1. Field of the Invention
This invention relates generally to a software interface for a mobile device. More particularly, the invention provides an extendable software interface enabling forward compatibility in a mobile device, such that new applications may be easily integrated into the mobile device. This invention is particularly well-suited for use in Personal Digital Assistants, mobile communication devices, cellular phones, and wireless two-way email communication devices (collectively referred to herein as “mobile devices”).
2. Description of the Related Art
Typical mobile device interfaces are constrained by resource limitations on the mobile device as compared to those of a desktop system. As a result of these constraints, known mobile device interfaces are generally either hard-wired or hard-coded. In either case, the known mobile device interfaces are immutable once the mobile device has been manufactured. For instance, in a hard-wired mobile device, physical components, such as push buttons and displays, are generally integrated into a user interface by control logic wired into a printed circuit board. Consequently, a hard-wired mobile device is not capable of being upgraded to support new applications. In a hard-coded mobile device, a programmable device is typically used for the control logic, and the user interface is generally controlled by the firmware and/or operating system of the mobile device. New applications can generally be added to a hard-coded mobile device, but this process typically involves replacing or upgrading the interface software, which often involves a risk of breaking compatibility with legacy features of the mobile device. In addition, neither hard-wired nor hard-coded mobile devices typically allow a user to seamlessly interface between an application program and data types associated with other application programs.
SUMMARYA system and method for an extendable software interface includes a software architecture for use in a mobile device having a processor and a memory device. The software architecture comprises a plurality of application programs stored in the memory device and executed by the processor, and at least one controller module for interfacing the plurality of application programs with a data model configured to interact with a particular type of data object. Each controller module utilizes one or more generic interfaces with the plurality of application programs, and also utilizes a specific interface with the data model.
Referring now to the drawing figures,
Operationally, the software interface of the mobile device 10 is extended using the software modules 30 and 32, and the generic interfaces 18. The software modules 30 and 32 are executed by the virtual machine 28, which is preferably an object oriented run-time environment such as Sun Micro System's J2ME (JAVA® 2 Micro Edition). The software modules 30 and 32 are preferably constructed using a JAVA® compiler capable of enforcing a software application interoperation architecture that takes on the form of a collection of compiled classes and objects along with an application programming interface (API).
Data models 32 are classes that represent the various types of data stored on the mobile device 10. The types of data may include, for example, e-mail messages, address book entries, calendar items, tasks, and memos. In addition, next-generation mobile devices may store data such as SMS messages, phone call logs, voice mail indicators, WAP requests, multiple e-mail sources, HTML content exchanges, specialized banking services, financial services, field server and customer service offerings, or downloads from corporate databases.
The data models 32 are preferably stored on the mobile device 10 in the form of Java objects for execution in the J2ME run time environment. Each data model 32 is designed for a particular type of data object, and includes specialized functions for retrieving information associated with the data type. For example, an e-mail message model may have specialized functions for retrieving the subject of the e-mail object and for retrieving the body of the e-mail object. A calendar entry model, on the other hand, may include specialized functions specific to a calendar entry object, such as a function capable of retrieving the duration of an appointment.
Each type of data model 32 has an associated controller 30 capable of interacting with the specific functions of the data model 32 type and representing the data model 32 in a uniform way to the rest of the software interface system. Operationally, the controllers 30 isolate the data models 32 from the generic interfaces 18, and implement the generic interfaces 18 such that each controller 30 can be easily hosted by any application program 34 that supports the genetic interfaces 18. In this manner, the controllers 30 present a common, standard interface to any application 34; and each application that supports the generic interfaces 18 is able to interact with any arbitrary controller 30. For example, an e-mail application using one or more of the generic interfaces 18 can interface with an address book controller to retrieve an e-mail address from an address book data model. Moreover, existing controllers 30 can be used to interface with any new applications supporting the generic interfaces 18. In this manner, a mobile device user is able to install new applications without having to upgrade his or her operating system 26 or interface software 28. The flexibility provided by the interoperability of the controllers 30 may also enable the mobile device user to expand the functionality of his or her mobile device 10 by interacting with third party applications, such as banking or other commercial services.
The interaction between an application program 34 and any arbitrary controller 30 is primarily made possible by generic interfaces 18 that are implemented each controller 30. The generic interfaces 18 are generic in the sense that they are object-oriented as opposed to being specific to a certain type of data. Put another way, each generic interface 18 is preferably programmed to perform a certain operation regardless of the data type. Operationally, each application 34 is preferably programmed to query any controller 30 to determine if the controller 30 supports one or more generic interfaces 18 required to perform a given operation. If so, the application 34 then interacts with the controller 30 and its associated data model 32 to complete the operation. For instance, an application 34 may query a controller 30 to determine whether it supports a generic interface 18 capable of painting an object (such as the body of an e-mail message) onto a screen, and if so, then interface with an controller 30 to display the object. In this manner, the same type of generic interface 18 that is used by an application 34 to display the body of an e-mail message could also be used, for example, to display a clipping from a lengthy SMS message. In another example, the same generic interface 18 used to display the e-mail message may also be used to receive an e-mail address from an e-mail controller and interface with an address book application to paint the address into an address file. Preferably, new controllers could also be implemented that support new generic interfaces. Therefore, new controllers can easily be designed to interface With upgraded applications supporting new functions, and still be compatible with older applications as long as the new controller includes the older generic interfaces.
Three exemplary generic interfaces that may be implemented by a controller 30 are briefly described below. It should be understood, however, that these are just a few examples of the many types of generic interfaces that could be used within the system shown in
- 1. PaintProvider—The Paint Provider interface supports painting a data model 32 into a given region of an application program 34. For example, this generic interface 18 could be used to instruct a controller to paint a data model into a list view. The PaintProvider interface may be implemented as follows:
- 2. FieldProvider TheFieldProvider interface enables a controller 30 to provide an application program 34 with a read-only or editable field from a data model 32. For instance, the FieldProvider interface may enable a data model 32 to be displayed in a list of fields, such as in the edit screen of an email message. The FieldProvider interface may be implemented as follows:
- 3. VerbProvider—The VerbProvider interface enables a controller 30 to supply an array of “verbs” when a user selects an object associated with a data model 32. For instance, when a user positions a cursor over an object (such as a portion of text) associated with a particular data model, the VerbProvider interface may display a list of menu selections specific to that data model. The VerbProvider interface may be implemented as follows:
In a preferred embodiment, however, the persisted list should not identify a controller 92, 94 or 96 for each data object. Rather, the appropriate controller 92, 94 or 96 is preferably identified as some action is taken with a data model 98, 100, 102, 104, 106 or 108. When an application 34 needs to access a data model, the application 34 preferably (1) queries the data model for the correct controller, (2) calls the controller, and then (3) passes in the data model as the first parameter. In this manner, the controllers 92, 94 and 96 are stateless objects such that only one instance of a controller 92, 94 or 96 is capable of handling all of the data models of a certain type that are executing in the system. For example, in
For instance, with reference to
In step 650, the second-order controller preferably provides a list of functions that may be performed on the second-order object. Once a function associated with a second-order object has been selected by the mobile device user (step 660), the second-order controller preferably establishes whether the function (1) relates to the current application, or (2) requires access to another application installed on the mobile device (step 670). For instance, if an address is selected as a second-order object within an e-mail message, then the user may be given the option to (1) insert the address into the “To:” line of a new message, or (2) insert the address into an address book. If the user chooses to compose a new message using the selected address in the “To:” line, then the second-order (address) controller preferably knows that the selected operation relates to the e-mail messaging application that is already executing. Then, the first and second-order controllers may interface with the currently executing application to perform the selected function (step 700). If, however, the user chooses to insert the object into an address book file, then the e-mail message controller and second-order address controller need access to an address book application before the function can be completed. Therefore, when another application installed on the mobile device is required to perform the selected function, the new application is preferably launched by either the first or second-order controller (step 680). Then, because the first and second-order applications utilize generic interfaces, both can interface with the new application to perform the selected function (steps 690 and 700).
The embodiments described herein are examples of structures, systems or methods having elements corresponding to the elements of the invention recited in the claims. This written description may enable those skilled in the art to make and use embodiments having alternative elements that likewise correspond to the elements of the invention recited in the claims. The intended scope of the invention thus includes other structures, systems or methods that do not differ from the literal language of the claims, and further includes other structures, systems or methods with insubstantial differences from the literal language of the claims.
Claims
1. A method of operating a mobile device having a display, comprising:
- receiving at the mobile device an electronic a short message service (SMS) message having a body, with an e-mail address within the body;
- displaying on the display at least a portion of the electronic SMS message including the e-mail address, wherein the portion of the SMS message is displayed in a first application operating on the mobile device; and
- determining, by a message controller at the mobile device, that the SMS message includes the e-mail address, wherein the message controller is associated with an SMS data model, and the SMS data model includes a retrieving function for retrieving the e-mail address from the SMS message;
- after determining that the SMS message includes the e-mail address, determining that a cursor is effected near the displayed e-mail address;
- in response to a selection of the displayed e-mail address, determining that the cursor is effected near the displayed e-mail address, activating, by the message controller, an e-mail address controller, wherein the e-mail address controller is different than the message controller, the e-mail address controller is associated with an e-mail address data model, wherein the e-mail address data model is associated with at least two functions to be performed on the e-mail address, and the e-mail address controller is configured to display the at least two functions;
- displaying, by the e-mail address controller at the mobile device, on the display an a first interface for selecting one of including the at least adding the e-mail address to an address book and creating an e-mail message addressed to the e-mail address two functions to be performed on the e-mail address, wherein the at least two functions include a first function executed by a second application and a second function executed by a third application different than the first and second applications;
- receiving, from the first interface, a selection of the first function executed by the second application;
- launching, by the e-mail address controller, the second application;
- retrieving, by the message controller using the SMS data model, the e-mail address from the SMS message; and
- providing, by the message controller, the retrieved e-mail address to the second application.
2. The method of claim 1, wherein the electronic message is an e-mail message.
3. The method of claim 1, wherein the electronic message is an SMS message.
4. The method of claim 1, wherein the receiving at the mobile device the selection of the e-mail address comprises receiving a cursor positioning over the e-mail address.
5. The method of claim 1, further comprising receiving selection of one of the at least adding the e-mail address to the address book and creating the e-mail message addressed to the e-mail address.
6. The method of claim 5 1, further comprising:
- after launching an the second application associated with the selection; and
- displaying a second interface different than the first interface.
7. The method of claim 1, wherein the first interface comprises a menu list.
8. A mobile communication device, comprising:
- a display;
- an input device; and
- a processor, connected to the display and the input device, and configured to:
- receive an electronic a short message service (SMS) message having a body, with an e-mail address within the body,
- display on the display at least a portion of the electronic SMS message including the e-mail address, wherein the portion of the SMS message is displayed in a first application operating on the mobile communication device, and
- determine, by a message controller at the mobile communication device, that the SMS message includes the e-mail address, wherein the message controller is associated with an SMS data model, and the SMS data model includes a retrieving function for retrieving the e-mail address from the SMS message;
- after determining that the SMS message includes the e-mail address, determine that a cursor is effected near the displayed e-mail address;
- in response to a selection of the displayed e-mail address at the input device determining that the cursor is near the displayed e-mail address, activate, by the message controller, an e-mail address controller, wherein the e-mail address controller is different than the message controller, the e-mail address controller is associated with an e-mail address data model, wherein the e-mail address data model is associated with at least two functions to be performed on the e-mail address, and the e-mail address controller is configured to display the at least two functions;
- display, by the e-mail address controller at the mobile communication device, on the display an a first interface for selecting from including the at least two functions that can be performed with the e-mail address, the at least two functions including adding the e-mail address to an address book and creating an e-mail message addressed to the e-mail address to be performed on the e-mail address, wherein the at least two functions include a first function executed by a second application and a second function executed by a third application different than the first and second applications;
- receive, from the first interface, a selection of the first function executed by the second application;
- launch, by the e-mail address controller, the second application;
- retrieve, by the message controller using the SMS data model, the e-mail address from the SMS message; and
- provide, by the message controller, the retrieved e-mail address to the second application.
9. The mobile communication device of claim 8, wherein the electronic message is an e-mail message.
10. The mobile communication device of claim 8, wherein the electronic message is an SMS message.
11. The mobile communication device of claim 8, wherein the at least two functions comprise an operation involving an application other than a message application.
12. The mobile communication device of claim 8, wherein the at least two functions comprise an operation involving an address book application.
13. The mobile communication device of claim 8, wherein the receiving the selection of the displayed e-mail address comprises receiving a cursor positioning over the e-mail address.
14. The mobile communication device of claim 8, further comprising the processor configured to receive selection of one of the at least two functions.
15. The mobile communication device of claim 14, further comprising the processor configured to launch an application associated with the selected function.
16. The method mobile communication device of claim 8, wherein the first interface comprises a menu list.
17. A method of providing functionality on a mobile device having a display, comprising:
- receiving at the mobile device an e-mail message with an e-mail address within a body of the e-mail message;
- displaying on the display at least a portion of the e-mail message including the e-mail address;
- in response to a selection of the displayed e-mail address, displaying on the display a list of at least two functions that can be performed with the e-mail address, the at least two functions including adding the e-mail address to an address book on the mobile device and creating an e-mail message addressed to the e-mail address; and
- receiving a selection of at least one of the at least two functions, and then performing the selected function.
18. A mobile communication device, comprising:
- a display;
- a transceiver; and
- a processor connected with the display and the transceiver, the processor configured for:
- receiving with the transceiver an e-mail message having an e-mail address within a body of the e-mail message;
- displaying on the display at least a portion of the e-mail message including the e-mail address;
- in response to a selection of the displayed e-mail address, displaying on the display a list of at least two functions that can be performed with the e-mail address, the at least two functions including adding the e-mail address to an address book on the mobile device and creating an e-mail message addressed to the e-mail address; and
- receiving a selection of at least one of the at least two functions, and then performing the selected function.
19. A non-transitory computer readable medium storing instructions to cause a processor to perform operations comprising:
- receiving, at a mobile device, a short message service (SMS) message having a body, with an e-mail address within the body;
- displaying at least a portion of the SMS message including the e-mail address, wherein the portion of the SMS message is displayed in a first application;
- determining, by a message controller at the mobile device, that the SMS message includes the e-mail address, wherein the message controller is associated with an SMS data model, and the SMS data model includes a retrieving function for retrieving the e-mail address from the SMS message;
- after determining that the SMS message includes the e-mail address, determining that a cursor is effected near the displayed e-mail address; and
- in response to determining that the cursor is effected near the displayed e-mail address, activating, by the message controller, an e-mail address controller, wherein the e-mail address controller is different than the message controller, the e-mail address controller is associated with an e-mail address data model, wherein the e-mail address data model is associated with at least two functions to be performed on the e-mail address, and the e-mail address controller is configured to display the at least two functions;
- displaying, by the e-mail address controller at the mobile device, an interface including the at least two functions to be performed on the e-mail address, wherein the at least two functions include a first function executed by a second application and a second function executed by a third application different than the first and second applications;
- receiving, from the interface, a selection of the first function executed by the second application;
- launching, by the e-mail address controller, the second application;
- retrieving, by the message controller using the SMS data model, the e-mail address from the SMS message; and
- providing, by the message controller, the retrieved e-mail address to the second application.
20. The computer readable medium of claim 19, wherein the interface comprises a menu list.
5649222 | July 15, 1997 | Mogilevsky |
5859636 | January 12, 1999 | Pandit |
5946629 | August 31, 1999 | Sawyer et al. |
5946647 | August 31, 1999 | Miller |
5966652 | October 12, 1999 | Coad |
6005942 | December 21, 1999 | Chan et al. |
6020889 | February 1, 2000 | Tarbox |
6121968 | September 19, 2000 | Arcuri |
6282294 | August 28, 2001 | Deo et al. |
6292833 | September 18, 2001 | Liao et al. |
6421717 | July 16, 2002 | Kloba et al. |
6424360 | July 23, 2002 | Torres |
6467081 | October 15, 2002 | Vaidyanathan |
6493006 | December 10, 2002 | Gourdol |
6553223 | April 22, 2003 | Bayley et al. |
6684269 | January 27, 2004 | Wagner |
6834372 | December 21, 2004 | Becker |
6870828 | March 22, 2005 | Giordano, III |
7003327 | February 21, 2006 | Payne |
7010616 | March 7, 2006 | Carlson et al. |
7054464 | May 30, 2006 | Poor |
7117445 | October 3, 2006 | Berger |
7747948 | June 29, 2010 | Jung |
20020046343 | April 18, 2002 | Deo et al. |
20020156938 | October 24, 2002 | Wong et al. |
20030097361 | May 22, 2003 | Huang et al. |
20050027802 | February 3, 2005 | Madsen et al. |
20050044148 | February 24, 2005 | Son et al. |
20060026603 | February 2, 2006 | Maguire et al. |
20150160803 | June 11, 2015 | Lopez |
- Jonathan O'Donnell, “Business Communications, Communications on the Internet,” Jun. 3, 2000; retrieved on Jul. 28, 2014 from http://www.jod.id.au/latrobe.html.
- Ernest Ackerman & Karen Hartman, “Email Basics,” Nov. 13, 1998; retrieved on Nov. 11, 2014 from http://webliminal.com/search/bemail.htm.
- Michael Antoniak, “Buyer's Guide: Handheld Computers and PDAs,” Mar. 1998; retrieved on Nov. 7, 2014 from http://realtormag.realtor.org.
- US Notice of Allowance for U.S. Appl. No. 12/887,758 mailed Feb. 21, 2012; 7 pages.
- US Office Action for U.S. Appl. No. 12/887,758 mailed Nov. 9, 2011; 9 pages.
- Canadian Office Action for CA Application Serial No. 2,352,024 mailed Mar. 2, 2007; 2 pages.
- Canadian Office Action for CA Application Serial No. 2,352,024 mailed Apr. 27, 2005; 2 pages.
- U.S. Appl. No. 11/237,010; Non-Final Office Action; Date Filed: Sep. 28, 2005; Mail Date: Oct. 19, 2009; pp. 1-8.
- U.S. Appl. No. 11/237,010; Notice of Allowance; Date Filed: Sep. 28, 2005; Mail Date: May 26, 2010; pp. 1-6.
- Canadian Office Action for CA Application Serial No. 2,352,024 mailed Feb. 2, 2004; 2 pages.
- U.S. Appl. No. 09/897,207; Non-Final Office Action; Date Filed: Jul. 2, 2001; Date Mailed: Mar. 18, 2005; pp. 1-12.
- U.S. Appl. No. 09/897,207; Notice of Allowance; Date Filed: Jul. 2, 2001; Date Mailed: Jul. 6, 2005; pp. 1-4.
Type: Grant
Filed: Jun 6, 2014
Date of Patent: Oct 9, 2018
Assignee: BlackBerry Limited (Waterloo, Ontario)
Inventors: Michael Maguire (Kitchener), Krishna K. Pathiyal (Los Gatos, CA)
Primary Examiner: Adam L Basehoar
Application Number: 14/298,755
International Classification: G06F 15/16 (20060101); G06F 9/451 (20180101); H04M 1/725 (20060101);