Stateful, double-buffered dynamic navigation voice prompting

Information

  • Patent Grant
  • 8521422
  • Patent Number
    8,521,422
  • Date Filed
    Monday, July 16, 2012
    12 years ago
  • Date Issued
    Tuesday, August 27, 2013
    11 years ago
Abstract
A navigation system written in J2ME MIDP for a client device includes a plurality of media players each respectively comprising a buffer. A navigation program manages the state of the plurality of media players. The plurality of media players are in either one of an acquiring resources state, and a playing and de-allocating state. The use of a plurality of media players each respectively comprising a buffer overcomes the prior art in which navigation system can cut off a voice prompt because of the time-consuming tasks associated with playing a voice prompt.
Description
BACKGROUND OF THE INVENTION

1. Field of the Invention


This invention relates generally to wireless telecommunication. More particularly, it relates to wireless carrier location based services (LBS) and J2ME wireless client LBS related software and apparatus.


2. Background of the Related Art


Existing voice navigation systems typically use standard reusable voice prompts preloaded on client devices. These standard voice prompts are usually carefully crafted to be reusable in all situations. All situations match to a pre-loaded or concatenated voice prompt. However, the present inventor has appreciated that such existing navigation systems severely limit product usability and quality due to a compromise in prompt length, scope and quality in order to achieve the timing requirements.


Voice navigation systems written in Java Platform Micro Edition (J2ME) often produce late and missed voice prompts. This sometimes results in the absence of a street name in a voice prompt, e.g., just speaking “Turn Right in 500 feet”. The indicated pre-storage voice fragment files are concatenated at the time they are needed. Even the number is pre-stored and concatenated. This results in a situation where the voice prompt is not dynamic and does not have the street names and point-of-interest (POI) name.


Voice prompts in a J2ME navigation system are typically dynamically created (based on the client navigation, the location of the device during navigation) on a voice server and retrieved according to the product requirements. An exemplary product is the TCS Navigator product commercially available from TeleCommunication Systems, Inc. headquartered in Annapolis, Md. This first part, the prompt creation, is performed some time before the actual situation occurs in anticipation of the impending situation requiring a voice prompt. The voice prompt is cached on the client device (phone) for use in the very near future (usually a matter of seconds). This caching process is related to the present invention in that the invention solves a problem occurring upon use of a cached voice prompt.



FIG. 3 illustrates a conventional system for playing navigation voice prompts. In particular, the conventional system for playing navigation voice prompts includes hardware resources 140, asynchronous hardware interface, a media player 10, and a local storage 120. During startup, media player 10 reserves a portion of local storage as a buffer 11. A client navigation program 160 manages the media player 10.


In particular, the problem solved by the present invention comes in the stage when the navigation program 160 must play the voice prompt in a timely manner. Dynamic, location-based voice prompt files are passed from local storage 120 (via a pointer) to the asynchronous hardware interface 130 which must then acquire scarce or exclusive hardware resources 140 to allow the media player 10 to play the voice prompt file. The media player 10 needs to perform a number of time-consuming tasks before it is ready to be started, after receiving the voice prompt file. Additionally, these acquisition tasks must occur sequentially and the various states of the media player 10 must be managed by the client navigation program 160. After playing the voice prompt, the system's media player 10 must then release fully and completely these “scarce or exclusive hardware resources”, hardware resources 140, related to the specific voice prompt. This is because the exclusive hardware resources 140 can only be acquired after the handle to a specific voice prompt has been successfully passed into the media player's 10 interface. As a result, a client navigation program 160 may not acquire and hold these exclusive hardware resources 140 and simply replace the voice prompt contained within the hardware resources 140.


As a result, timing is very important in navigation systems, not only for product quality but also for the safety of those using a navigation product. Therefore a client navigation program 160 must play timely and accurate voice prompts.


SUMMARY OF THE INVENTION

In accordance with the principles of the present invention, a navigation system for a client device includes a plurality of media players each respectively comprising a buffer and being in either one of an acquiring resources state, and a voice prompt and de-allocating state. A navigation program manages the states of the plurality of media players.


