1. Field of the Invention
This invention relates generally to mobile devices, and more particularly to methods for providing smooth and delay-reduced navigation through digital content offered for purchase over a wireless connection.
2. Description of the Related Art
Portable consumer devices used for communication, business and entertainment have continued to increase in popularity over the years due to their increased functionally and affordability. Wireless phones, for example, have grown to such popularity over the last several years so that having a wireless phone has become an expected necessity. With this increase in popularity and increases in technology, wireless phones continue to add features to enable users to access data, navigate through menus, and customize the phone's appearance and sounds. For instance, the sound that a wireless phone makes when an incoming call arrives is referred to a ringtone (e.g., not unlike the definition of a standard home phone).
Most wireless phones come with a set number of ringtones, but users are also capable of accessing other special ringtones from a wireless carrier. As used herein, the term “wireless carrier” refers to the company that provides the telephone service and also provides access to content. To access the content, the wireless carrier requires the user to use the wireless phone's specialized browser to connect to its homepage, for example. Once connected, the user is required to navigate through a complex sequence of many screens by using the typical arrow keys of a current day wireless phone and select particular menu items. The process of navigating through the many screens and selecting different options is a time consuming process, which requires the user's undivided attention. A major disadvantage with this common practice of shifting through many screens and selecting options is that each selection in the navigation requires the time consuming interactive connection and downloads of data from a provisioning server of the wireless carrier.
As a result, each click requires a wait on the part of the user (i.e., also referred to “click-and-wait” delays). Although this may seem to be a minor price to pay for wirelessly navigating through selection screens, the navigation can be very time consuming. In the case of selecting ringtones for purchase from the wireless carrier's server, the navigation many times will take the user several minutes to repetitively perform the operations of manually clicking and selecting options.
Once the user finally reaches the desired ringtone, the ringtone will only be displayed by name, and the user will have to proceed through another maze of screens to complete the purchase of the desired ringtone. Further, users are less likely to purchase content without being able perform a preview. For example in the case of a ringtone, the preview activity is the ability for the device to be able to play a shortened version of the ringtone.
As mentioned above, a problem with current technology is that each manual selection step will necessarily required the user to actively search, select, and wait. Once the data is pulled in response to the selection, the user can repeat the process again and again. In many cases, the need for repetitively clicking on screens and selecting options is that users rarely access the wireless carrier in this way to obtain a particular ringtone. Users interested in obtaining a ringtone, may go on to browse and window-shop till the see a ringtone that may appeal to them. This natural window-shopping process necessarily adds the need for the user to continually select and wait, select and wait, . . . In one current technology example, wireless phone browsers typically use the well known wireless application protocol (WAP) to enable browser interactivity with desired content. Thus, when users perform the active searches and selections, the user is essentially waiting for the server to return the selected content as well as the navigation rendering code.
In the example of ringtones, users will generally avoid spending time to obtain ringstones that are relatively inexpensive if the cost comes at such an extended amount of navigation, search, and wait times commonly experienced by users seeking to obtain such a feature. Although examples have concentrated on ringtones, the problems described herein are equally applicable to the selection and acquiring of other digital content.
Broadly speaking, the disclosed embodiments provide methods and system for accessing, navigating and handling efficient interaction with digital media content from a portable device. The methods provide techniques for interaction that facilitate user interactivity and enable easy access to particular digital media content, while reducing delays associated with prior art click and wait methods.
In one embodiment, a method for handling access to media content that is requested by a wireless device is provided. The method includes accessing, through a wireless device, a media provider over a wireless network. Then, the method includes selecting a first screen of the media provider. The first screen identifying a first storefront that defines a first type of media and associated selections of that first type of media. The method further includes downloading a first of the associated selections of that first type of media to a local buffer of the wireless device. The downloading is triggered automatically when the first screen is selected, and the first of the associated selections is displayed as available for sampling while a remainder of the associated selections continue to download to the local buffer. And, the remainder of the associated selections continue to download only while the first screen is selected.
In another embodiment, a method for handling access to digital media content over a wireless connection is provided. The method includes enabling selection, through a wireless device, of a type of digital media content over the wireless connection. Then, rendering storefront navigation and presentation data for the type of digital media content. The storefront navigation and presentation data being rendered from local memory of the wireless device, such that the storefront navigation and presentation data is not downloaded over the wireless connection. The method further includes downloading a listing of digital media content to display on a screen of the wireless device upon navigating to the storefront. The downloading of each of the digital media content of the listing occurs without requiring specific selection of the digital media content from the listing.
In yet another embodiment, a portable electronic device is provided. The portable electronic device is configured to handle access to digital media content over a wireless connection. The portable electronic device includes memory for storing navigation and presentation data, where the navigation and presentation data enables efficient interfacing with digital media content obtained over the wireless connection. The portable electronic device further includes a buffer for storing digital media content obtained over the wireless connection. The navigation and presentation data is executed to cause downloading of digital media content from a storefront that identifies a particular type of digital media content. The downloading of media items from the storefront is commenced automatically upon navigating to the storefront, and sampling of the downloaded media items is enabled.
Other aspects and advantages of the invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention.
In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without some or all of these specific details. In other instances, well known process steps have not been described in detail in order not to unnecessarily obscure the present invention.
Reference will now be made to the environment of the invention in section I, and in section II , example embodiments of the invention will be described.
I. Environment Description
As embodiments of the present invention can implement the J2EE, J2ME, or Enterprise JavaBeans (EJB) application, a brief introduction to J2ME, J2EE, and EJB architectures are provided below. The Java 2, Micro Edition (J2ME) platform is a Java platform for consumer and embedded devices such as mobile phones, Personal Digital Assistants (PDAs), TV set-top boxes, in-vehicle telematics systems, and a broad range of embedded devices. Similar to the enterprise (J2EE), desktop (J2SE™) and smart card (Java Card™) counterparts, the J2ME platform is a set of standard Java application program interfaces (APIs) defined through the Java Community ProcessSM program by expert groups that include leading device manufacturers, software vendors and service providers.
The J2ME platform delivers the power and benefits of Java technology tailored for consumer and embedded devices. The J2ME provides a flexible user interface, robust security model, broad range of built-in network protocols, and support for networked and disconnected applications. J2ME applications are written for a wide range of devices. As such, the J2ME applications can be downloaded dynamically and leverage each native capability of each device. The J2ME platform can be deployed on millions of devices (e.g., mobile phones, PDAs, automotive devices, etc.) supported by leading Java technology tools vendors and used by companies worldwide. Briefly stated, J2ME is the preferable platform for consumer and embedded devices.
The SDK provides software programmers with the speed, security and functionality to create cross-platform, mission critical applications. The JRE provides the execution environment needed to run Java platform-based applets and applications.
The J2ME architecture defines configurations, profiles and optional packages as elements for building complete Java runtime environments that meet the requirements for a broad range of devices and target markets. Each combination is optimized for the memory, processing power, and I/O capabilities of a related category of devices. The result is a common Java platform that fully leverages each type of device to deliver a rich user experience.
Configurations
Configurations are composed of a virtual machine and a minimal set of class libraries. The configurations provide the base functionality for a particular range of devices that share similar characteristics (e.g., network connectivity, memory footprint, etc.). Currently, there are two J2ME configurations: the Connected Limited Device Configuration (CLDC), and the Connected Device Configuration (CDC):
CLDC
CLDC is the smaller of the two configurations, and by way of example, is designed for devices with intermittent network connections, slow processors, and limited memory (e.g., mobile phones, two-way pagers, PDAs, etc.). By way of example, the devices may have either 16- or 32-bit CPUs, and a minimum of 128 KB to 512 KB of memory available for the Java platform implementation and the associated applications.
CDC
CDC is designed for devices having more memory, faster processors, and greater network bandwidth (e.g., TV set-top boxes, residential gateways, in-vehicle telematics systems, high-end PDAs, etc.). CDC includes a full-featured Java virtual machine, and a much larger subset of the J2SE platform than CLDC. As a result, most CDC-targeted devices have 32-bit CPUs and a minimum of 2 MB of memory available for the Java platform and associated applications.
Profiles
In order to provide a complete runtime environment targeted at specific device categories, configurations can be combined with a set of higher level APIs or profiles that further define the application life cycle model, the user interface, and access to device specific properties.
Mobile Information Device Profile
The Mobile Information Device Profile (MIDP) is designed for mobile phones and entry-level PDAs. Broadly speaking, MIDP can be used on any computing device that needs to take advantage of MIDP's functions. MIDP is a set of Java APIs which, together with CLDC, provides a complete J2ME application runtime environment targeted at mobile information devices, such as mobile phones and entry level PDAs. In this manner, MIDP offers the core application functionality required by mobile applications (e.g., the user interface, network connectivity, local data storage, and application management, etc.). Combined with CLDC, MIDP provides a substantially complete Java runtime environment that leverages the capabilities of handheld devices and minimizes both memory and power consumption.
Currently, CLDC, combined with the MIDP is the Java runtime environment for mobile information devices (MIDs) (e.g., phones, entry level PDAs, etc.). MIDP provides the core application functionality required by mobile applications (e.g., the user interface, network connectivity, local data storage, and application lifecycle management packaged as a standardized Java runtime environment and set of Java APIs, etc.).
Foundation Profile
CDC profiles are layered so that profiles can be added as needed to provide application functionality for different types of devices. The Foundation Profile (FP) is the lowest level profile for CDC and provides a network-capable implementation of CDC that can be used for deeply embedded implementations without a user interface. FP can also be combined with Personal Basis Profile and Personal Profile for devices that require a graphical user interface (GUI).
Personal Profile
The Personal Profile (PP) is the CDC profile aimed at devices requiring full GUI or Internet applet support (e.g., high-end PDAs, communicator-type devices, game consoles, etc.). PP includes the full Java Abstract Window Toolkit (AWT) libraries and offers Web fidelity capable of easily running Web-based applets designed for use in a desktop environment. PP replaces PersonalJava™ technology and provides PersonalJava applications a clear migration path to the J2ME platform.
Personal Basis Profile
The Personal Basis Profile (PBP), is a subset of PP. PBP provides an application environment for network connected devices that support a basic level of graphical presentation or require the use of specialized graphical toolkits for specific applications. Devices (e.g., TV set-top boxes, in-vehicle telematics systems, information kiosks, etc.) Both PP and PBP are layered on top of CDC and FP.
Optional Packages
The J2ME platform can be further extended by combining various optional packages with CLDC, CDC, and their corresponding profiles. In this manner, specific market requirements can be addressed. Furthermore, optional packages can offer standard APIs for using both existing and emerging technologies (e.g., Bluetooth, Web services, wireless messaging, multimedia, database connectivity, etc.). As optional packages are modular, device manufacturers can include the optional packages, as needed, to fully leverage the features of each device.
By way of example, J2ME™ Mobile Media API Reference Implementation Version 1.0 (MMAPI) extends the functionality of the J2ME platform by providing audio, video and other time-based multimedia support to resource-constrained devices. MMAPI allows Java developers to gain access native multimedia services available on a given device.
The reference implementation for MMAPI runs on the CLDC/MIDP profile running on Windows 2000. By way of example, the reference implementation for MMAPI has support for simple tone generation, tone sequencing, audio/video file playback and streaming, interactive MIDI, and audio/video capture. The J2ME MMAPI reference implementation is a source code product provided for porting to various platforms. The MMAPI specification has been developed through the Java Community ProcesssSM (i.e., JSR-135) by an expert group composed of companies representing device manufacturers, wireless operators and software vendors.
As the embodiments of the present invention can also involve using Enterprise Java Beans (EJB)™ in J2EE platform, below are brief descriptions to the J2EE platform and EJBs. The Java™ 2 Enterprise Edition (J2EE™), developed by Sun Microsystems, Inc., is the development and deployment environment for enterprise software applications capable of running on a variety of desktop computers, servers, and other computing devices. J2EE provides architecture for developing, deploying, and executing applications in a distributed-object environment. In one embodiment, the J2EE platform comprises the Java 2 Software Development Kit, Standard Edition (SDK), and Java Runtime Environment (JRE).
J2EE facilitates building Web-based applications. Broadly speaking, J2EE services are performed in the middle tier between the user browser and the databases and legacy information systems. J2EE comprises a specification, reference implementation and a set of testing suites. J2EE further comprises Enterprise JavaBeans (EJB), JavaServer Pages (JSP), Java servlets, and a plurality of interfaces for linking to information resources in the platform.
The J2EE specifications define how applications should be written for the J2EE environment. Thus the specifications provide the contract between the applications and the J2EE platform. However, there exist a class of JAVA applications that require customization of the J2EE platform. These applications generally utilize application specific strategies created by a particular vendor to accomplish specific tasks that are not provided by the general JAVA platform on which the application executes. Examples of this class of JAVA applications include telecommunications applications and services that are deployed within a particular service provider's environment. This class of applications typically requires continuous availability, which means the environment in which the applications operate requires the applications to be available most of the time.
Summarily, EJB architecture promotes the creation of re-usable server-side behaviors or instructions in the Java language, connectors to enable access to existing enterprise systems, and easy-to-deploy program modules. The EJB architecture creates a collaborative architecture to provide services virtually anywhere, and for a wide range of customers and devices, including mobile devices.
The EJB architecture defines a model for the development and deployment of reusable Java server components called EJB components (i.e., EJB beans). As designed, the EJB component is a non-visible server component having methods that provide business logic in a distributed application. In one example, the EJB architecture includes the EJB client and the EJB server. The EJB client is configured to provide the user-interface logic on a client machine and to make calls to remote EJB components on a server. For instance, the EJB client is provided the information as to how to find the EJB server and how to interact with the EJB components.
In one example, the EJB client does not communicate directly with the EJB component. In one aspect, the EJB container provides the client proxy objects that implement the home and remote interfaces of the component. In another instance, the remote interface is configured to define the business methods that can be called by the client. In another embodiment, the client is configured to invoke the methods resulting in the updating of the database. Thus, the EJB beans are reusable components that can be accessed by client programs. The application programmer codes the business logic into the EJBs and deploys them into a J2EE compliant server. In one example, the server complying with the J2EE specification provides the required system-level services, thus allowing the application programmer to concentrate on business logic.
The EJB server (i.e., the EJB application) includes an EJB container, which in one example provides the services required by the EJB component. For instance, the EJB container may be configured to include one of an EJB home interface or EJB Remote interface and EJB beans. In one embodiment, the EJB home interface and the EJB remote interface are defined in the same Java virtual machine. In a different embodiment, the EJB home interface and the EJB remote interface may be defined on different Java virtual machines or separate physical computers.
In one example, the EJB specification defines a container as the environment in which one or more EJB components can be executed. In accordance to one example, the EJB container provides the infrastructure required to run distributed components thus allowing the clients and component developers to focus on programming business logic. Simply stated, the container manages the low-level communications between the clients and the EJB beans. In one example, once an EJB bean is created by a client, the client invokes methods on the EJB bean as if the EJB bean were running in the same virtual machine as the client.
Furthermore, the clients are unaware of activities on the EJB bean, since the container is configured to sit between the clients and the EJB beans. For instance, if an EJB bean is passivated, its remote reference on the client remains intact. Thus, when the client later invokes a method on the remote reference, the container activates the EJB bean to service the request.
The EJB Container Encapsulates:
In one example, three types of EJB components can be enumerated.
Each EJB component further has a transaction attribute configured to determine the manner the instances of the component participate in transactions. As designed, the EJB container provides services which can include transaction and persistence support to the EJB components. As to the transaction support, the EJB container is configured to support transactions. In one example, when the bean is deployed, the EJB container provides the necessary transaction support. In regard to the persistence support, the EJB container is configured to provide support for persistence of the EJB components, which in one embodiment, is defined as the capability of the EJB component to save and retrieve its state. In this manner, the EJB component does not have to be re-created with each use.
In one example, the EJB architecture is a three-tiered architecture in which the clients reside on the first tier, the application server and the components (i.e., EJB beans) reside on the second tier, and the databases reside on the same host as the EJB server. In accordance to one implementation, the EJB server executes methods on a component from the client or another component, retrieves data from databases, and performs other communications. The EJB server further handles the details of transactions, threads, security, database connections, and network communication. Summarily, the EJB clients request business-logic services from EJB beans running on the second-tier. The EJB beans then use the system services provided by the second-tier server to access data from existing systems in the third tier. The EJB beans apply the business rules to the data, and return the results to the clients in the first-tier.
In one example, the client contains the user interface. The business logic is configured to be separate from both the clients and the databases and resides in the same tier (i.e., second tier) as components that analyze data, perform computations, or retrieve information from data sources and processes.
As J2ME, J2EE, and EJBs use the Java™ (hereinafter “Java”) programming language, in a like manner, an overview of Java is provided below. In operation, a user of a typical Java based system interacts with an application layer of a system generally written by a third party developer. The application layer generally provides the user interface for the system. A Java module is used to process commands received by the application layer. A Java virtual machine is used as an interpreter to provide portability to Java applications. In general, developers design Java applications as hardware independent software modules, which are executed Java virtual machines. The Java virtual machine layer is developed to operate in conjunction with the native operating system of a particular hardware, which represents the physical hardware on which the system operates or runs. In this manner, Java applications can be ported from one hardware device to another without requiring updating of the application code.
Unlike most programming languages, in which a program is compiled into machine-dependent, executable program code, Java classes are compiled into machine independent byte code class files which are executed by a machine-dependent virtual machine. The virtual machine provides a level of abstraction between the machine independence of the byte code classes and the machine-dependent instruction set of the underlying computer hardware. A class loader is responsible for loading the byte code class files as needed, and an interpreter or just-in-time compiler provides for the transformation of byte codes into machine code.
More specifically, Java is a programming language designed to generate applications that can run on all hardware platforms, small, medium and large, without modification. Developed by Sun, Java has been promoted and geared heavily for the Web, both for public Web sites and Intranets. Generally, Java programs can be called from within HTML documents or launched standalone. When a Java program runs from a Web page, it is called a “Java applet,” and when run on a Web server, the application is called a “servlet.”
Java is an interpreted language. The source code of a Java program is compiled into an intermediate language called “byte code”. The byte code is then converted (interpreted) into machine code at runtime. Upon finding a Java applet, the Web browser invokes a Java interpreter (Java Virtual Machine), which translates the byte code into machine code and runs it. Thus, Java programs are not dependent on any specific hardware and will run in any computer with the Java Virtual Machine software. On the server side, Java programs can also be compiled into machine language for faster performance. However a compiled Java program loses hardware independence as a result.
II. Digital Content Preview User Interface for Mobile Devices
Keeping the overviews to J2EE, J2ME, EJBs, and Java in mind, reference is made to
In one embodiment, the memory 112 combined with a buffer 110 will facilitate the rendering and display of data on the display screen 108 of the mobile device 104. When a user desires to access a particular storefront provided by the carrier 102, the user will be presented with options for selecting different types of media available for purchase (e.g., via an electronic commerce transaction) or sampling. In one example, the user of the mobile device 104 may be accessing the storefront provided by the carrier 102 to access multimedia data such as ringtones that can be downloaded to the mobile device 104. If the user desires to enter “ringtones”, the user will be provided with a listing of different types of ringtones.
As shown in display screen 108, the display screen may include the navigation and presentation data 112 in addition to a listing of content data 110′. As shown, the content data 110′ is generically represented by content #1110a, and content #2 and #3110b. In this example, content #1110a is shown with a speaker noting that the user is provided with automatic play of the particular content #1 in the listing displayed in the screen 108. The content #1 and #3, however, may not have yet been downloaded from the carrier 102.
In accordance with one embodiment, content #1 and content #2 will automatically start to download from the carrier 102 and stored in the buffer 110. Although the user may not have selected to listen to the content #1 and content #2 at this point, the content is nevertheless automatically being downloaded to the buffer 110 while the user is viewing the current display screen with the listing of different types of content. In this manner, the user can scroll up and down the listing and select other contents for listening.
Because content #2 was automatically downloaded without requiring the user to select content #2 on the display screen, when the user selects content #2, the data will already have been stored in the buffer 110, allowing a smooth transition into the next content for the user to listen. Thus, by triggering a download of all contents identified on the display screen listing for the particular screen, the user is provided with a listing of contents that should already have been downloaded for the user when selection is made of the different contents to sample. That is, the content should already be present in the buffer 110 and available for immediate play.
Advantageously, the user does not need to scroll down to different contents on the display screen 108, click on the particular content, and then wait for the content to be downloaded. In addition, because the navigation and presentation data 112 is locally present on a mobile device 104, it is possible to present to the user a smooth navigational environment that is not tied to click-and-download.
In one embodiment, the user may select to move to a different screen that includes a different listing of contents 110. In that circumstance, the buffer 110 of the previous display screen will be emptied and the content listing of the new screen will commence downloading to the buffer 110 to allow the user to navigate through the different listings of content for that new screen. As noted above, the navigation and presentation data 112 for the new screen will be provided from a local memory 112 of the mobile device 104.
Initially, the first listing of the new content for the new screen will begin to play for the user. The user can opt to pause the content as it is being played and move to another content that may be listed in the new screen. Because the content that is associated with the new screen is all triggered for download, when the new screen appears, the user will be provided with access to the different content options on the new screen and such data will be downloaded to the buffer 110 to allow the user immediate access.
Although there may be a slight delay when a user shifts to a new screen, each of the content items are downloaded to the content data buffer 110 without requiring the user to initially click on a particular content to specifically download it. In this manner, if the user desires to listen to a particular content item in the listing, the time during which the user listens to the particular selected content will be used for downloading the rest of the content that may be presented in the listing for the particular screen. As such, when the user moves to the next content on the screen, that content should have already been downloaded or may have already commenced downloading, thus reducing the wait for the user navigating through the different content of the display screen.
For example, the user may desire to access ringtones from a ringtone store, and the screen will move to the ringtone store to allow the user to process selections for a possible purchase. Next, the method moves to operation 144 where the storefront navigation and presentation data is rendered for the selected digital media content on display directly from a local memory. The navigation and presentation screen may include any of the graphics, toggle buttons, selection icons, pull downs, organizational data, and the like. The navigational presentation data is stored locally on the memory of the portable device to avoid having to download this information from a remote carrier over a wireless connection.
In operation 146, a listing of digital media content is downloaded from the carrier to display the information on the portable device display screen without downloading the navigation and presentation data. While the digital data content is being downloaded for a content item, the device, in one embodiment, may begin playing the first listed digital media content item. In one example, playing the digital media content item may include playing a ringtone, playing a clip of a song, displaying a wallpaper, displaying a screenshot of a movie trailer or displaying an animation trailer of a game or video clip. In operation 148, the content for each of the digital media content associated with the current screen will continue to download the background without requiring active user requests (i.e., clicks) to download each digital media content on the list. The background downloading will then store the digital content onto a separate buffer of the mobile device.
Because the display screen initially will allow the user to play the first listed digital media content, the user's attention will initially be drawn to the first listed item which is being presented. During this time, however, the other digital content associated with the current screen will continue to be downloaded and stored in the buffer. Thus, when the user desires to stop the first digital media content item and move to another digital media content item displayed on the screen, the other digital media content item should already have been downloaded for the user to instantly interact with that digital media item. As noted above, because the background downloading occurs when the user moves to a new screen, the buffer will be flushed with the previously stored digital media content. Then, the buffer will begin to fill up again with the digital media content of the new screen to which the user has moved on to navigate.
The process operations of 144 to 150 will then repeat for each time the user moves to a different screen and different content items are provided by that screen. Thus, each time a user traverses to a new screen, the buffer will be refreshed with the new data for the content of that screen and the navigation to the different screens will be provided locally from the navigation and presentation data stored in the memory 112 of the mobile device 104 as shown in
Each of the display screens that are part of the storefront and associated categories such as the ringtone category, will be preferably stored locally on the wireless phone. Although, in some embodiments, minor data items of a navigation or presentation item may be downloaded from the carrier in special circumstances. The method then moves to operation 166 where a listing of ringtones is downloaded from the carrier to the screen of the portable device (i.e., wireless phone) without downloading navigation and presentation data. In one embodiment, the first listed ringtone in a list of ringtones of a particular screen may begin to play for the user to enable the user to select such ringtone for purchase. While the first listed ringtone begins playing, the content for each of the ringtones associated with the current screen, will continue to background download without requiring active user requests to download each ringtone of the screen.
Thus, in operation 168, the content is stored into the buffer of the wireless phone so that when the user moves to other ringtones in operation 170, the other ringtones will be already downloaded and ready for the user to instantly interact with. As the user moves from screen to screen, the buffer holding the downloaded digital data (ringtones), will be emptied and the process will repeat to enable presentation and downloading of the different digital content of a particular screen in a smooth interactive manner.
The views can include featured, top 10, new releases, artists a-z, tones, a-z. In this example, the user has selected artists a-z by selecting 210 in
During the process followed by the user in traversing through
Although specific reference is made to terminology defined by Sun Microsystems, Inc., it should be understood that any name can be used for such terms, so long as the desired functionality is achieved. The same applies to the underlying environment for the device. The device can be any mobile device, and the device may run any operating system. The operating system can support any communication protocol, including protocols for downloading application files. Accordingly, any reference to a particular standard should be viewed only as exemplary and focus should be placed on the claimed functional operation.
With the above embodiments in mind, it should be understood that the invention may be practiced with other computer system configurations including hand-held devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers and the like. Furthermore, the invention may employ various computer-implemented operations involving data stored in computer systems. These operations are those requiring physical manipulation of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. Further, the manipulations performed are often referred to in terms, such as producing, identifying, determining, or comparing.
Any of the operations described herein that form part of the invention are useful machine operations. The invention also relates to a device or an apparatus for performing these operations. The apparatus may be specially constructed for the required purposes, or it may be a general-purpose computer selectively activated or configured by a computer program stored in the computer. In particular, various general-purpose machines may be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations.
The invention can also be embodied as computer readable code on a computer readable medium. The computer readable medium is any data storage device that can store data which thereafter be read by a computer system. Examples of the computer readable medium include hard drives, network attached storage (NAS), read-only memory, random-access memory, CD-ROMs, CD-Rs, CD-RWs, magnetic tapes, and other optical and non-optical data storage devices. The computer readable medium can also be distributed over a network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion. Furthermore, although the present invention implements Java programming language, other programming languages may be used to implement the embodiments of the present invention (e.g., C, C++, any object oriented programming language, etc.).
Although the foregoing invention has been described in some detail for purposes of clarity of understanding, it will be apparent that certain changes and modifications may be practiced within the scope of the appended claims. Accordingly, the present embodiments are to be considered as illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope and disclosure.
This application claims priority from provisional application No. 60/544,107, filed on Feb. 11, 2004, which is herein incorporated by reference.
Number | Date | Country | |
---|---|---|---|
60544107 | Feb 2004 | US |