History log of /packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
9c0b96c557f75cea688469b9d869ba1d6b5988c8 21-Sep-2011 Isaac Katzenelson <isaack@android.com> Change theme of dialog box in voice dialer

Bug: 5251317
Change-Id: I34d13f35790dbf8b81f7ea19a9c27ecf82a6253b
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
39c59f7ec34aca397d5e9dad23d72e54bda9f469 20-Sep-2011 Martin Hibdon <mhibdon@google.com> Initialize voiceDialer in onCreate instead of onStart

Bug: 5234283
Apparently in Honeycomb, a change was made so that
an onscreen activity would be stopped when the screen
turned off. This was not the case in prior releases.
The VoiceDialerActivity was initializing the TTS
engine and recognizer engine in onStart(), and
tearing everything down in onStop(), which means
that post Honeycomb, it doesn't work if the screen is off.

Now, it initializes everything in onCreate() and
tears it down in onDestroy().

It would be much better if all of the connections to
the TTS engine and bluetooth, along with the state
control, were kept in a service. This way the activity
could be dumb, and it could be destroyed and recreated
without losing state. That's far too big of a change for
ICS at this point though.

Change-Id: Id27996cc64f919061f0c513660837f6dff53d467
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
8cdd749aadd386795c0f6d8d38ced0322ad7400e 03-Sep-2011 Eric Laurent <elaurent@google.com> Issue 5252593: any app can restart the runtime

Check for null BT device when receiving
BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED intent.

Change-Id: I89402cdede69a42a38bc56c5e8841daa9e6355af
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
d3694c0511a27f1fb44fa2760ee0d4562ffe1066 08-Apr-2011 Joe Onorato <joeo@google.com> Remove the deprecated things from Config.java. These havent been working since before 1.0.

Change-Id: I097f48d9eec969553b34765a48ed652ea16c1a98
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
e6ca0690abd35dd9c7645fc2a24167f3e5ecc1ee 19-Oct-2010 Jaikumar Ganesh <jaikumar@google.com> Update code for change in return type of BT APIs.

Change-Id: If2fd4e8229b578704906b1212b60bb2bc615b0b8
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
33175fc0fa9e2c51e9749e737a42077854a6e6ab 19-Aug-2010 Jaikumar Ganesh <jaikumar@google.com> Update code for new Bluetooth public APIs.

Change-Id: I6369d0fe8b4c72baa47f7f9589e80b08b4a34f11
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
9b8b34f954c8213207b05896a341a2d2e2799693 15-Jul-2010 Martin Hibdon <mah@android.com> Manual merge of cc3e3944 to master

This change corrects bug 2835657, which
could not be automatically merged to master
because BluetoothVoiceDialerActivity has been deleted,
and is now just called VoiceDialerActivity.

Change-Id: I08b433335b8c4defb1b330ecaf97c271a20bde5a
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
7eb03167f94204716f858a07a12d7ef4e915c81b 07-Jun-2010 Jaikumar Ganesh <jaikumar@google.com> Add missing import.

Change-Id: I04af2dd7e751b5dd3196d32b157c30bb9ddd8865
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
51d490c50f83eef5c547e8b8f5004e5f22232c71 07-Jun-2010 Jaikumar Ganesh <jaikumar@google.com> Update getState() Bluetooth API.

Change-Id: Ifd564b5dfa84db4d6a00cbebf46faf437683d90a
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
fbc76d73e034753bf284d52f0df766369ae3cb5b 27-Apr-2010 Martin Hibdon <mah@android.com> Fix Bugs 2626599 and 2615852

Prior to this change, VoiceDialerActivity would decide
whether to run in bluetooth mode based upon the intent
that started it. If it was ACTION_VOICE_COMMAND, then
it would run in bluetooth mode.
There are two problems with this:
1. If there is a bluetooth headset connected, but
the voicedialer is launched from the menu, then
it will come up in non-bluetooth mode, so the audio
would not be routed correctly and it would not prompt
the user via TTS.
2. If there is not a bluetooth headset connected, but
and then something other than the headset fires the
ACTION_VOICE_COMMAND, it will come up in bluetooth mode,
and then block indefintely trying to connect to the
headset.

With this change, the VoiceDialerActivity always creates
a BluetoothHeadset object. It waits for the first onServiceConnected
callback to decide which mode to run in. Now it runs in the
correct mode, regardless of how it was launched.