In accordance with another aspect of the invention, a method of providing a plurality of buffers for a navigation system comprises instantiating a plurality of media players for a client device, each of the media players respectively comprising a buffer. The plurality of media players each have an acquiring resources state, and a voice prompt and de-allocating state. A navigation program is executed to manage the states of the plurality of media players.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 illustrates a navigation system employing a plurality of buffers, in accordance with the principles of the present invention.



FIG. 2 illustrates a lifecycle of events/states/steps for acquisition of exclusive hardware resources and playing of a voice prompt, in accordance with the principles of the present invention.



FIG. 3 illustrates a conventional system for playing navigation voice prompts.





DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS

The present invention combines both buffering and state transitioning with a threaded wait-state mechanism, together with a dynamic location-based voice prompting navigation system 100 written in Java Platform Micro Edition (J2ME) Mobile Information Device Profile (MIDP) (for personal device navigation).



FIG. 1 illustrates a navigation system 100 employing a plurality of buffers, in accordance with the principles of the present invention.


In particular, the navigation system 100 includes hardware resources 140, asynchronous hardware interface 130, a navigation program 160, a plurality of media players 10, 20 . . . n, and local storage 120. Each media player 10, 20 . . . n has an associated buffer 11, 21 . . . n.


In accordance with the principles of the present invention, stateful management of media player 10, 20 . . . n exclusive hardware resources 140 is provided using a double buffer (or more buffers depending upon the number of buffers employed) 11, 21 . . . n in, e.g., a J2ME (MIDP) personal navigation program 160.


Any method acting upon the media players 10, 20 . . . n will be asynchronous in fashion by MIDP definition. Notification that certain events have started, completed or failed is satisfied through a listener or callback interface.


Hardware resources 140 may include such hardware as is necessary for the operation of the navigation system 100. Hardware resources 140 may include a display, a graphics processor, a sound processor, a system bus, keypad interface, etc.


Asynchronous hardware interface 130 can allow media players 10, 20 . . . n to interface with hardware resources 130. Being asynchronous, asynchronous hardware interface 130 allows the various components of the navigation system, and in particular, the media players 10, 20 . . . n to operate autonomously with relation to the hardware resources 140. The timing of data passing between the media players 10, 20 . . . n and the hardware resources can be managed by the asynchronous hardware interface 130.


Navigation program 160 can be a J2ME (MIDP) personal navigation program, as is commonly used with compact mobile information devices such as cell phones and Personal Data Assistants (PDAs).


Media players 10, 20 . . . n of navigation program 160 are shown for simplicity as including respective buffers 11, 21 . . . n therein. However, media players 10, 20 . . . n and buffers 11, 21 . . . n can be implemented in local storage 120 and accessed through memory pointers.


Local storage 120 provides memory storage for execution of media players 10, 20 . . . n, storage of voice prompts, storage of navigation history, storage of POI data, storage of user defined destinations, storage of configuration data, etc. The local storage 120 can serve as storage for the navigation system 100 and any other programs and data stored on a client device.



FIG. 2 illustrates a lifecycle of events/states/steps for acquisition of exclusive hardware resources 140 and playing of a voice prompt, in accordance with the principles of the present invention.


In event/state/step 210, instances of media players 10, 20 . . . n are created in local storage 120. The media players 10, 20 . . . n are created by resolving a specific voice prompt. Memory space within local storage 120 can be reserved for execution of media players 10, 20 . . . n and their respective buffers 11, 21 . . . n.


In event/state/step 220, the media players 10, 20 . . . n created in step 210 acquire needed hardware resources 140. The media players 10, 20 . . . n can reserve within an operating system exclusive access to the hardware resources 140 to prevent any possible contention to hardware resources 140. Other start-up processing can also occur that can include allocating memory area, testing connectivity to hardware resources 140, etc.


In event/state/step 230, buffers 11, 21 . . . n can be filled with media data, such as a voice prompt.