Change-Id: Ic8e37ee094d6bd84ec8171e6d64d5cfda1a33b29
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
ed873c21cd8ad85df735ec841b147f5ac0f740a9 05-Apr-2010 Martin Hibdon <mah@android.com> Make the BluetoothVoiceDialerActivity and VoiceDialerActivity into one activity

These had been separated into two activites while the BluetoothVoiceDialer
was being worked on, but it's a lot of duplicate code. Now there is a single
activity that can run in either bluetooth or non-bluetooth mode, depending
on how it is started.
The state transitions are slightly simpler when running in non-bluetooth
mode, because it does not use text to speech to inform the user about
what it is doing.

Change-Id: Iddf84108a84420917073fa18999d7394ca308400
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
ef5d3e8cd31873c7af4902986ae61b408d0343bb 20-Apr-2010 Martin Hibdon <mah@android.com> Fix Bug: 2606879

The problem is that if the user leaves the VoiceDialerActivity
using the home button, when it is started again it never starts
listening. This is because all of the initialization is done
in onCreate, but the teardown is done in onStop. When the
activity is left using the home button, the activity is stopped,
but not destroyed, so onCreate is never called when the activity
is started up again.

This change moves the initialization to onStart, and leaves teardown
in onStop. It really doesn't make any sense for this particular activity
to be stopped or paused, if it's stopped at all it should be finished.
So now the onStop function also calls finish().

Change-Id: I4ddc7e329dfbf88d7b732191581877d9e5a3f0a3
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
d23e5f670b10a582761421d8bc101d4a2d660ac0 15-Apr-2010 Martin Hibdon <mah@android.com> Improved fix for Bug: 2326485

When starting the voiceDialer, there is a tone played
to indicate that the microphone is listening. It's
important the tone not be picked up by the mic and
sent to the recognizer engine, or it will corrupt
the sample. Prior to this change, the VoiceDialerActivity
would simply pull a fixed 380 milliseconds of audio
from the microphone inputStream. This works, but
may not be reliable on all hardware platforms because
the size of audio buffers and performance of the audio
system may vary.
Now, the VoiceDialerActivity removes audio samples
and attempts to detect the tone. When the tone ends,
it stops pulling samples. If no tone is detected within
500 milliseconds, it times out and stops removing samples.

Change-Id: Ic57ba1947fa0d315bec081bf03a32abb1a822fdf
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
1b715dc663bd7155d996576774e487d31bf331f7 13-Apr-2010 Martin Hibdon <mah@android.com> Put the beep back into the voiceDialer

Bug: 2326485
Now the VoiceDialerActivity plays a beep just as it starts listening.
The hard part here is that we need the end of the beep to line up
pretty accurately with the start of the microphone listening.
If the beep happens before the microphone is listening, then the
user will start speaking too soon. If the beep happens after the
microphone is listening, then the sound corrupts the incoming sample.

The other difficulty is that the time to start the microphone varies
considerably from platform to platform, so there is no practical way
to time the beep so matches. So instead, the VoiceDialerActivity
will play the beep after the mic starts, and then pull the first part
of the audio sample off of the incoming stream.

The beep is 40 milliseconds long, but there is some lag in between
requesting the tone to play and getting it back on the mic.
Experimentally, pulling out the first 350 milliseconds of sample
removes the beep without losing too much else on both Passion
and Sholes.

Change-Id: I23cc8c1e3969fd94a27a44e9e0e8c4f0a5cd5c00
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
2abf40fd5f901da1b6168aa778cbf7e6713a1e9b 02-Apr-2010 Martin Hibdon <mah@android.com> Cherry pick e5258ff473c778362d612389db79b740e9c35911 into Froyo
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
4a330957ce5190ed86c57e0c65910359b866cba7 24-Mar-2010 Martin Hibdon <mah@android.com> Make the voiceDialer work again

Bug: 2537307
The recognizer has a limit on the size of each semantic value
in the grammar. Now that we are storing both the package name
and class name there, it's pretty easy to overflow that limit,
causing the grammar initialization to fail. With this change,
only the spoken word is stored in the grammar (i.e. "calendar").
The mapping of words to package name/class name is stored
explicitly in a hashTable inside the commandRecognizerClient,
which circumvents the recognizer's fixed limit.

Bug: 2497802
If the orientation changes while an alert dialog is up,
the dialog would leak and causes an assertion failure.
With this change the VoiceDialerActivity uses the more
modern system of using dialogs, which automatically
brings down and recreates the dialog upon orientation
changes. The BluetoothVoiceDialerActivity can't handle
this right now, it's state machine is much more
complicated. For now, it just forces itself to be in
protrait mode all of the time.