In event/state/step 240, the volume of media players 10, 20 . . . n can be set. An appropriate control word within media players 10, 20 . . . n can be set that corresponds to an appropriate volume level to prevent media players 10, 20 . . . n from playing a voice prompt at either a too low of a volume or at a too high of a volume.


In event/state/step 250, one of media players 10, 20 . . . n can start playing a voice prompt. The voice prompt can be instructional audio provided by navigation program 160.


In event/state/step 260, the voice prompt played in event/state/step 250 can be finished playing. Upon media players 10, 20 . . . n hitting an end of file designation for a voice prompt, the media players 10, 20 . . . n have an indication to finish playing the voice prompt and move on to event/state/step 270.


In event/state/step 270, the buffers 11, 21 . . . n allocated in local storage 120 in event/state/step 220 can be de-allocated. The memory space previously allocated in local storage 120 for buffers 11, 21 . . . n can be free for use again by any applications and for storage of any data upon de-allocation.


In event/state/step 280, the memory space within local storage 120 allocated in event/state/step 220 for media players 10, 20 . . . n can be de-allocated. The memory space previously allocated in local storage 120 for media players 10, 20 . . . n can be free for use by any applications and for storage of any data upon de-allocation.


In event/state/step 290, any open media players 10, 20 . . . n that have their associated resources de-allocated and buffers de-allocated can be closed.


Two (or more) media player 10, 20 . . . n buffers 11, 21 . . . n are created upon navigation program 160 startup and remain throughout the navigation session. Due to the inevitable multi-threaded situation of voice prompt navigation these media players 10, 20 . . . n are forced to be in only one of two general events/states/steps during voice prompt execution. They are either in the event/state/step of acquiring resources (during events/states/steps 210 through 240) or they are playing and de-allocating (events/states/steps 250 through 290). As soon as a media player 10, 20 . . . n has been given the start command (the cause of event/state/step 250) it switches from the acquiring hardware resources 140 events/states/steps 210 through 240 to the playing and de-allocating hardware resources 140 events/states/steps 250 through 290.


During and between events/states/steps 210 through 250, a waiting mechanism (not shown) is employed to guarantee proper transitions from one event/state/step to the next. If the transitions are not made properly and in the correct order a media player 10, 20 . . . n error event will occur and be handled accordingly. This mechanism does not effect other navigator program 160 processes and there execution while it is waiting for the media player 10, 20 . . . n to react.


Either of the media players 10, 20 . . . n may be acted upon by a different user program thread or process during almost any of the various events/states/steps 210-290. The most used scenario with regard to this feature is the act of stopping a Voice Prompt while it is playing.


The actual double-buffing, or plural-buffering if three or more media players 10, 20 . . . n are enacted, occurs when one media player, .e.g., 10, is generally in the playing and de-allocating event/state/step and the another media player, e.g., 20, is at the same time acquiring resources. Due to the asynchronous nature of the media player 10, 20 . . . n hardware resources 140 and the nature of the navigation location-based voice prompts, it is evident that these media players 10, 20 . . . n will be active at the same moment in differing generalized states during much of a navigation session, even in cases where the calling (program) methods are not re-entrant in nature.


Benefits of the invention include dynamic voice prompting in a personal navigation program 160, such as streets and POI names. It also results in better error handling which prevents corruption and slow down of media players 10, 20 . . . n. Faster voice processing results, as does a better user experience, because it dynamically gives you voice prompt ‘according to your current surroundings’.


The invention has applicability with any company creating a navigation program 160 on a personal device written in J2ME for the MIDP. It also has applicability in a J2ME personal navigation device with dynamic voice prompting, dynamic meaning in this instance not pre-stored in memory when the application is loaded onto the navigation device.


While the invention has been described with reference to the exemplary embodiments thereof, those skilled in the art will be able to make various modifications to the described embodiments of the invention without departing from the true spirit and scope of the invention.

Claims
  • 1. An audio delivery device, comprising: a plurality of media players, associated with physical hardware resources, each having an audio delivering state; anda manager to manage said audio delivering state; anda physical asynchronous hardware interface, interfacing said plurality of media players to said physical hardware resources, to autonomously operate said plurality of media players with relation to said physical hardware resources;wherein said plurality of media players are provided using a plurality of buffers.
  • 2. The audio delivery device according to claim 1, further comprising: a plurality of buffers each respectively associated with said plurality of media players.
  • 3. The audio delivery device according to claim 1, wherein: said plurality of media players each further have an acquiring resources state and a de-allocating state.
  • 4. The audio delivery device according to claim 1, wherein: said audio delivering state is dynamically created based on a changing location of a client device.
  • 5. The audio delivery device according to claim 1, wherein: said audio delivery device is implemented in a personal data assistant (PDA).
  • 6. The audio delivery device according to claim 1, wherein: said audio delivery device is implemented in a cellular phone.
  • 7. The audio delivery device according to claim 1, wherein: said audio delivery device is multi-threaded.
  • 8. A method of providing a plurality of buffers for an audio delivery device, comprising: associating a plurality of media players with physical hardware resources, said plurality of media players each having an audio delivering state;managing said audio delivering state; andinterfacing, via a physical asynchronous hardware interface, said plurality of media players to said physical hardware resources to autonomously operate said plurality of media players with relation to said physical hardware resources;wherein said plurality of media players are provided using a plurality of buffers.
  • 9. The method of providing a plurality of buffers for an audio delivery device according to claim 8, further comprising: allocating media player resources;filling buffers associated with each of said plurality of media players;setting a volume for said plurality of media players;playing an audio prompt;de-allocating said buffers associated with each of said plurality of media players;de-allocating said media player resources; andclosing each of said plurality of media players.
  • 10. The method of providing a plurality of buffers for an audio delivery device according to claim 8, wherein: said audio delivering state is dynamically created based on a changing location of a client device.
  • 11. The method of providing a plurality of buffers for an audio delivery device according to claim 8, wherein: said audio delivery device is implemented in a personal data assistant (PDA).
  • 12. The method of providing a plurality of buffers for an audio delivery device according to claim 8, wherein: said audio delivery device is implemented in a cell phone.
  • 13. The method of providing a plurality of buffers for an audio delivery device according to claim 8, further comprising: multi-threading said audio delivery device.
Parent Case Info

The present invention is a continuation of U.S. patent application Ser. No. 13/349,999, entitled “Stateful, Double-Buffered Dynamic Navigation Voice Prompting,” filed on Jan. 13, 2012, now U.S. Pat. No. 8,224,572; which in turn is a continuation of U.S. patent application Ser. No. 12/285,978, entitled “Stateful, Double-Buffered Dynamic Navigation Voice Prompting,” filed on Oct. 17, 2008, now U.S. Pat. No. 8,099,238; which claims priority from U.S. Provisional Application No. 60/996,373, entitled “Stateful, Double-Buffered Dynamic Voice Prompting For J2ME(MIDP) Personal Navigation on a Personal Electronic Device” to Eric Wistrand, filed on Nov. 14, 2007, the entirety of all three of which are expressly incorporated herein by reference.