Change-Id: I127c860b6db51426a93daf1df2d71c1c32673de5
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
5f25619fecb3fda9b34f90eb1e333a89ec431583 05-Mar-2010 Martin Hibdon <mah@android.com> Simplify the state machine of the VoiceDialer

* Eliminate the Retry state from the Bluetooth Voicedialer. Now
if the recognizer returns zero results, it will simply return to the
Listening for Command state, and expect the user to state a new
"call", or "dial" command.
* The voicedialer is no longer allowed to open any applications when
running from bluetooth. There may be security problems with
applications coming up over the lock screen.
* Make the Bluetooth VoiceDialer handle error conditions better,
now it will display an error message and exit if the Bluetooth
connection drops, if the TTS system cannot be initialized, or if
the recognizer returns a fatal error.
* Make the VoiceDialerTester work again, so it should be easier
to test recognition accuracy from many different speakers.

Change-Id: Ic123648c22cf83598a641dd4cc664476261f5063
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
7a55150b308ed03d41091e4c3ac693d6eb0ab145 24-Feb-2010 mah <mah@android.com> Improve bluetooth voicedialing support

Bug: 2432200
When using voicedialing without being able to see or interact with the
screen, it is more important to keep the number of matches small. There
is now a setting on the CommandRecognizerEngine called "minimizeResults".
If this is set, then the CommandRecognizerEngine will in most cases return
only the highest confidence result.
It will return multiple results only in the case where it is unsure which phone
to call a particular person on. When this occurs, the BluetoothVoiceDialer
will announce the person it is about to call, and which phone types are available
(i.e. home, work, mobile, other), then begin listening for the the user to
indicate which phone.
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
64c64e7c25e6efe31fa53369ec49db442b68ff9a 09-Feb-2010 mah <mah@android.com> Add initial support for Bluetooth voice dialing.

Bug: 2432200
This adds a new BluetoothVoiceDialerActivity,
because the flow for bluetooth is so different from the regular VoiceDialerActivity.
This involved breaking RecognizerEngine's direct dependence on VoiceDialerActivity to
make callbacks on. RecognizerEngine now makes callbacks on an interface called RecognizerClient,
which is implemented by several different helper classes for different reasons.
I've made RecognizerEngine an abstract base class, it handles some general setup, logging, etc.
but it is up to the subclasses to set up the grammar and handle the results when recognition
succeeds. There are currently two subclasses, the CommandRecognizerEngine recognizes
phrases to call people, dial numbers, and open applications. The YesNoRecognizerEngine recognizes
"yes" and "no".

Known issues as of this checkin:
* 8khz audio has not been validated, it's not certain that the Recognizer is getting a good audio stream.
* There is still a problem with audio routing, the TTS output switches randomly between the speaker and
the headset.
* only the simplest case is supported, there's not a clean solution when there are multiple
possible matches.
* there are cases where the activity really should wait for the TTS utterance to finish before
moving on.
* we don't have a solution for when the phone is locked and the user activates bluetooth voicedial.
* the flow may or may not be ideal, the "no matches, try again" option may not be useful. We will
let some people try this and then revisit the approach.
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
cd84f92b28c4d6fc55b76bce50434dd858f0d7d2 15-Dec-2009 Dave Sparks <davidsparks@android.com> Fix latency from beep to "Listening" state. Bug 2326485.

Remove the initial beep from the voice dialer app. This makes it
more consistent with Voice Search and eliminates the latency
issue on certain devices where it can take hundreds of milliseconds
after the beep before audio input is ready.
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
d54589686988883dc2b85e972cc3d2a565484aa5 26-Mar-2009 Nick Pelly <> Automated import from //branches/master/...@142774,142774
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
be1584eb7e59c391a45aa21fb5e65ada1aedae9a 25-Mar-2009 Dave Sparks <> Automated import from //branches/master/...@141266,141266
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
632bb9327078cbe2794ff24be8bb28e4f81309f1 19-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake_rel/...@140373
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
538879a6f24ff7305e66d719e751b5d612029bf3 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
f3557ca3ea7b0b927e592a0a7055b05f3b8b5cfb 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
3e6a72b9c088bc6c65d9e162d2ba31dd7100e3a6 11-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@130745
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
95d8bae6aa7e8127c1d08d63d37ca35a4fe27f83 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java
22464da53983813d22e37d9656e8cbd7809e9ebf 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
/packages/apps/VoiceDialer/src/com/android/voicedialer/VoiceDialerActivity.java