US Referenced Citations (167)
Number Name Date Kind
4737916 Ogawa Apr 1988 A
4939662 Numura Jul 1990 A
5389934 Kass Feb 1995 A
5557254 Johnson Sep 1996 A
5636122 Shah Jun 1997 A
5684951 Goldman Nov 1997 A
5689269 Norris Nov 1997 A
5689809 Grube Nov 1997 A
5727057 Emery Mar 1998 A
5774824 Streit Jun 1998 A
5801700 Ferguson Sep 1998 A
5802492 DeLorme Sep 1998 A
5809447 Kato Sep 1998 A
5926118 Hayashida Jul 1999 A
5944768 Ito Aug 1999 A
5982301 Ohta Nov 1999 A
6035253 Hayahi Mar 2000 A
6091957 Larkins Jul 2000 A
6138003 Kingdon Oct 2000 A
6169516 Watanabe Jan 2001 B1
6182006 Meek Jan 2001 B1
6182227 Blair Jan 2001 B1
6185426 Alperovich Feb 2001 B1
6188957 Bechtolsheim Feb 2001 B1
6204844 Fumarolo Mar 2001 B1
6249742 Friederich Jun 2001 B1
6278936 Jones Aug 2001 B1
6317684 Roeseler Nov 2001 B1
6317687 Morimoto Nov 2001 B1
6321158 DeLorme Nov 2001 B1
6331825 Ladner Dec 2001 B1
6366782 Fumarolo Apr 2002 B1
6366856 Johnson Apr 2002 B1
6397143 Paschke May 2002 B1
6415224 Wako Jul 2002 B1
6441752 Fomukong Aug 2002 B1
6442384 Shah Aug 2002 B1
6442391 Johansson Aug 2002 B1
6466788 Carlsson Oct 2002 B1
6563824 Bhatia May 2003 B1
6571174 Rigazio May 2003 B2
6621423 Cooper Sep 2003 B1
6636803 Hartz Oct 2003 B1
6640185 Tokota Oct 2003 B2
6643516 Stewart Nov 2003 B1
6661353 Gopen Dec 2003 B1
6665613 Duvall Dec 2003 B2
6665715 Houri Dec 2003 B1
6721652 Sanqunetti Apr 2004 B1
6721716 Gross Apr 2004 B1
6766174 Kenyon Jul 2004 B1
6801850 Wolfson Oct 2004 B1
6810405 LaRue Oct 2004 B1
6816782 Walters Nov 2004 B1
6819919 Tanaka Nov 2004 B1
6820092 Nakano Nov 2004 B2
6829532 Obradovich Dec 2004 B2
6839630 Sakamoto Jan 2005 B2
6842696 Silvester Jan 2005 B2
6845321 Kerns Jan 2005 B1
6885874 Grube Apr 2005 B2
6895329 Wolfson May 2005 B1
6898516 Pechatnikov May 2005 B2
6910818 McLoone Jun 2005 B2
6925603 Naito Aug 2005 B1
6934705 Tu Aug 2005 B2
6944535 Iwata Sep 2005 B2
6970871 Rayburn Nov 2005 B1
7058506 Kawase Jun 2006 B2
7089110 Pechatnikov Aug 2006 B2
7142196 Connor Nov 2006 B1
7142205 Chithambaram Nov 2006 B2
7167187 Scott Jan 2007 B2
7171304 Wako Jan 2007 B2
7202801 Chou Apr 2007 B2
7266376 Nakagawa Sep 2007 B2
7286929 Staton Oct 2007 B2
7373246 O'Clair May 2008 B2
7565157 Ortega Jul 2009 B1
7653544 Bradley Jan 2010 B2
7739033 Murata Jun 2010 B2
7751614 Funakura Jul 2010 B2
7774003 Ortega Aug 2010 B1
7822823 Jhanji Oct 2010 B2
7881730 Sheha Feb 2011 B2
8095434 Puttick Jan 2012 B1
8265864 Kaufman Sep 2012 B1
20010015756 Wilcock Aug 2001 A1
20010016849 Squibbs Aug 2001 A1
20020032036 Nakajima Mar 2002 A1
20020069239 Katada Jun 2002 A1
20020086683 Kohar Jul 2002 A1
20020130906 Miyaki Sep 2002 A1
20020133247 Smith et al. Sep 2002 A1
20020169539 Menard Nov 2002 A1
20030014487 Iwakawa Jan 2003 A1
20030016804 Sheha et al. Jan 2003 A1
20030032448 Bulthuis Feb 2003 A1
20030036848 Sheha Feb 2003 A1
20030036949 Kaddeche Feb 2003 A1
20030045327 Kobayashi Mar 2003 A1
20030055555 Knockheart Mar 2003 A1
20030060938 Duvall Mar 2003 A1
20030078054 Okuda Apr 2003 A1
20030125064 Koskinen Jul 2003 A1
20030126250 Jhanji Jul 2003 A1
20030149526 Zhou Aug 2003 A1
20030151501 Teckchandani Aug 2003 A1
20030165254 Chen Sep 2003 A1
20030231190 Jawerth Dec 2003 A1
20030236618 Kamikawa Dec 2003 A1
20040002814 Gogic Jan 2004 A1
20040008225 Campbell Jan 2004 A1
20040021567 Dunn Feb 2004 A1
20040027258 Pechatnikov Feb 2004 A1
20040054428 Sheha Mar 2004 A1
20040124977 Biffar Jul 2004 A1
20040186880 Yamamoto Sep 2004 A1
20040204829 Endo Oct 2004 A1
20040205517 Lampert Oct 2004 A1
20040215641 Kuthuri Oct 2004 A1
20040220957 McDonough Nov 2004 A1
20050027445 McDonough Feb 2005 A1
20050062636 Conway Mar 2005 A1
20050085999 Onishi Apr 2005 A1
20050125148 Van Buer Jun 2005 A1
20050159883 Humphries Jul 2005 A1
20050188333 Hunleth Aug 2005 A1
20050219067 Chung Oct 2005 A1
20050242168 Tesavis Nov 2005 A1
20060019724 Bahl Jan 2006 A1
20060041375 Witmer Feb 2006 A1
20060055693 Sylthe Mar 2006 A1
20060074547 Kaufman Apr 2006 A1
20060155679 Kothuri Jul 2006 A1
20060174209 Barros Aug 2006 A1
20060200308 Arutunian Sep 2006 A1
20060200359 Khan Sep 2006 A1
20060212217 Sheha Sep 2006 A1
20060223518 Haney Oct 2006 A1
20060268120 Funakura Nov 2006 A1
20060270421 Phillips Nov 2006 A1
20070004461 Bathina Jan 2007 A1
20070032244 Counts Feb 2007 A1
20070083911 Madden Apr 2007 A1
20070118520 Bliss May 2007 A1
20070139411 Jawerth Jun 2007 A1
20070208687 O'Connor Sep 2007 A1
20070219708 Brasche Sep 2007 A1
20070253642 Berrill Nov 2007 A1
20070262952 Nadalin Nov 2007 A1
20080077324 Hatano Mar 2008 A1
20080129475 Breed Jun 2008 A1
20080195314 Green Aug 2008 A1
20080201071 Odinak Aug 2008 A1
20080220747 Ashkenazi Sep 2008 A1
20080249983 Meisels Oct 2008 A1
20080268822 Johnson Oct 2008 A1
20080270366 Frank Oct 2008 A1
20080288166 Onishi Nov 2008 A1
20090055087 Beacher Feb 2009 A1
20090113346 Wickramasuriya Apr 2009 A1
20090177557 Klein Jul 2009 A1
20090328163 Preece Dec 2009 A1
20100004993 Troy Jan 2010 A1
20100042592 Stolz Feb 2010 A1
20100268848 Maurya Oct 2010 A1
Non-Patent Literature Citations (4)
Entry
Supplementary European Search Report in European Appl. No. 06839236.4 dated Dec. 6, 2010.
Examiner's Report No. 4 on Australian Patent Appl. No. 2004302220 dated Jul. 26, 2010.
Supplementary European Search Report in European Appl. No. 02 75 0138 dated Oct. 13, 2010.
Ahern et al., “World Explorer: Visualizing Aggregate Data from Unstructured Text in Geo-Referened Collections,” Jun. 18-23, 2007, ACM, JCDL'07.
Related Publications (1)
Number Date Country
20120284030 A1 Nov 2012 US
Provisional Applications (1)
Number Date Country
60996373 Nov 2007 US
Continuations (2)
Number Date Country
Parent 13349999 Jan 2012 US
Child 13549902 US
Parent 12285978 Oct 2008 US
Child 13349999 US