• Home
  • History
  • Annotate
  • only in /frameworks/base/core/java/android/speech/tts/
History log of /frameworks/base/core/java/android/speech/tts/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
8a3967ac6e3570ede4feaaf84801b3f5b1bba087 13-Feb-2018 Niels Egberts <nielse@google.com> Fix race condition with calling stop() before run()

The code assumed that when stop() is called before run(), it's not
neccessary to signal mNotFull, but in rare cases the synthesizer may
already have filled the buffer before run() is called.

Test: manual

Bug: 70887227
Change-Id: I83117f3541d37830b344bc9eda34e1f380b58e76
(cherry picked from commit 32011ea4f144b46b5ab64577465983caf6303f2d)
ynthesisPlaybackQueueItem.java
ce8db9911494225fcd99711d7df85a130de5a6ce 14-Dec-2017 Jeff Sharkey <jsharkey@android.com> Add more IntDef prefixes for auto-documenting.

Test: builds, boots
Bug: 70177949
Exempt-From-Owner-Approval: annotation-only changes
Change-Id: I76dde6054e06f52240bd4b1a0f196dcb74623608
extToSpeech.java
35e6bb474df3a42c81a44941c178c2118224ac41 18-Jul-2017 Kazuhiro Inaba <kinaba@google.com> TTS: Fix a race condition between enqueueSpeechItem and stopForApp.

When speak() is immediately followed by a stop(), the speak may not be
stopped at all due to a race condition.

Bug: 63649835
Test: android.speech.tts.cts.TextToSpeechServiceTest#testSpeakStop
Change-Id: Iae5660b455f5d845aa119c902057e2ca7131ce1b
extToSpeechService.java
a81d17b7959a67cbf12b389938dd2cd731893475 25-Jul-2017 Kazuhiro Inaba <kinaba@google.com> TTS: Ensure to callback onStop() from SynthesisPlaybackQueueItem.

The previous implementation calls back the dispatcher only at the end
of run() loop. It means, if stop() is called after enqueueing and
before running, none of onSuccess, onStop, or onError is called for
the items in the queue.

Bug: 63649835
Test: android.speech.tts.cts.TextToSpeechServiceTest#testSpeakStop
Change-Id: Ib20cb0e9157859866f694439858a27369ba8026e
udioPlaybackHandler.java
ynthesisPlaybackQueueItem.java
000ce805050f0bdbf485464b84eb2c08bca5ad72 29-Apr-2017 Jeff Sharkey <jsharkey@android.com> Updates based on API council guidance.

Test: builds, boots
Change-Id: I223faf55c1e1b4d81d11b4c8b2d93ccd131c969b
Fixes: 37775662
Fixes: 37748635
Fixes: 37673408
Fixes: 37672564
Fixes: 37672218
Fixes: 37638323
Fixes: 37637423
tteranceProgressListener.java
04637f3d4d68f6e5a4820e207b444d93704649b6 12-Apr-2017 Niels Egberts <nielse@google.com> Document examples where a developer might use the APIs.

Test: mmma frameworks/base/
Bug: 35767714

Change-Id: I845db36869b84a18e79d7fe28f10031cfe836617
ynthesisCallback.java
tteranceProgressListener.java
53e100c468861807a9fef5b1b18a1c9533bad2fe 27-Mar-2017 Amith Yamasani <yamasani@google.com> Provide deprecated API to avoid build breakage

Restored onUtteranceRangeStart() temporarily as a deprecated API.

Bug: 36646809
Test: N/A
Change-Id: I7da927aca4f4ad1f5cc76564e8fdc4261849898b
tteranceProgressListener.java
5d0ea0fe210db85a8a8a44c63d8fef195e206abb 21-Mar-2017 Niels Egberts <nielse@google.com> Add time markers to synthesizeToFile API.

Also rename onUtteranceRangeStart to onRangeStart based on feedback from
the API council.

Bug: 35767714
Bug: 35767290
Test: cts-tradefed run cts-dev --module CtsSpeechTestCases
Change-Id: I2c17a06e401313d4f35e5ec4958c2251c195ef05
ileSynthesisCallback.java
TextToSpeechCallback.aidl
laybackSynthesisCallback.java
ynthesisCallback.java
ynthesisPlaybackQueueItem.java
extToSpeech.java
extToSpeechService.java
tteranceProgressListener.java
07d98a9d684fd82d004962a59806fa0506e6c550 14-Feb-2017 Sergio Sancho <ssancho@google.com> Ensure we set the notification marker position by calling updateMarker()
just after the AudioTrack is initialized.
This solve the issue with cached synthesis in which updateMarker was
called before AudioTracker initialization and we never got the
callbacks.

Test: Built android and flashed to a device.
Change-Id: I9053d1d046cc9a76aeedd307d5d48920e26e584d
ynthesisPlaybackQueueItem.java
7c810edbce633883a3eafc5a090e5584835b4f09 08-Feb-2017 Sergio Sancho <ssancho@google.com> Merge "Ensure default pitch is used when none is specified."
b0cde2cabaab13bdc20dbbf1806b96760e666e5c 26-Jan-2017 Sergio Sancho <ssancho@google.com> Ensure default pitch is used when none is specified.

Test: Manual
Change-Id: I09ab4ccea439d01c65a06c3c44b4ff210ddf7f54
extToSpeechService.java
65c50784564d0bae9276fde5472dd8898a781bcd 23-Dec-2016 Niels Egberts <nielse@google.com> Implement time markers for TTS.

The service can inform the framework at which frame a part of the input
is spoken, and that information is then relayed to the client.

This can be used to highlight the currently spoken word/sentence or to
resume synthesis requests at the start of the last word/sentence.

Test: manual
Change-Id: Ie20a6764a8788cc3539cb058425e55eb6fde07db
lockingAudioTrack.java
TextToSpeechCallback.aidl
laybackSynthesisCallback.java
ynthesisCallback.java
ynthesisPlaybackQueueItem.java
extToSpeech.java
extToSpeechService.java
tteranceProgressListener.java
9b01193770fe57cab003e7ab3d35749bb82dd88d 03-Jan-2017 Niels Egberts <nielse@google.com> Merge "Remove refernces to V1 API, as V2 doesn't exist anymore."
01dedf59db924726ee323aac89708031ce8f320f 23-Dec-2016 Niels Egberts <nielse@google.com> Remove refernces to V1 API, as V2 doesn't exist anymore.

Also ran formatter on modified lines.

Test: Refactor only, CTS tests still passing.
Change-Id: I1309cfa8e9e731d3450c13d96038e6b5d53a12e1
ventLogger.java
ventLoggerV1.java
extToSpeechService.java
tsEngines.java
2c80a03823d114f968039fb5d09948d76352e03c 23-Dec-2016 Niels Egberts <nielse@google.com> Remove redundant public modifiers in interfaces.

Also applied formatter on modified lines.

Test: refactoring CL. Existing unit tests still pass.
Change-Id: I9a7c33e7590260ede0811dd1b50b565b0f8d2f87
ynthesisCallback.java
extToSpeech.java
extToSpeechService.java
10db95b316a29196ce39635682c07a2a414a09e7 07-Apr-2016 Niels Egberts <nielse@google.com> Fix issue when QUEUE_DESTROY arrive at the same time.

When multiple QUEUE_DESTROY messages arrive in a short timespan, some
messages were not flushed. This is because every QUEUE_DESTROY message
resets mFlushAll just before it starts playing itself. The solution
is to keep a counter of the amount of flushes that are still behind it on
the queue and keep flushing until the last one is reached.

Bug: 27555444
Change-Id: Ic24aa2250bf684e74b541907e4c57e0d5f0069ca
extToSpeechService.java
33b840444f5a481dd31e129079d3c0cf3acdf80e 08-Mar-2016 Glenn Kasten <gkasten@google.com> Use audio_session_t consistently

Also prefer AudioManager.AUDIO_SESSION_ID_GENERATE over
AudioSystem.AUDIO_SESSION_ALLOCATE, because
AudioSystem.AUDIO_SESSION_ALLOCATE is @hide.

Bug: 27562099
Change-Id: I5924554feb919db7f2390f5b062faedd515421af
udioPlaybackQueueItem.java
extToSpeechService.java
c99ba1c3edf725e070383b27724c9ed63e1e5765 20-Nov-2015 Niels Egberts <nielse@google.com> API to listen in on the synthesized audio.

Change-Id: Ic943d39a0540f0061ef6f629e4934dc71f69ab6b
ileSynthesisCallback.java
TextToSpeechCallback.aidl
laybackSynthesisCallback.java
extToSpeech.java
extToSpeechService.java
tteranceProgressListener.java
9b2b2f50909b0278fee7f26d0070f318fd6b354a 08-Dec-2015 Niels Egberts <nielse@google.com> Fix checks for audio format.

Change-Id: I43e9a94f8ddd46f72d24e06d72702f354bbeae46
ileSynthesisCallback.java
laybackSynthesisCallback.java
453c13f77121641a52d8b422a527feb7b3d3b8ab 20-Nov-2015 Niels Egberts <nielse@google.com> Small refactoring for FileSynthesisCallback.

Removed unused callerIdentity member and removed null checks
for the dispatcher.

Change-Id: I2983f5d48a7a593bc998ba4e033f1e815fa61819
ileSynthesisCallback.java
extToSpeechService.java
5fd28893f299cc069257de2199f91762dfba16b1 23-Nov-2015 Niels Egberts <nielse@google.com> Fix docs build failure.

Change-Id: If8d215f34a48e0c61aec0d35f10f1bfd633a4254
ynthesisCallback.java
a24b50bee1aca19028477b235862bcd2c37135ed 20-Nov-2015 Niels Egberts <nielse@google.com> Restrict audioformat to 8bit, 16bit or float PCM with an annotation and
a warning.

TextToSpeech.synthesizeToFile has only ever worked with 8bit and 16bit
PCM. In case of float PCM an invalid file would be generated and in case
of other encodings the TTS engine would crash.

Also add more annotations to SynthesisCallback.

Change-Id: I1c44a44509e9b53bb2e1b0f2044b1a5919875e1c
ileSynthesisCallback.java
laybackSynthesisCallback.java
ynthesisCallback.java
extToSpeech.java
54545f7e655f4dc3d9f75440a440950006fdaffd 05-Aug-2015 Niels Egberts <nielse@google.com> NPE occured when trying to parcel voice features.

The default features member should be an empty list instead of null.

Bug: 22404239
Change-Id: Ia39982f17fd3b3cd0f3556435170aed2fac14fb8
extToSpeechService.java
992ea1553c3ae6766505f084061c5ef2321229b7 26-Jun-2015 Niels Egberts <nielse@google.com> Fix crash with engines that don't override getVoices().

The name of the voices was not normalized in getVoices(), therefore if
you use getDefaultVoiceName, that name possibly doesn't appear in
getVoices(). The framework would then run into a NullPointerException.

This was caught by the cts tests. Also added a few more log statements.

BUG: 22115315
Change-Id: I51404ddcd1bc10dd3e1ddaac410cfa9873bf1438
extToSpeech.java
extToSpeechService.java
f77b2de1a9affa877f35f3efb23dfd50a1e9af0a 12-Jun-2015 Przemyslaw Szczepaniak <pszczepaniak@google.com> Fixes for API Review: android.speech.tts

Bug: 21571893
Change-Id: Icd25f4aa9a465050c7410c7bfec004a71ba24548
tteranceProgressListener.java
837fba984eee8da5badeb2474ca147b8a9911e8a 16-Feb-2015 Niels Egberts <nielse@google.com> Don't strip country and variant from locale.

When the synthesizer returns LANG_AVAILABLE or LANG_COUNTRY_AVAILABLE
for a certain locale, we strip the country and variant from the locale
before asking the synthesizer for the default voice name for this
locale.

This can prevent the synthesizer from picking the right locale. For
instance it prevents the synthesizer from picking en-gb if en-au is
requested, now it can only have a single preferred voice for all English
countries.

The solution is not to strip the country and variant from the locale.
This is not likely to break anything, because the input to
onGetDefaultVoiceNameFor was never expected to be a subset of all
supported language-country-variant combinations. The default
implementation handles this correctly.

Change-Id: I017f69d321039c7aa7a3ef5a09ba138e35b66670
(cherry picked from commit 4758e99783493fc546e6819b5fe9d44e1ef8c318)
extToSpeech.java
f3d78656df5ad681db2d087f8152a5ec27036d8d 10-Apr-2015 Niels Egberts <nielse@google.com> Fix parens typos in documentation.

Change-Id: I4853ed72904985b1dab11f26cd6c5a332b884fc8
extToSpeech.java
417ee5ba89f7e0fe5efd34fce74bf1ee5923d976 11-Mar-2015 Tor Norbye <tnorbye@google.com> Add resource type annotations to some APIs

Change-Id: I37c8afdaea455aa92bc8270bb2dfd60616c5f9bc
extToSpeech.java
08c7116ab9cd04ad6dd3c04aa1017237e7f409ac 28-Feb-2015 John Spurlock <jspurlock@google.com> Remove unused imports in frameworks/base.

Change-Id: I031443de83f93eb57a98863001826671b18f3b17
udioPlaybackQueueItem.java
lockingAudioTrack.java
extToSpeech.java
extToSpeechService.java
tsEngines.java
7b9c912f536925ac6ec43935d6e97506851b33d6 31-May-2013 Tor Norbye <tnorbye@google.com> Add @ResourceInt annotations on APIs

Change-Id: I119cc059c2f8bd98fd585fc84ac2b1b7d5892a08
extToSpeech.java
4b73867a12a9339c7788e8949aac4a32d2eee22b 19-Nov-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Add UtteranceProgressListener#onStop callback

New UtteranceProgressListener callback that allows
to detect a call to TextToSpeech#stop() (or QUEUE_FLUSH usage)
from the same client, or a QUEUE_DESTROY usage from any other
client (Talkback uses it to preempt other users of TextToSpeech
queue). This change is required for seamless Books read aloud
feature+Talkback usage.

+ Fixes for broken tests/TtsTests

Bug: 17901521

Change-Id: I30d2f297bb7c8d05cbeb16f63e85c1be0cca5c84
TextToSpeechCallback.aidl
extToSpeech.java
extToSpeechService.java
tteranceProgressListener.java
6ddd9c29b376fda27c4df3b18d6a67de14a633ca 25-Sep-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Fix ambiguous TTS#playSilence method.

Due to recent fixes for TTS API review (b/17389935)
overloaded playSilence method became ambiguous when
the last argument is null. This change renames the new
method to playSilentUtterance solving the issue.

Also, since LMP API level is 21, I updated invalid
references to it as API level 20 inside speech.tts.

Bug: 17389935
Change-Id: I9f9fae988240d1cec45d44650e53ffc29803ccac
ynthesisRequest.java
extToSpeech.java
extToSpeechService.java
f9ba548f210b0ed071ff7d597ddf2209af817294 22-Sep-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Fix issues with new TTS API

Bug: 17389935
Change-Id: I59234b3222f59dc89be7e40f7d4706b1f8c610ce
extToSpeech.java
extToSpeechService.java
oice.java
3786bc549891592335be0f454609d9c626d69ef4 11-Sep-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Replace TreeSet with HashSet.

Both Locale and Voice do not implement Comparable.

Bug: 17467923
Change-Id: I683577e5b18ae1892e1ccea5ea241e1d016c9517
extToSpeech.java
35c7698a1b17c3e4ca0eae753e68bf069a463d70 05-Sep-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> API review requests for the TTS package.

- New TextToSpeechService methods are no longer protected.
- s/getRequiresNetworkConnection/isNetworkConnectionRequired
- New TextToSpeec#play.. methods use a Bundle instead of a HashMap
- New synthesizeToFile(), addSpeech(), addEarcon() methods
take a File instead of a String with filepath.
- TextToSpeechService#s/isValidVoiceName/onIsValidVoiceName

Bug:17389935,17253934
Change-Id: Iec76f59015c34104683c050fe1ff1ceccd604134
extToSpeech.java
extToSpeechService.java
oice.java
fd80746bb9d67be3a9f87dcb9264785a53631b74 05-Aug-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Set the TTS voice name for the default language.

This changes makes the initial, default language set and
the #setLanguage call with the default language as input
exactly the same.

Previously, the requests made after the initial default language
set were missing the name of the default voice.

+ Some tests clean-up. Some of them fail due to issues with
Locale#toLanguageTag upper-casing the variant field.

Change-Id: I5470617007fe45462b7198bf62a03eb5fe47a590
extToSpeech.java
289cc8e887f786f557faab226a1e01abb9a632a6 19-Jul-2014 Jean-Michel Trivi <jmtrivi@google.com> API for audio session ID generation

Expose the value used by the framework to generate an audio
session ID when a value isn't known.
Rename allocateAudioSessionId() to generateAudioSessionId()
as this operation doesn't "allocate" anything, and there is
no allocated resource to free after this operation.

Bug 16401631

Change-Id: I7a7bc05b39ea0b024ff225254eb755a9c85a2ad9
extToSpeech.java
672695e42387a024083d198f3d665f354ef1d27c 14-Jul-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Add AudioAttributes support in the TTS.

Bug: 16259299
Change-Id: I53f4f7a2b9a3b9a422affaf6abe4aca258e67d7f
udioPlaybackQueueItem.java
lockingAudioTrack.java
extToSpeech.java
extToSpeechService.java
cafd15216ee66a302ee69c0ea0c6c63b07a2f68c 08-Jul-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Fix TTS regression, TTS#stop can result in #onDone callback.

Regressinon in the L, side effect of the rewrite. In pre-L android,
UtteranceProgressListener#onDone was called (but only if client
received UtteranceProgressListener#onStart for the utterance in progress)
after client called TextToSpeech#stop. This changeset reinstates
this behaviour.
+ Removed not used fallback callback

Bug: 16149006
Change-Id: I2eb5ede0abe6f5717b07f09adad861465575c238
TextToSpeechCallback.aidl
extToSpeech.java
extToSpeechService.java
34d4ac88f70c37cbe143ab01b40f343bcf02035f 08-Jul-2014 Niels Egberts <nielse@google.com> Remove Markup and Utterance classes.

Markup is replaced by TtsSpan, and the Utterance class will be replaced
by TtsSpanBuilder.

Change-Id: I443786681f065ad8458fc05825de3ef182db8062
arkup.java
tterance.java
ad6df74ada7c478257425b746588f22eeec199a6 01-Jul-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Add support for voices in TTS API.

Voices allow to expose multiple backends/voice packs for a single
Locale. This is an attempt to port this feature from V2 API.

Bug: 15834470
Change-Id: I0117de238cfcf028bcec5344b8d65c960b96b98c
TextToSpeechService.aidl
ynthesisRequest.java
extToSpeech.java
extToSpeechService.java
tsEngines.java
oice.aidl
oice.java
f8fd3420919a2693b644294d2dbd432b19370f3d 02-Jul-2014 Niels Egberts <nielse@google.com> First argument of playSilence is incorrect in javaDoc.

Change-Id: Icc059471e61fb6154108b74ea45cb06554d80631
extToSpeech.java
795d777ee13405d8b6ba6c889ea3ef49713892a8 02-Jul-2014 Niels Egberts <nielse@google.com> Forgot to deprecate a method in current.txt before merging earlier change.

Also includes a comment fix and line size changes in TextToSpeech.java.

Change-Id: Ia5842b694bca6cd9cae035164ffc605451e72d8b
extToSpeech.java
df7deefe8ebcbd619f27e2d394d7e5d0d7af33d1 25-Jun-2014 Niels Egberts <nielse@google.com> Support for CharSequences in the V1 API.

Two newly deprecated methods:
- TextToSpeech.speak (over TextToSpeech.speak with mandatory utteranceId)
- SynthesisRequest.getText (over SynthesisRequest.getCharSequenceText)

Change-Id: I8a75ed335c91074c72d6ef374ff8b9c79a7c208d
TextToSpeechService.aidl
ynthesisRequest.java
extToSpeech.java
extToSpeechService.java
5cbf17ca053b09beadd0b031a46ce193ab27a0f8 18-Jun-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Add support for audio session id in the TTS

+ #playEarcon & #queueAudio respects request Volume/Pan settings.

Bug:15432115
Change-Id: I136afef77afbc56c34810c64123f7be4b431d378
udioPlaybackQueueItem.java
lockingAudioTrack.java
laybackSynthesisCallback.java
ynthesisPlaybackQueueItem.java
extToSpeech.java
extToSpeechService.java
fc4b2890378eb1b6e0b11d60d703eb6854268064 26-Jun-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Remove TextToSpeechClient API.

Removed all of TTS V2 api with exception of error codes.

Bug: 15834470
Change-Id: I9d9d2aad01811af9b86bf7a3fd018a8d4e5c2f33
bstractEventLogger.java
bstractSynthesisCallback.java
udioPlaybackHandler.java
udioPlaybackQueueItem.java
ventLoggerV1.java
ventLoggerV2.java
ileSynthesisCallback.java
TextToSpeechCallback.aidl
TextToSpeechService.aidl
laybackQueueItem.java
laybackSynthesisCallback.java
equestConfig.java
equestConfigHelper.java
ynthesisCallback.java
ynthesisPlaybackQueueItem.java
ynthesisRequestV2.aidl
ynthesisRequestV2.java
extToSpeech.java
extToSpeechClient.java
extToSpeechService.java
tteranceProgressListener.java
oiceInfo.aidl
oiceInfo.java
6dfa6e2a9be08a3a0f152a7b772efc8ce2469bce 13-Jun-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Fix typo and broken sdk build.

Change-Id: Icd1641955d1ca88396219db05312a4a9fd77ea80
tsEngines.java
e31ab2d8fcb7413e4775a7cfdd340636a9eea7e7 13-Jun-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Merge "Expose "default tts locale" to the TTS V2 API."
1b5637ee32c5d4e5d857fa86a1b1c1db23d027b7 30-May-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Expose "default tts locale" to the TTS V2 API.

This change allows TTS V2 API client applications to honor the
"default TTS locale" set by the user in the TTS settings.

Note that the TTS V1 API uses 3 character country/language codes
for locale encoding. It's the only system component that does
that. TTS V2 uses the standard, valid Locale objects. The default
TTS locale setting was stored as a 3 character locale string with
"-" as the separator.

This change switches the TTS locale setting format to the output of
Locale.toString() call (on a valid Locale object). Methods used for
reading this value can interpret both forms and try to return a valid
Locale object as an output.

Change-Id: Ice2e6c25a43eb9dd6e17d371ee582c2dae3329c9
equestConfigHelper.java
ynthesisRequestV2.java
extToSpeechClient.java
extToSpeechService.java
tsEngines.java
d3919a318a339d3bde425b66ae0a4a4640eb5210 12-Jun-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Add missing copyright headers in speech.tts

Change-Id: Icf1c3cf71ac45cb00606c8034af375e657c31ea5
equestConfig.java
equestConfigHelper.java
ynthesisRequestV2.java
oiceInfo.java
e3abed72d6ab02eb1dc1f8b128213c70422f3917 03-Jun-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Add missing #isSpeaking to TTS API V2

TextToSpeech#isSpeaking queries TTS engine if it's
currently outputting any audio, it was present in the
TTS API V1.

Change-Id: Iee4a91976b9b80653811fb458ac48d75418752cf
extToSpeechClient.java
a6cc9b85ad7d4fdb4fef9666563c91bd878631f5 14-May-2014 Niels Egberts <nielse@google.com> Markup support for framework

Change-Id: Ia5ad6cff7593c295944a90775a1b061c95f5cc3f
arkup.java
ynthesisRequestV2.java
extToSpeechClient.java
extToSpeechService.java
tterance.java
067a21b2469a689dc075e8897756f2b3acb4495a 15-May-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> TTS Connection callbacks are called on main thread.

After experimenting with the new TTS API I found out that receiving
ConnectionCallbacks#onEngineStatusChange and #onServiceDisconnected
callbacks on non-main thread are problematic. They are very rare and
overhead of dealing with them in separate thread is high - in most
cases user just wants to process those callbacks in the main thread
context. This change should make new API usage easier.

+ Fixed default values of speech speed in voices from v1->v2 wrapper.

Change-Id: I76d3b607b3b931b7eb10aa180775fd3607c43bd9
extToSpeechClient.java
extToSpeechService.java
de1b5ae7a7567f03cfeecf1a62ddf429cb840474 12-May-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Add (hidden) TTSEngines#isLocaleSetToDefaultForEngine method.

TTSEngines#isLocaleSetToDefaultForEngine allows the Settings application
to distinguish if the TTS engine locale is blank (set to follow the device
locale) or if it's set to the same value as the device locale.

Change-Id: I462584547d69c21cde4ac317c8a3b3bbc1680cae
tsEngines.java
34a37bdebb3d606dac7c7d1dd7a0effdb59bd3d6 09-Jan-2014 Glenn Kasten <gkasten@google.com> Add AudioFormat.getBytesPerSample and use it

Change-Id: I90a40987ea99006af4a6e31136078c04976eb54d
lockingAudioTrack.java
ileSynthesisCallback.java
5decae39b6fd2091db000120f0c86aa27efa29ed 10-Apr-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Remove "final" from TextToSpeechClient class.

It hinders attempts to mock the TextToSpeechClient
class in tests.

+ javadoc typo fix

Change-Id: I5b4590824d7e89b58451bdde457a627786333373
extToSpeechClient.java
a1788af3440fef04d16067223a31e9dced3500b9 24-Mar-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Documentation update for TextToSpeech#getFeatures

Added note that it may return null in case of error.

Bug: 12323454
Change-Id: I246f7e894c5e8a6421bdd72c7623c72e8a13fc3a
extToSpeech.java
952c0fd7bc6bb3ec9e0252f0799bbeabcf70dc1a 21-Mar-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Do not reset language in case of the TTS service reconnect.

Bug:12428804
Change-Id: I0b1b1274c47edd28eae1701808d50aeb6c36324c
extToSpeech.java
8399aae0a0532863752e593050e8810d03737936 22-Nov-2013 Przemyslaw Szczepaniak <pszczepaniak@google.com> Add public SynthesisRequestV2 constructor.

While implementing the new TTS API, I found out that it's very difficult
to create an SynthesisRequestV2 instance for testing purposes - it's
a final class, with no publicly visible constructors.

Bug: 8259486
Change-Id: I88b84fd8ad1ac6960f3932863ca758657f9547ff
ynthesisRequestV2.java
1ca1d886588ce54ab0c0229eabc49fa8dff40bc5 29-Jan-2014 Przemyslaw Szczepaniak <pszczepaniak@google.com> Allow clients to extend the TTS UtteranceId class.

This change allows TTS clients to create (and use) classes derived from the
UtteranceId class. This allows to attach a custom data and methods that
can be reached later in callbacks that take the UtteranceId instance as
parameter.

Also, since we can't depend on the identityHashCode results being unique,
this change adds AtomicInteger to generate unique identifiers for UtteranceId
instances.

Bug: 8259486
Change-Id: Id1e9eabc890ec585a7f8570fd20e287dcda9a11d
extToSpeechClient.java
6090995951c6e2e4dcf38102f01793f8a94166e1 19-Nov-2013 John Spurlock <jspurlock@google.com> Remove unused imports from frameworks/base.

Change-Id: Ia1f99bd2c1105b0b0f70aa614f1f4a67b2840906
ileSynthesisCallback.java
extToSpeechClient.java
d41b852f92ec2def734eac68a76ecbcea17e3cc9 29-Oct-2013 Siva Velusamy <vsiva@google.com> Fix Javadoc error

This fixes an error introduced with I180296d413a18301cead1c8e3212de2bd0c7e32d

Change-Id: I06512a0fb388738fae5bba5540189095f23f1e2a
ynthesisCallback.java
97cd647fcd89c1a7a4448c4fc4d9ad906f8cf2a1 25-Oct-2013 Przemyslaw Szczepaniak <pszczepaniak@google.com> TTS API: Replace "voice id" with "voice name"

"Voice id" and "voice name" are both used to reference a voice in a
speech synthesis request. Voice id was a random integer, where
voice name is human readable string, that provides more debug
information and readability. Also, it's expected that voice name
will stay consistent, and won't change during the life of the speech
connection. Though, it may disappear.

Change-Id: I180296d413a18301cead1c8e3212de2bd0c7e32d
ventLoggerV2.java
equestConfig.java
ynthesisRequestV2.java
extToSpeechClient.java
extToSpeechService.java
oiceInfo.java
eb337054edef31c9bdab4a59913f42038d5deaae 25-Oct-2013 Nick Kralevich <nnk@google.com> fix javadocs.

Change-Id: Ie008e28db0d3de22c933b4ef1ccbd3f082010a77
equestConfig.java
ynthesisCallback.java
extToSpeech.java
extToSpeechClient.java
90d15d2371ad85f22254be6985455aa2baa5d15d 14-Jun-2013 Przemyslaw Szczepaniak <pszczepaniak@google.com> Add new TTS API.

Much of existing API is reused (mostly on the service side). The new API
provides better support for network-based synthesis, defines explicit
synthesis fallback support, has better error handling, allows for multiple
different voices per locale, features enumeration and custom extensions
on a voice level and many more.

If a service does not provide a V2 implementation, a basic adapter
from V2 to existing V1 implementation is provided.

Bug: 8259486
Change-Id: I797b7fc054f11c9b0d930f4dea582e57596ea127
bstractEventLogger.java
bstractSynthesisCallback.java
udioPlaybackHandler.java
udioPlaybackQueueItem.java
ventLogTags.logtags
ventLogger.java
ventLoggerV1.java
ventLoggerV2.java
ileSynthesisCallback.java
TextToSpeechCallback.aidl
TextToSpeechService.aidl
laybackQueueItem.java
laybackSynthesisCallback.java
equestConfig.java
equestConfigHelper.java
ilencePlaybackQueueItem.java
ynthesisCallback.java
ynthesisPlaybackQueueItem.java
ynthesisRequestV2.aidl
ynthesisRequestV2.java
extToSpeech.java
extToSpeechClient.java
extToSpeechService.java
oiceInfo.aidl
oiceInfo.java
58f16653728417100c61b5cb63298e0e3bb528dc 20-Sep-2013 Przemyslaw Szczepaniak <pszczepaniak@google.com> Catch MissingResourceException caused by bad locale in TTS.

Malformed locale objects will throw MissingResourceException
from getISO3Country() and getISO3Language() methods.

This change guard against the case where device default locale is
malformed and user tries to get TTS default locale (b/10814409)
and case where user tries to pass bad locale as argument to
TextToSpeech.getFeatures method (b/10494193).

Bug:10494193,10814409
Change-Id: Ie54d5d30bb042324da0c0d19b77c3a932c5642f7
extToSpeech.java
tsEngines.java
61dda198598e95971ca224e3bcb7393f30e45657 02-Sep-2013 Przemyslaw Szczepaniak <pszczepaniak@google.com> Fix SynthesisRequest javadoc

Bug: 10548784
Change-Id: I76a89bb9accdeee00c60a668adbdd789b995cd92
ynthesisRequest.java
e86a936afddaa823d8454c09ed43c2d864ac77eb 30-Apr-2013 Przemyslaw Szczepaniak <pszczepaniak@google.com> Document the case where TTS onInit callback is called in ctor.

Bug: 8743649
Change-Id: Ibf6002f93af9d19d809679852310561e69d57c1e
extToSpeech.java
653278341d76d0b23a008087ff94250ae0beb54b 31-May-2013 Przemyslaw Szczepaniak <pszczepaniak@google.com> Allow TTS service to identify caller.

Added new field (+setter and getter) to SynthesisRequest with
Uid of a calling process. TTS service will be able to discover
packages names associated with caller using
PackageManager.getPackagesForUid.

This will allow to block buggy or poorly designed programs from
an unintentional DDoS attacks against TTS service.

Bug: 8625440
Change-Id: I5ac0ea191f952495c00301f17efdf28205353ae4
ynthesisRequest.java
extToSpeechService.java
40d51e70037c8d32f9bbafd54775e526d86caf23 13-May-2013 Przemyslaw Szczepaniak <pszczepaniak@google.com> Make TtsEngines.getDefaultLocale() method public

TtsEngines is hidden class, it's not a public API.
It's required for tracking system language setting by TTS engines
(Change: Ic4bde97ef7406adb64cc03efbe660275360ba3af )

Bug: 8613986
Change-Id: Iafafcdb244e1520893bee65febd5a137e3556317
tsEngines.java
d0b927948ec06ab90da639fe0a7bf1ec862301a0 08-May-2013 Przemyslaw Szczepaniak <pszczepaniak@google.com> Fix for TTS.setLanguage throwing MissingResourceException

Change I766f106b9165932de17de84bdd422d0fc0ae27f1 made getISO3*
methods throw MissingResourceException if locale was invalid.
This causes regression on last android release, where invalid
locale was silently ignored.

+ fix for .isLanguageAvailable

Bug: 8709594
Change-Id: Ieada6b90dc53cfdf0a4e2b4ca69854b811d0fec2
extToSpeech.java
24943bf19d3d000f9f5840513526b48523b62c71 13-Mar-2013 Przemyslaw Szczepaniak <pszczepaniak@google.com> Failing Text-To-Speech CTS tests fix.

Fix for failing android.speech.tts.cts.TextToSpeechServiceTest#testSynthesizeToFile.
In test env, ParcelFileDescriptor instance may be EXACTLY the same one that client uses.
And if it's closed by a client, then service is prevented from writing anything to the output.

Bug: 8377754
Change-Id: I7f95aae1b877e543ab02d3c548b29537aa852a89
extToSpeechService.java
7341786b138cb52eac053108b524ea3296d40f6d 06-Mar-2013 Przemyslaw Szczepaniak <pszczepaniak@google.com> Forgot to rename constructor to match class name.

Change-Id: I7e66c3dd26ec7f8be381b0dfd87ac686665206cd
extToSpeechService.java
fcf671be890f9fb49067c5f86b182bf8b8e7b9c0 05-Mar-2013 Przemyslaw Szczepaniak <pszczepaniak@google.com> Fix EBADF in TTS synthesizeToFile method.

Recent TTS change altered how the TextToSpeech.synthesizeToFile method
operates. Previously, synthesis service was responsible for creating
output file. Now, client API creates a file and then sends opened file
descriptor using ParcelFileDescriptor.

On service side, I forgot to keep a reference to a ParcelFileDescriptor object.
When GC was removing it, it was closing underlying file descriptor, resulting
in a EBADF error for all following writes to the output file.

This change makes use of a ParcelFileDescriptor.AutoCloseOutputStream to keep a
reference to the ParcelFileDescriptor. It will be referenced until we are done
with writing.

Change-Id: I8327af0eaeabaebfbbd8816d959783e89086a7c5
extToSpeechService.java
5acb33af357b56fffb055997718b1e4aa97f53fc 08-Feb-2013 Przemyslaw Szczepaniak <pszczepaniak@google.com> Make synthesizeToFile create file on a client side.

In previous setup, synthesizeToFile method relied on synthesizer
service to create world readable output file. This is potential
source of vulnerabilities.

This change moves output file creation to the client side, and
synthesizer service receives already opened file descriptor.

This change may break applications that are creating files in
now unaccessible locations, like /sdcard/.

Bug: 8027957
Change-Id: I97351be5d2f2f8ef9aa43d0ab08c4b825ca4c22b
ileSynthesisCallback.java
TextToSpeechService.aidl
extToSpeech.java
extToSpeechService.java
647abce570f3afdd667e06e9ad71738efff0e8a8 09-Jan-2013 Przemyslaw Szczepaniak <pszczepaniak@google.com> Deprecate unused and implementation-specific parts of TTS API

Second changeset, first one was committed too hastily.

TTS Voice-data related API was originally written with
one engine in mind (pico sVox TTS). It exposes implementation
details that should be private to the engine implementation.

- Deprecating fields of ACTION_CHECK_TTS_DATA results that were
used by sVox language packs to find out location of voice data.
Those fields are TTS engine implementation details and should be
private:
EXTRA_VOICE_DATA_ROOT_DIRECTORY
EXTRA_VOICE_DATA_FILES
EXTRA_VOICE_DATA_FILES_INFO
- Deprecating fields of ACTION_CHECK_TTS_DATA request that are
providing unnescesary functionality (it can be easily done on client
side):
EXTRA_CHECK_VOICE_DATA_FOR
- Deprecating some of the return codes of ACTION_CHECK_TTS_DATA - they
are specific to sVox pico voice data and in all cases can be replaced
by CHECK_VOICE_DATA_FAIL result code.
CHECK_VOICE_DATA_BAD_DATA
CHECK_VOICE_DATA_MISSING_DATA
CHECK_VOICE_DATA_MISSING_VOLUME
- Changing semantics of ACTION_TTS_DATA_INSTALLED intent. It's now
more generic and covers any change of available voice data set (so, not only
adding languages, but also removing them should trigger broadcast. Adding and
removing features to existing locale (like embedded synthesis) should be marked
by broadcast as well).
- Deprecating its EXTRA_TTS_DATA_INSTALLED result field - client should discover
the change by running ACTION_CHECK_TTS_DATA intent.
- Making GetSampleText intent public again - it's used by most TTS engines to
provide unique demonstation data.
- Deprecating TextToSpeech.OnUtteranceCompletedListener - it was replaced
by UtteranceProgressListener in API level 15, but no one put deprecation tag
on it.

Change-Id: Ia58af7f218dc1568570712f435782d2003260e82
extToSpeech.java
1c2df38242c29cd7f359a6fb13dc13b387264310 25-Jan-2013 Fergus Henderson <fergus@google.com> Fix logic error in Pszczepaniak's recent change.

Also improve wording of error message.

Bug: 7666482
Change-Id: I2d2316b10fdf394bec8963327529723cbd5fbb32
extToSpeech.java
9c4012b31b0c09cb14689bd96a71aae42c8a00cd 16-Jan-2013 Przemyslaw Szczepaniak <pszczepaniak@google.com> Make TextToSpeech.shutdown() work before init callback.

TextToSpeech.shutdown() never worked properly if was called before receiving
onServiceConnected in connection object. Also, due to recent changes,
TextToSpeech.shutdown() did not work until async task created in
onServiceConnected returned its result to the main thread.

This change makes .shutdown() work in all those cases. To allow that
runAction can now execute code with connection that's not fully setuped
- so we can shutt it down. Also, newly created connection is now hold in
new member variable mConnectingServiceConnection, so it can be closed
before receiving onServiceConnected callback.

Also, I changed name of OnServiceConnectedAsyncTask to
SetupConnectionAsyncTask, I find it more descriptive.

Bug: 8003757
Change-Id: I41d84cfdb8fa28fe44235fb4a9764fa8f3d0643c
extToSpeech.java
176baa7de11be910c36b7b4dfa7826b55ec97963 09-Jan-2013 Przemyslaw Szczepaniak <pszczepaniak@google.com> Revert "Deprecate unused and implementation-specific parts of TTS API"

This reverts commit 8a3d9f03199b93e07a5f5edc14660eab6cd233e7

Change-Id: I5a5c18f72ae2ea73c21dc27c7469c68d6b4b4c24
extToSpeech.java
8a3d9f03199b93e07a5f5edc14660eab6cd233e7 29-Oct-2012 Przemyslaw Szczepaniak <pszczepaniak@google.com> Deprecate unused and implementation-specific parts of TTS API

TTS Voice-data related API was originally written with
one engine in mind (pico sVox TTS). It exposes some implementation
details that should be private to the engine implementation.

- Deprecating fields of ACTION_CHECK_TTS_DATA results that were
used by sVox language packs to find out location of voice data.
Those fields are TTS engine implementation details and should be
private:
EXTRA_VOICE_DATA_ROOT_DIRECTORY
EXTRA_VOICE_DATA_FILES
EXTRA_VOICE_DATA_FILES_INFO

- Deprecating fields of ACTION_CHECK_TTS_DATA request that are
providing unnescesary functionality (it can be easily done on client
side):
EXTRA_CHECK_VOICE_DATA_FOR

- Deprecating some of the return codes of ACTION_CHECK_TTS_DATA - they
are specific to sVox pico voice data and in all cases can be replaced
by CHECK_VOICE_DATA_FAIL result code.
CHECK_VOICE_DATA_BAD_DATA
CHECK_VOICE_DATA_MISSING_DATA
CHECK_VOICE_DATA_MISSING_VOLUME

- Changing semantics of ACTION_TTS_DATA_INSTALLED intent. It's now
more generic and covers any change of available voice data set (so, not only
adding languages, but also removing them should trigger broadcast. Adding and
removing features to existing locale (like embedded synthesis) should be marked
by broadcast as well).

- Deprecating its EXTRA_TTS_DATA_INSTALLED result field - client should discover
the change by running ACTION_CHECK_TTS_DATA intent.

- Making GetSampleText intent public again - it's used by most TTS engines to
provide unique demonstation data.

- Deprecating TextToSpeech.OnUtteranceCompletedListener - it was replaced
by UtteranceProgressListener in API level 15, but no one put deprecation tag
on it.

Change-Id: I6609cde5c50236457f14955e2e7c0481b2b217ec
extToSpeech.java
b46533732c40c6aa4d0d7357176835a33d863234 04-Dec-2012 Przemyslaw Szczepaniak <pszczepaniak@google.com> Set default language in new TTS clients.

A recent change altered semantics of getLanguage call to return client
language instead of service language. This solved problems
with interferences between two clients using different lanaguages.

This change created a bug - new TTS client instance have no language set.
Since reading user preferences requires additional permissions I've
added new tts service method - getClientDefaultLanguage that will return
user preferences.

I've also added new client method, getDefaultLanguage, that allow easy
access to this data.

Bug: 7666482
Change-Id: Ieb7d2ba3a99d20c513add97f054874720a1cd82e
TextToSpeechService.aidl
extToSpeech.java
extToSpeechService.java
2d940bcbd1c472f8b11ce1495354f340604b4f2c 19-Nov-2012 Przemyslaw Szczepaniak <pszczepaniak@google.com> Make TTS input string limit public and documented.

TTS input limit is now publicly available from getMaxSpeechInputLength()
static method.

Bug: 7456118
Change-Id: Ib2afbb7202ad9dc15895f322fbd1480a5f1f7278
extToSpeech.java
extToSpeechService.java
13896b74194b07c821d5d89713e4e747b9b77d73 09-Nov-2012 Przemyslaw Szczepaniak <pszczepaniak@google.com> woExecute onLoadLanguage in synthesis thread.

Previously, onLoadLanguage was executed without minding synthesis queue.
Now onLoadLanguage is queued item, so it won't be executed before the items
on the queue (previously TTS could receivecall to onLoadLanguage
while synthesizing in completly different language).

I've divided SpeechItem into ControlSpeechItem and UtteranceSpeechItem.
Utterance one dispatches callbacks about synthesis progress.

Bug: 7510063
Bug: 5351864
Change-Id: Ibd156b3cecb190e5c07c4451e61121127b54d51e
TextToSpeechService.aidl
extToSpeech.java
extToSpeechService.java
228323e759445398e2d723de9365da71099ec58b 12-Nov-2012 Przemyslaw Szczepaniak <pszczepaniak@google.com> Make getLanguage return client-set language

Previously, getLanguage returned language set on the TTS service side.
In most cases client wants to receive value that was set on the Client side
(value that was set by last call to the setLanguage). That's true, for
example, for android settings app.

This is not an issue if there's only one client, or when all clients use the same
language. In that cases, service and client languages are in sync.

But if there are multiple clients using different languages, getLanguage might
return values that were not set by the client - and that's not what most of clients expect
to happen.

Change-Id: I5fd8313725e677c20fb2a84a087fc7555897bd30
extToSpeech.java
8f3957cb91a9e1465fa11aaf4d4286d4c5a59ba7 07-Nov-2012 Przemyslaw Szczepaniak <pszczepaniak@google.com> TTS onServiceConnection moved to async task

ITextToSpeechService.setCallback (service rpc call) is no longer
executed on UI thread.

I kept OnInitListener.onInit being called on the UI thread. It's
not specified explicitly, but I don't want to introduce subtle
bugs.

+bonus import fix.

Bug: 6540404
Change-Id: I0136e7efeb374b605ed29ee8b3f550ec2bd2c356
extToSpeech.java
extToSpeechService.java
c3c427d2e3d7fbfb7cd5d6473bf203af2001bcec 16-Nov-2012 Przemyslaw Szczepaniak <pszczepaniak@google.com> Revert "Make TTS input string limit public and documented"

This reverts commit f288a64f5bed290d162c1a6fd54bea7c0ba14042

Change-Id: I6f3e2a6a6a131b0422cfcdb2bda23f8ae245d774
extToSpeech.java
extToSpeechService.java
f288a64f5bed290d162c1a6fd54bea7c0ba14042 15-Nov-2012 Przemyslaw Szczepaniak <pszczepaniak@google.com> Make TTS input string limit public and documented

Bug: 7456118
Change-Id: Iced44eb349e1abb551f991c2b9357a03bab3bb3d
extToSpeech.java
extToSpeechService.java
7b172a49a90ea6784dbfe0002474f9d4fd4ace1a 07-Nov-2012 Kenny Root <kroot@google.com> am 58ed5d74: am 768d9e1a: Merge "Correct executable bit for source files"

* commit '58ed5d748c0b9b64845975ef5844ad313de7c3f6':
Correct executable bit for source files
58ed5d748c0b9b64845975ef5844ad313de7c3f6 07-Nov-2012 Kenny Root <kroot@google.com> am 768d9e1a: Merge "Correct executable bit for source files"

* commit '768d9e1a72ceee7d4a5f608776b87b62d6ce4a04':
Correct executable bit for source files
3a084af2e90849aaa8beb3a610189e3399c63ea0 07-Nov-2012 Kenny Root <kroot@google.com> Correct executable bit for source files

Many media files and source code files were marked as executable in Git.
Remove those.

Also a shell script and python script were not marked as executable.

Change-Id: Ieb51bafb46c895a21d2e83696f5a901ba752b2c5
TextToSpeechCallback.aidl
extToSpeech.java
a6e16b86b9f708b4869e123c7c67f6d5675cca18 15-Oct-2012 Przemyslaw Szczepaniak <pszczepaniak@google.com> SynthesisCallback documentation update

Clarification about when android.speech.tts.SynthesisCallback.done()
should be called.

Bug: 2481825
Change-Id: Ic781a6facc2d9acb3f06afb952fbac0b494c56cf
ynthesisCallback.java
442f1786b243923a11d7c15a32e96c7962d4b50a 26-Sep-2012 Przemyslaw Szczepaniak <pszczepaniak@google.com> TTS documentation clarification.

Bug: 7183943
Change-Id: Iffec9069bef7c9c428ebae2f84ba16ef697ffb2a
extToSpeech.java
70574efd8f7105eb73a6ffe31992ed3c5971c8cc 23-Aug-2012 Przemyslaw Szczepaniak <pszczepaniak@google.com> Fix threading issue in BlockingAudioTrack.

This fixes the issue where one thread calls .stop() on
mAudioTrack that was released (or being released) by other thread.

Bug: 7029291
Change-Id: Ia6db803e8ee40379b63327acf578466127cfabcb
lockingAudioTrack.java
091d56cab8f6f6a3460fbb596f99b1a262948e96 16-Aug-2012 Przemyslaw Szczepaniak <pszczepaniak@google.com> Fix double call to TTS connection disconnect() on reconnect

- Sets the service connection to null when unbindService is called,
instead of in onServiceDisconnected. This avoids a double disconnect
if a call to onServiceConnected is received before a call to
onServiceDisconnected.

- Extended synchronize on runAction error handling and reconnection.
This prevents from reconnecting N times if N>1 threads enter this method
while there's issue with TTS service.

Bug:6993880
Change-Id: I5a387622c6032a18d17fc072029ae6be1a9b8e6c
extToSpeech.java
9c3d7a888d0c5c09f0153e81018ff68aa6e91712 20-Jul-2012 Narayan Kamath <narayan@google.com> Fixes to TextToSpeechService#synthesizeToFile

- Fixes a strict mode violation, defers file validity checks
to when the engine starts synthesizing audio.
- Fixes some log spam when done() is called twice.

bug:6215680
bug:5415258
Change-Id: I4001be848b5208422d4091b7398e94ed311c649f
ileSynthesisCallback.java
extToSpeechService.java
ed4e541a20cc662b8399844684d18ad0060bd1cb 09-Jun-2012 Narayan Kamath <narayan@google.com> Fix bug in BlockingAudioTrack.

Will be seen when createStreamingAudioTrack() returns null,
which will happen if the audioflinger / audiomanager are unhealthy.

Also removes some confusing synchronization from this class.

bug:6636401
Change-Id: Iaf68a305665b7bc973898145e9cd1563e2569a2b
lockingAudioTrack.java
ynthesisPlaybackQueueItem.java
c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5 06-Dec-2011 Narayan Kamath <narayan@google.com> Write unit tests for android.speech.tts.

Change-Id: Ie5b3b4cdd13be2babee9a44bae00da179b372d12
extToSpeech.java
af802c6831551323126537cf8edabea97d2fc762 05-Dec-2011 Narayan Kamath <narayan@google.com> Remove BlockingMediaPlayer.

No need to spawn a new thread for every audio item sent to
the TTS class.

Change-Id: Ia52b0951f4249b0da460a5ecaff5dd11a6e5d5fc
udioPlaybackQueueItem.java
lockingMediaPlayer.java
essageParams.java
extToSpeechService.java
67ae6bc83cf2b30b0c61b9ebba5fed7a0038549c 30-Nov-2011 Narayan Kamath <narayan@google.com> Simplify the implementation of AudioPlaybackHandler.

Now uses a queue of runnables, one per synthesis. Also
introduce an abstraction that wraps AudioTrack that implements
the blocking semantics that we desire.

bug:5680699

Change-Id: I34a1248ff05766a7d9b3002055fb5b24aa9f230b
udioMessageParams.java
udioPlaybackHandler.java
udioPlaybackQueueItem.java
lockingAudioTrack.java
lockingMediaPlayer.java
ventLogger.java
laybackQueueItem.java
laybackSynthesisCallback.java
ilenceMessageParams.java
ilencePlaybackQueueItem.java
ynthesisMessageParams.java
ynthesisPlaybackQueueItem.java
extToSpeechService.java
4f9787d6f4058a0f6df08456119edd2ae1b546cd 30-Nov-2011 Narayan Kamath <narayan@google.com> am 7dfb3e61: am cc084f1d: Fix superfluous onError callbacks.

* commit '7dfb3e611a9b4db4ffadcaa18a833de083647159':
Fix superfluous onError callbacks.
cc084f1d734c1e332d6acc1f89204036ee82bd0c 30-Nov-2011 Narayan Kamath <narayan@google.com> Fix superfluous onError callbacks.

When stop() is called twice or after done().This relates
to bug 5662598 because users using the old deprecated API
will see two calls to onUtteranceCompleted.

bug:5662598
Change-Id: I5d59cf66b4f4c8650d3f8f9e503ac3f33132c0d0
udioPlaybackHandler.java
492b7f0d51f53164aa6eb974cd7ab6a7889af677 29-Nov-2011 Narayan Kamath <narayan@google.com> Allow multiple TextToSpeech instances per calling app.

We now use an IBinder object as an identity token of the
caller instead of Context#getPackageName.

bug:5680696
Change-Id: I1ca29e7161f709d2a85218206f3f117dfa620282
udioMessageParams.java
udioPlaybackHandler.java
ventLogTags.logtags
ventLogger.java
TextToSpeechService.aidl
essageParams.java
laybackSynthesisCallback.java
ilenceMessageParams.java
ynthesisMessageParams.java
extToSpeech.java
extToSpeechService.java
68e2af55d65d2e61fbf8096eccaa2e4ca02b6c5a 28-Nov-2011 Narayan Kamath <narayan@google.com> Fix TTS instantiation from webview accessibility handlers.

The TTS instantiated from here shouldn't clobber any
existing TTS objects opened within the same package context.

Ideally, the TTS API should work fine with multiple TTS object
instances within the same package context but making that happen
correctly is a larger change.

bug:5659758
Change-Id: Ia1f63c61b9f12ac92ff42a427a004d414e42a759
extToSpeech.java
extToSpeechService.java
40f71f0be3cefabde9dc066d7707a1e5ebaec820 23-Nov-2011 Narayan Kamath <narayan@google.com> Fix regressions in TTS completion callbacks.

(a) onUtteranceCompleted should be called on errors too. Also,
fix up the error handling so that onUtteranceCompleted is
always called.
(b) Don't treat empty utterances as errors, and let the engine
synthesize them, as before.

bug:5662598
Change-Id: I9223592bc6fe5f47d71103f4f02f046b54a655a8
udioPlaybackHandler.java
laybackSynthesisCallback.java
ynthesisMessageParams.java
extToSpeechService.java
tteranceProgressListener.java
754c72ed9e8e83e5a913aa7552fc2e1b1b5277e0 09-Nov-2011 Narayan Kamath <narayan@google.com> Notifiy callers when a speech synthesis error occurs.

bug:5589877
Change-Id: Ideca8966ea1caa6789b3273e388dd1f25c1e2758
udioMessageParams.java
udioPlaybackHandler.java
TextToSpeechCallback.aidl
essageParams.java
laybackSynthesisCallback.java
ilenceMessageParams.java
ynthesisMessageParams.java
extToSpeech.java
extToSpeechService.java
tteranceProgressListener.java
6c07a2028505e28abd601870f05d4752e92a4b7b 07-Nov-2011 Narayan Kamath <narayan@google.com> Fix a bug in the network TTS api.

bug:5284966
Change-Id: I460bd12c27671ed42681fd4ccad567c08cb8f70f
extToSpeech.java
extToSpeechService.java
748af66ca27d3afe2e16ccc80b147d447635292a 31-Oct-2011 Narayan Kamath <narayan@google.com> Add an API for querying / enabling network TTS support.

bug:5284966
Change-Id: I01708f40bf0e975449125320dbcd4842210ca168
TextToSpeechService.aidl
extToSpeech.java
extToSpeechService.java
563fd3ae1b9d388f883b77b98a641a57bbdb6aed 27-Oct-2011 Narayan Kamath <narayan@google.com> Widen permissions on synthesized files.

When synthesized files are written to app private data dirs,
they are written with owner/grp set to the TTS engine and
are inaccessible by the app itself. This is a reported regression
from gingerbread behaviour. Note that the dir in which the
engine writes files is itself already world writable.

bug:5523587
Change-Id: I2cb26c6f3c3d9cb3cedd60fab32c99a85a27f4b1
ileSynthesisCallback.java
39268ffcb74f4c177e5e7427b66480c77743f928 17-Oct-2011 Narayan Kamath <narayan@google.com> Format default locale the same way as those stored in prefs.

Also explicitly disallow locales with empty countries. This
is required to match them against the set of engine supported
locales.

bug:5309930
Change-Id: Ie9714fdc09d3081081a2393d97c31e3a42bca294
tsEngines.java
a57f23837ad172c1b046d5e9cc8eb3d2e41a69f4 04-Oct-2011 Narayan Kamath <narayan@google.com> Allow listeners to be set before the service connects.

bug:5408876
Change-Id: Ib7b2ad56c74e24cc84b55ce748053b80eb0f66e8
extToSpeech.java
69bc1b2696dde849102f0ac8071999843d01b8d1 14-Sep-2011 Narayan Kamath <narayan@google.com> Don't wait indefinitely for audio tracks to finish playing.

If the track doesn't make progress for a fixed amount of time,
bail.

bug:5309562
Change-Id: I76966b8b3b2f05ba577892899791a09f50a70107
udioPlaybackHandler.java
a65c62acabd204a0a1eb5504160238b288bee52b 06-Sep-2011 Narayan Kamath <narayan@google.com> Fix two TTS bugs.

(a) Fix a null pointer exception, caused by a race condition
between stop / start calls.
(b) Fix a deadlock observed when multiple apps call stop() when
an item from one of those apps is currently being processed.

bug:5253061

Change-Id: I78533aecfda028588ce6aedb041009bc0a6f4620
extToSpeechService.java
97171243f82532398a96f7f7adcceb61722519de 30-Aug-2011 Narayan Kamath <narayan@google.com> Change the heuristics for waiting for audiotracks to finish.

This is made necessary by a bug when the utterance is smaller
than the audio buffer size. In that case, we call stop() to
flush the audio to the mixer, but that causes the playstate to
be set to stopped though some audio is still being mixed. This
breaks our waiting loop.

We now wait a fixed amount of time for such short utterances
and do not observe the playback head position.

bug:5220048
Change-Id: Ic81dec751c1faca0b14164caeda6305c8f9815fe
udioPlaybackHandler.java
ynthesisMessageParams.java
2a0518cd1d18dc50ffa063a71133e69de2e866ab 26-Aug-2011 Narayan Kamath <narayan@google.com> Don't allow TTS engines to synthesize too for ahead.

For each synthesis request, we inspect the number of
bytes of audio that have not been written to the mixer yet
and if that is above a certain threshold (currently 500ms),
we block the synthesis thread.

bug:5214603
Change-Id: I24c64c48466bdb96ce47b34cee7da2523ee5f0eb
udioPlaybackHandler.java
laybackSynthesisCallback.java
ynthesisMessageParams.java
e5b8c4dfc70288f661e0da4f082dd51cc1399f86 22-Aug-2011 Narayan Kamath <narayan@google.com> Framework changes to support new TTS settings features.

Locale is now stored per engine, instead of as a global
option.

bug:5149036
Change-Id: I9848172623fe8aea1dd8e6678bca008da6a4cfb1
extToSpeechService.java
tsEngines.java
84deb60cf1055385b9922811e5942076dd72e315 27-Jul-2011 Narayan Kamath <narayan@google.com> Reduce the priority of the TTS thread.

It's at a very high priority currently - and will trump
foreground processes (and UI threads) which it shouldnt.

bug:5076001
Change-Id: I0d71c2941950782491ae31526a47ea6f97c38ffb
extToSpeechService.java
673f360b0e22a8591f515cba7a90d5cfcfad81a7 20-Jul-2011 Narayan Kamath <narayan@google.com> Fix some AudioTrack related issues.

(a) Call stop() when we've written less than the
AudioTrack buffer. This forces pending buffers to
get mixed.

(b) Introduce a minimum sleep time to avoid spinlocks
if they system is busy

Change-Id: If70937e8b4e8c5d02d7dadc0d3086f97a10eb7ef
udioPlaybackHandler.java
ynthesisMessageParams.java
a36cce06a63ff0eb1c3a765ceb3863195732b4bf 19-Jul-2011 Narayan Kamath <narayan@google.com> Fix a threading issue in AudioPlaybackHandler

Never allow the AudioTrack to be observed in a state where
it is release()d but non null.

Change-Id: I1e5b61355f30c2aafcd55ecdf83077d7a9d99c66
udioPlaybackHandler.java
90e5650f96dabadaaf141beae20a646855073ae1 18-Jul-2011 Narayan Kamath <narayan@google.com> Few minor TTS clean ups.

(a) Remove unnecessary null check.
(b) Remove unused function.
(c) Clean up for TextToSpeech#shutdown.

Change-Id: I3ec5bccc327437064da130634a14aaf7d48eca4d
udioPlaybackHandler.java
extToSpeech.java
extToSpeechService.java
be4ad4ac66d6b4b878ed052975f7fb09af92c6d6 15-Jul-2011 Narayan Kamath <narayan@google.com> Fix a few threading issues in the AudioPlaybackHandler.

Also fixes a bug where PlaybackSynthesisCallback would
continue to pump audio to the audio playback thread after
being stopped.

Change-Id: I3233eb4858245b6e7c7df72e241a0708c668f1b4
udioPlaybackHandler.java
essageParams.java
laybackSynthesisCallback.java
extToSpeechService.java
c34f76fe89b5a31d01d63067c2f24b9a6a76df18 15-Jul-2011 Narayan Kamath <narayan@google.com> Improve TextToSpeech#isSpeaking()

Query the audio playback thread to check if it's busy.

bug:5033910
Change-Id: Ie57c7776bac27c2e712ddad4ec50fb7d78ea82e7
udioPlaybackHandler.java
extToSpeech.java
extToSpeechService.java
37ccb4b55d72ff49461ddf227c6a42764f48a293 15-Jul-2011 Narayan Kamath <narayan@google.com> Merge "Remove the completeAudioAvailable API."
c3da8818f0598b3ab2cd6f4168349da6d0f72cb1 01-Jul-2011 Narayan Kamath <narayan@google.com> Remove the completeAudioAvailable API.

Measurements have shown that the audio track in streaming mode
is pretty efficient as is, thanks to dalvik's JNI implementation.

Also, in streaming mode write( ) blocks until all data has been
copied to the mixer, which is the kind of behaviour we want so
that we don't have to explicitly block in our code. Also,
the java AudioTrack is thread-safe with respect to stop( ) calls
during write, which means we can do everything completeAudioAvailable
did, just as efficiently without it.

Change-Id: I70a8a108d94c7260676673979b5ea29f37fa5db4
udioPlaybackHandler.java
ileSynthesisCallback.java
laybackSynthesisCallback.java
ynthesisCallback.java
b9db1fb9de483f35f0189dae240b38e8a9cea8c9 14-Jul-2011 Narayan Kamath <narayan@google.com> Minor cleanups to TextToSpeech.

(a) Fix an NPE reported when no TTS engine is installed.
(b) Fix a bad link, and some javadoc typos.

bug: 5004015
Change-Id: I38b97dbb5d7d4065a5ee408fae9138638ed48f40
extToSpeech.java
47d6288541324b27c80b9949670f7b6b18d3ae4c 13-Jul-2011 Narayan Kamath <narayan@google.com> Wait until the audio track finishes playing before releasing it.

Release calls stop, which causes truncation of playback.
bug:5021056

Change-Id: I8eadcbf5622dab83be3c4dabfcc06629398f27ab
udioPlaybackHandler.java
ynthesisMessageParams.java
6dabb63307a0b63f9386d61e8444aed29db2081e 08-Jul-2011 Narayan Kamath <narayan@google.com> Add event-log logging for TTS requests.

Change-Id: I5023194c469a602b85259088a2e59373c96a941e
udioPlaybackHandler.java
ventLogTags.logtags
ventLogger.java
laybackSynthesisCallback.java
ynthesisMessageParams.java
extToSpeechService.java
963719869967cc257e666809aeb9bff3f25117ed 05-Jul-2011 Narayan Kamath <narayan@google.com> Minor changes to AudioTrack handling

Based on a discussion with the media folks.

Change-Id: I290cec062fcb53fccae1fd92387439448a54e81c
udioPlaybackHandler.java
bd2492e14ee9db9139cc0ff0bd29fc9864b0126c 27-Jun-2011 Narayan Kamath <narayan@google.com> Expose the currently used engine to bundled apps.

This is required to fix a couple of niggles and annoyances
in the Settings app.

Change-Id: I0ad0c41744282b552e844ba9a2157cea74c64234
extToSpeech.java
4d03462b374dfc080f0c7c78d458c102a26be5c6 16-Jun-2011 Narayan Kamath <narayan@google.com> New API for TTS settings.

Engines must declare a <meta-data> attribute in their
manifest with name "android.speech.tts". This must reference
an XML resource as per
com.android.internal.R.styleable.TextToSpeechEngine.

Change-Id: I56a6b9f1a360174f98c9f39da901ade83d0f38a7
extToSpeech.java
tsEngines.java
edd12149f050028844ca4449d3da0c16580ae486 16-Jun-2011 Narayan Kamath <narayan@google.com> Merge "Don't enforce defaults any more in the TextToSpeech API."
c3edf2a01a2cf2123a3de17ec1da11a3b6c459f0 15-Jun-2011 Narayan Kamath <narayan@google.com> Don't enforce defaults any more in the TextToSpeech API.

This has been discussed in an email thread. This brings the
text to speech API in line with other android APIs.

The user can set default speech rates / languages and
engine preferences, which the API obeys BUT these can be
overriden by individual apps (much like intent.setComponent
and intent.setClassName can be used to launch a specific
handler for a given intent).

Also, all installed engines are enabled by default. The
user is shown the "data privacy" warning every time an
installed engine is set to the default.

Change-Id: I24f5f331b3a7cc7ce1a62962192e3a452bdca9d4
extToSpeech.java
extToSpeechService.java
tsEngines.java
9ee8154e5910c40dc152ec08979c1e5899ddcc5a 15-Jun-2011 Narayan Kamath <narayan@google.com> Increase the visibility of SynthesisRequest

This makes it a lot easier for engine implementers
to test their engine. This is a dumb data object, and
contains no logic whatsoever.

Change-Id: I2a8bea134a8ff6b962508cfed67ea6085a682b23
ynthesisRequest.java
d0648ed060799d8006477fded17f63b969302a60 15-Jun-2011 Narayan Kamath <narayan@google.com> Fix a bug in TextToSpeech.

Check that the requested engine is enabled.

Change-Id: I8436b0b7b7f441fe3473601fb9c46181e90750e0
extToSpeech.java
9a67f2618444e0373dcbac0f3cc36e900105f18c 14-Jun-2011 Narayan Kamath <narayan@google.com> Merge "A few TTS bug fixes"
0e20fe5bab7dc3aff488d133961acfe0239f5240 14-Jun-2011 Narayan Kamath <narayan@google.com> A few TTS bug fixes

(a) ensure that onInit is called exactly once per call to initTts().
(b) TtsEngines should never return an engine that is not installed.

Change-Id: Ic1ef63a9339e6d1050e3302445ca40d3ae481f61
extToSpeech.java
tsEngines.java
3f0363bb4b9fab9799ac308dd48baf8830e30647 10-Jun-2011 Narayan Kamath <narayan@google.com> Deprecate setEngineByPackageName

This function does not let callers know when the TTS engine has
been initialized.

Change-Id: I17fcf3f95ad5bbdb9b787ba0846e6e63d424cd23
extToSpeech.java
d3ee2fa18464fb7e4d7f6d27610fbf60b6d1ffce 10-Jun-2011 Narayan Kamath <narayan@google.com> Refactor some of TextToSpeech

required to let the Settings code to the same logic
and not have to roll it's own.

Change-Id: I2766b8562c940182a2954555fb1854889c3ac91a
extToSpeech.java
tsEngines.java
a5084e6389920a5b79f7dd0fa38530e3306e40ea 10-Jun-2011 Narayan Kamath <narayan@google.com> Merge "Don't hardcode the default engine."
22302fb7ba11f75234f8a268f5932973dd080bf9 10-Jun-2011 Narayan Kamath <narayan@google.com> Don't hardcode the default engine.

One point to note is that no TTS engine will be selected
by default if there are no system TTS engines.

Change-Id: I397061e3cf29b8a1c66e7864262b43621ef5100d
extToSpeech.java
abc63fbddab2477a2954bc804aba2826e1f11084 10-Jun-2011 Narayan Kamath <narayan@google.com> Some TTS fixes.

(a) Document the undocumented queue mode (mode == 2)
(b) intern strings to fix a bug in removeCallbacksAndMessages
(c) remove an unnecessarly lock object, change the field it
guarded to volatile.

Change-Id: If46bbfe2afb047b3ba5b3cb9a90c292656379ec1
udioPlaybackHandler.java
extToSpeech.java
extToSpeechService.java
4924fe38675f0bf69bb0c16fc059ffa1606807ce 09-Jun-2011 Narayan Kamath <narayan@google.com> Implement QUEUE_FLUSH and QUEUE_DESTROY addition modes.

Note that this change is slightly more flexible, it defines
a priority for each playback request. We needn't really throw
away synthesis requests from other apps. We could just play
them after higher priority ones (for e.g from talkback).

Change-Id: I6c7dd9abe4871e87da08d9aaa4c55225a69078e5
udioMessageParams.java
udioPlaybackHandler.java
essageParams.java
laybackSynthesisCallback.java
ilenceMessageParams.java
ynthesisMessageParams.java
extToSpeechService.java
e22b69a7de0349b99d3107349d1d3aa72d62c841 08-Jun-2011 Narayan Kamath <narayan@google.com> Make changes to the TTS api suggested by the API review.

This ended up making the implementation a lot cleaner
as well. See the bug listed below for some background.

bug:4553470
Change-Id: If16476a57e389c2f9b228f6548e426642d292b49
bstractSynthesisCallback.java
ileSynthesisCallback.java
ileSynthesisRequest.java
laybackSynthesisCallback.java
laybackSynthesisRequest.java
ynthesisCallback.java
ynthesisRequest.java
extToSpeechService.java
8d1fc2403b8277e68d7816b2bbf05464a4c7a58a 03-Jun-2011 Narayan Kamath <narayan@google.com> Fix the threading behaviour of TTS audio requests.

All audio is played back on a separate thread.

Change-Id: I2bbb7b3140f6a04ef705cadb2bd1ae88951e3c48
udioMessageParams.java
udioPlaybackHandler.java
essageParams.java
laybackSynthesisRequest.java
ilenceMessageParams.java
ynthesisMessageParams.java
extToSpeechService.java
7a3af86dc03a45280ceca6154040577f614c571e 02-Jun-2011 Narayan Kamath <narayan@google.com> Language loading / availablity should repsect defaults enforcement.

There is no point loading a language that will never be used.
It is in fact harmful, because the engine might load it and
then receive a request for the default voice and have to load
the default voice again.

Change-Id: I8082f28d15b6e325d6a39d439b66753711a2c244
extToSpeechService.java
c90f1c815dc06d5bb563474a340f7bb158fab2e2 24-May-2011 Narayan Kamath <narayan@google.com> Add a separate thread for writing to audiotracks.

Now, SynthesisRequest.audioAvailable( ) will not block
until all data has been written to the audiotrack.

Change-Id: Ie24c0b6873ae44659e88646fb7ef821750dc314e
laybackSynthesisRequest.java
extToSpeechService.java
b956f37e375bb2588208d4b5e8a40fae6fae5f86 16-May-2011 Narayan Kamath <narayan@google.com> Pass synthesis request params through to the TTS service.

Change-Id: I1ffd617d8dfa0814382643e3cf6b3ab7417c742a
ileSynthesisRequest.java
laybackSynthesisRequest.java
ynthesisRequest.java
extToSpeech.java
extToSpeechService.java
4bbca889df9ca76c398f3a11e871fc6ad4a4514d 19-Apr-2011 Bjorn Bringert <bringert@android.com> Expose TTS engine API

This is a new API for writing text-to-speech engines.
The existing API for apps that use TTS remains the same,
with some minor additions.

Change-Id: Id577db449ae0e5baec40621d4a08387dbd755342
ynthesisRequest.java
extToSpeech.java
extToSpeechService.java
53f6f95308854e7da1fcd15081030d7de2fc5a7f 19-Apr-2011 Narayan Kamath <narayan@google.com> Fix onCompleteAudioAvailable

(a) Don't check that the audiotrack is initialized (will
not be true in static mode until the first write call)
(b) Block until it completes playing.

Change-Id: I50eb6cece00f3d12f3b75102d62014c360ac0346
laybackSynthesisRequest.java
a210e15c891e681fefb946116d4f7fc89a62fd91 19-Apr-2011 Bjorn Bringert <bringert@android.com> Merge "TTS: SynthesisRequest.error() instead of return value"
360eb168d6f9c967543852c7bbab370ef5d8c1bd 19-Apr-2011 Bjorn Bringert <bringert@android.com> TTS: SynthesisRequest.error() instead of return value

Change-Id: I02fe8ca1070a4e7c62ad30fd84c82bd6ecc2ecfa
ileSynthesisRequest.java
laybackSynthesisRequest.java
ynthesisRequest.java
extToSpeechService.java
fe6ea01602b47f3a0bfc0903a34fc682eae7fa69 18-Apr-2011 Bjorn Bringert <bringert@android.com> Only return default TTS engines from TTS.getEngines()

Change-Id: I31a716a33c895d2a3349889046dce83c90704a2d
extToSpeech.java
71e0b4807797c602e7fc787d00d27c4f9c92a507 15-Apr-2011 Bjorn Bringert <bringert@android.com> Improve TTS engine audio buffer API

This adds two methods:
SynthesisRequest.getMaxBufferSize()
SynthesisRequest.completeAudioAvailable()

Change-Id: I1186eed45997ee9a7e51212c8d6706dd324ca949
ileSynthesisRequest.java
laybackSynthesisRequest.java
ynthesisRequest.java
50e657bb2d005568f5dd8bc1d904d07b0d94018f 08-Mar-2011 Bjorn Bringert <bringert@android.com> Add Java API for writing TTS engines

This removes the old non-public C++ API for TTS
engines and replaces it with a Java API.

The new API is still @hidden, until it has been approved.

Bug: 4148636
Change-Id: I7614ff788e11f897e87052f684f1b4938d539fb7
lockingMediaPlayer.java
ileSynthesisRequest.java
TextToSpeechCallback.aidl
TextToSpeechService.aidl
Tts.aidl
TtsCallback.aidl
laybackSynthesisRequest.java
ynthesisRequest.java
extToSpeech.java
extToSpeechService.java
2cad2cc15345d8623049a17712068e813d305a25 08-Mar-2011 Bjorn Bringert <bringert@android.com> Exception handling clean-up in TextToSpeech.java

This is just a code clean-up change. It should have no effects
on behavior.

- The exception clean-up code was copied in lots of places,
added a restart() method for it.

- Use Log.e to print exception stack trace instead of doing
it manually.

- Moved return statements outside finally-blocks. Having them
in the finally-block makes no difference, but can be misleading.
Also, Eclipse complains about it.

Change-Id: Ibfb18ca89d81d1fd8d212f29b6f8ab305b52ec49
extToSpeech.java
708b47d1ecf62dbf2faf0b42aae880f719b42963 04-Mar-2011 Jean-Michel Trivi <jmtrivi@google.com> Fix bug 3511256 invalid TTS parameter cache size

The NB_CACHED_PARAMS is the number of cached parameters, not
the size of the array for cached parameters.

Change-Id: I3d3053bbf247f3f89ae1ea07a931d33df7857a7c
extToSpeech.java
dc871fd870972bd704d720fae45bcbbcc5905173 24-Jan-2011 Jean-Michel Trivi <jmtrivi@google.com> resolved conflicts for merge of 3ebade5d to honeycomb-plus-aosp

Change-Id: Ifd5f88f75feeb2dad1131e6a262dff3b979bdf8d
1e13a02320aa165c22172d43b2b3c3cd8ad35cf7 21-Jan-2011 Jean-Michel Trivi <jmtrivi@google.com> Bug 3365937 notify TTS initialization listener of binding errors

The creation of a TextToSpeech object causes the TTS service to
start, and the initialization listener to be called when the
service is connected. But the listener is never called when
the service binding failed to be notified of this error.
The fix consists in checking the result of the bind to service
operation, and notify the listener in case of an error.

More log was added in case speak() and synthesizeToFile() are
called but the service is not known to have started.

Change-Id: I7dcc1fa44be31fee3177ec6215fca3306377b934
extToSpeech.java
9011ec832d78982d017b1cef55a54af44ba2a447 11-Jan-2011 Jean-Michel Trivi <jmtrivi@google.com> Fix bug 2084122: enable application control over text synth volume

This CL unhides two "keys" an application can use to specify for
an utterance its playback volume and pan. Those two new keys
use the same mechanism already in place for an application to
specify stream type and utterance ID.

Change-Id: I020363487d7a0f471fb8d3ed739c561d2ab4b0a9
extToSpeech.java
9d2d26af2e1111251f5a21213a071eb4fdc1224f 06-Jan-2011 Jean-Michel Trivi <jmtrivi@google.com> Add support in TTS for volume and panning control of the synth output

Add two new parameters that are used when synthesizing text and
playing it back directly to control the volume and left-right
panning of the output.
Panning is applied using a balance law, which is not energy-preserving
but which doesn't lower the volume when not panning / panning to
center (legacy behavior).

Reduced amount of logs, and removed spoken text.

In TextToSpeech.java: added convenience method to handle the setting
of the cached synthesis parameters.

Change-Id: I235d3d3193283ccc1891e2065d43787e3f63304d
extToSpeech.java
4a60d61887a20d349e5eb38900dfbcaab06630fc 27-Jul-2010 Jean-Michel Trivi <jmtrivi@google.com> Fix NPE in TextToSpeech with setLanguage(null)

getLanguage() can return null, and pass it to setLanguage()
in TextToSpeech.initTts()

Change-Id: I8046e94959404bd63b0a90bcc2dbf4018f77c110
extToSpeech.java
6df44727d06548015e741dd8f63716602ed1e5d1 30-Mar-2010 Charles Chen <clchen@google.com> Unhiding TTS API constants and methods needed for TTS plugin support.
This is a fix for bug #2548048

Change-Id: Ieb60979098c1d2e82618204882bd523d271a8784
extToSpeech.java
1a2712ce2a18eba6809d984d2f7443fbdccaa7ed 02-Apr-2010 Charles Chen <clchen@google.com> Fix for bug 2564771 - pitch setting between apps can
interfere with one another.

Root cause was not caching all the params that were needed.
This change fixes that bug as well as related bugs for remembering
the default engine and for making sure that the right engine is
loaded when checking for language availability.

Change-Id: I2a76da8faec8112036e68d27539db444c53a1509
Tts.aidl
extToSpeech.java
42229259a6fca8851db74dc1c0ecbab2d3fb788d 30-Mar-2010 Charles Chen <clchen@google.com> Fix for bug 2548048 - it was impossible for applications to discover
if their TTS settings were being overridden by the user or not.

Change-Id: I28856a1b79c9455435671d13ed614a1ccb4e95ea
Tts.aidl
extToSpeech.java
def7185cf19d48c95b50c2b83503d5cd21a613bf 26-Mar-2010 Charles Chen <clchen@google.com> Cherry-picking this fix into Froyo.

This fix is part of addressing bug #2548048

Making it possible to determine which TTS engine is currently set
as the default by the user.

Change-Id: Ifa422f43a33498b94d96811078c0794d64668357
Tts.aidl
extToSpeech.java
b21651c10ca833e073337ae6a0ee55fcc39c32f1 04-Mar-2010 Jean-Michel Trivi <jmtrivi@google.com> Fix bug 2481825
When TTS is synthesizing to a file, return an error if the file
cannot be created.
extToSpeech.java
6a8b73be572f37b471322e7d49b44c3783633d96 02-Mar-2010 Charles Chen <clchen@google.com> Fixing a bug with TTS that caused TTS to ignore the default settings
unless the user had set the defaults to always override app settings.
extToSpeech.java
f1e245f7408f18cbb21430abf05a5407d03cfe07 12-Feb-2010 Charles Chen <clchen@google.com> Hiding the new TextToSpeech Intent extras for voice data check
to fix the build.
extToSpeech.java
76d9c3cb4f6f8c027959d2951e35a8b37762a1f3 12-Feb-2010 Charles Chen <clchen@google.com> Adding Intent extra strings to TextToSpeech.Engine for doing
voice data checks.
extToSpeech.java
60dd360640a400d9b4a602160733281d284aaee5 08-Jan-2010 Charles Chen <clchen@google.com> Enabling multiple apps to use different speech synthesis engines and not
interfere with one another.
extToSpeech.java
b4fbe768f8bfb2550dec100e29d0edc09b8a051a 19-Nov-2009 Charles Chen <clchen@google.com> Adding the ability to specify the speech synthesis
engine to use for text-to-speech.
Tts.aidl
extToSpeech.java
a9b417e9bfea3da908884c726ffc9bf4f64691cf 12-Sep-2009 Jean-Michel Trivi <jmtrivi@google.com> TextToSpeech javadoc update.
extToSpeech.java
9f5eadd2eed8b95c077a15d9e3e3c66fd151c215 15-Aug-2009 Jean-Michel Trivi <jmtrivi@google.com> Unhide the broadcast intent that signals completion of the TTS language
files. This is required for bug 2022435.
Correct the javadoc where two intents were mislabelled as broadcast,
but were activity actions.
extToSpeech.java
69e67a3e2e863fa8828151ef3a488bfcaa504f7a 11-Aug-2009 Jean-Michel Trivi <jmtrivi@google.com> Fix bug 2043140.
A race condition is encountered when an application invokes shutdown()
on its TextToSpeech object while is has speak() requests still running.
Since the TTS service destructor releases the synthesizer resources and
sets the corresponding synth reference to null, an NPE was observed.
The fix consists in catching NPEs whenever the sNativeSynth object is
accessed, and return the matching error for the call.
This change is a "low risk" version of the fix for bug 2025765i (same
issue) which was reverted because it was higher risk than this CL:
it affected the logic of each call to sNativeSynth. This CL only sets
an error code when an NPE is fired because sNativeSynth is null.
extToSpeech.java
77a5d39343760d9950ca15a87db0ae778afb4f2b 08-Aug-2009 Jean-Michel Trivi <jmtrivi@google.com> Fix bug 2022435.
Add new intent and matching extra to signal the completion of the
language pack installer. This is used by CL 20513.
extToSpeech.java
ed06578eddde07abe325fa4c92910bb7246cd49f 28-Jul-2009 Jean-Michel Trivi <jmtrivi@google.com> Fix bug 2017664
Removed the TTS_ prefix in the TextToSpeech class to follow the standard naming convention.
Moved the TTS-related intents from the Intent class to TextToSpeech and TextToSpeech.Engine.
Renamed the TextToSpeech.Engine constants that are used as extras for the
ACTION_TTS_CHECK_TTS_DATA intent to prefix them with EXTRA_.
Cleaned up the other TextToSpeech.Engine constant to remove superfluous mentions of
"TTS" in the name.
extToSpeech.java
9c53a5c01f7d9e2ffe93cc7ca03cac9c71968484 22-Jul-2009 Jean-Michel Trivi <jmtrivi@google.com> Resetting the setLanguage() call to its intended behavior after change 8089
which works around the bug where a language cannot be set if the default
language (which is loaded upon initialization) isn't eng-USA.
extToSpeech.java
1126aad736f3322559007b8abc49e26f550e4b54 21-Jul-2009 Jean-Michel Trivi <jmtrivi@google.com> Revert the setLanguage() call to its previous implementation as
waiting to change the language right before a call to speak can
put the engine in an unstable state.
extToSpeech.java
5e11a6ad00b062d604b30578e0fb412ae4586989 20-Jul-2009 Jean-Michel Trivi <jmtrivi@google.com> Prevent the setLanguage() method in TextToSpeech to change the language
for all current TextToSpeech instances by only caching the language
value so it is used with each subsequent utterance for this instance.
Synchronize calls to the engine around a global mutex since the engine
isn't thread-safe, except for the stop() call which is meant to interrupt
the synthesis loop.
extToSpeech.java
904dfa588431ff7c99c337d7797f5bef9ac12ce3 15-Jul-2009 Charles Chen <clchen@google.com> Adding missing addEarcon method. Not having this was a bug as
this method is needed to add earcons; otherwise, there is
nothing for playEarcon to play.
extToSpeech.java
62253a319d6359ce71c547d0b0aa36ba17789ab4 14-Jul-2009 Jean-Michel Trivi <jmtrivi@google.com> Unhide required definitions in TextToSpeech.Engine that cover return codes and
extras for android.intent.action.CHECK_TTS_DATA intent, and the key values
for the parameter hashmap that can be passed by an application in speak(),
synthesizeToFile(), playSilence() and playEarcon().
extToSpeech.java
78c9d0d2c5eb4d5687ae7cbe41155159329ad68f 14-Jul-2009 Charles Chen <clchen@google.com> Adding Utterance ID to the TtsService.
Tts.aidl
TtsCallback.aidl
extToSpeech.java
630a8de44fa0ca855c4a87d939432f831e8ed531 11-Jul-2009 Charles Chen <clchen@google.com> Fixing TTS breakage.
extToSpeech.java
a981013aa7315e13c6c5f6aad489813c419031ea 10-Jul-2009 Jean-Michel Trivi <jmtrivi@google.com> Add support in TextToSpeech for an audio stream type param and utterance
ID specified as a hashmap param in the synthesis calls.
Fix a bug where the cached parameters were not passed to the service
when synthesizing to a file.
extToSpeech.java
a9c5e4bf2639f8f09be8bace4230613b7b689f0e 10-Jul-2009 Charles Chen <clchen@google.com> Adding tagging to utterances to track which app said what.
Tts.aidl
extToSpeech.java
748efcc3fb1b369690ab4617a04f452b1832edf4 09-Jul-2009 Charles Chen <clchen@google.com> Adding a missing catch
extToSpeech.java
e28aced7bb96b086b16df82ff9c75b08671eb7df 08-Jul-2009 Jean-Michel Trivi <jmtrivi@google.com> Remove unused definitions for default language in TextToSpeech as
the default language is determined by the current Locale, not a hardcoded
value. Add a value for the default TTS engine to use.
extToSpeech.java
da7681e7b61dd450be72f2b4a80e6d1c86342e05 08-Jul-2009 Jean-Michel Trivi <jmtrivi@google.com> Optimize storing of cached TTS parameters. Initialize the cached
language settings with the current Locale.
extToSpeech.java
c8ba3b560ce0ce5944939a50d61f639fdcaa0015 07-Jul-2009 Charles Chen <clchen@google.com> Propagating error codes to TextToSpeech.java
extToSpeech.java
52ae06521a8d4c48757b126cff233f037d0a16ba 07-Jul-2009 Charles Chen <clchen@google.com> Fixes a compatibility issue with users that have the old TTS
installed already.
extToSpeech.java
a3f89295ad4c7bd65a25144d2be1d45ea0acf87f 06-Jul-2009 Charles Chen <clchen@google.com> Propagating the error codes through the TtsService
Tts.aidl
4bca97ecaf04c50d5ed49920d119f9ffa6c29402 03-Jul-2009 Charles Chen <clchen@google.com> Removing IPA - IPA is already handled by the phoneme tag.
Tts.aidl
62788e9b48f884a35b89c88911b581daa6a14e08 03-Jul-2009 Jean-Michel Trivi <jmtrivi@google.com> Unhide android.speech.tts.TextToSpeech
extToSpeech.java
99a0feecd0f0aad314d7a4637d329b8a9e8c1150 02-Jul-2009 Charles Chen <clchen@google.com> Adding strings for data root and data files - these are needed
for returning this information in an Intent from checkVoiceData.
extToSpeech.java
ddb0a803fd353fbaf0139cc8804499bc9dce7403 30-Jun-2009 Jean-Michel Trivi <jmtrivi@google.com> Adding in TTS service support for language query and level of support.
Tts.aidl
extToSpeech.java
5c22f516be7753859f62ca3ff5327c453ee26faa 30-Jun-2009 Charles Chen <clchen@google.com> Adding status return codes for TTS calls.
extToSpeech.java
d4989093ed708ddf9c799655ea0af7afda726426 27-Jun-2009 Charles Chen <clchen@google.com> Adding implementation of IPA to the TextToSpeech.java
extToSpeech.java
f032bc7da536774a0b6a1c77632c65b935eee6fa 26-Jun-2009 Charles Chen <clchen@google.com> Adding in the playSilence method to TextToSpeech.java
extToSpeech.java
741c25b164d132ddc6ef662ddf854ebedcd0e389 26-Jun-2009 Charles Chen <clchen@google.com> Adding skeleton methods for IPA support.
Tts.aidl
87c9684fd0fa31fd6ad7f7e9f4cfedddc4fdc4b0 25-Jun-2009 Jean-Michel Trivi <jmtrivi@google.com> Add caching of the speech rate and language in android.speech.tts.TextToSpeech
so the speech params can be passed along in calls for text synthesis.
extToSpeech.java
aaf842edbfe76990413d4c002acb394f855321b5 25-Jun-2009 Charles Chen <clchen@google.com> Updating the TextToSpeech.java with skeleton methods.
extToSpeech.java
2ea5349583de4a505501530d04133524bb6d5d38 23-Jun-2009 Jean-Michel Trivi <jmtrivi@google.com> Adding support for pitch changes of the synthesized text in Text-To-Speech.
Tts.aidl
extToSpeech.java
d146874d7341bc9602c93719582b4209e7b81f01 18-Jun-2009 Jean-Michel Trivi <jmtrivi@google.com> Grouping under TextToSpeech.Engine the constants to be used by
a TTS engine implementation or a settings application for default
values, and data integrity check return codes.
extToSpeech.java
679d728f09eeab2f8b882e42f6e081db1ac74996 17-Jun-2009 Jean-Michel Trivi <jmtrivi@google.com> Using Locale to specify language and country for a TTS language to load,
rather than a String.
Cleanup in doc for TextToSpeech, and addition of queue mode constants.
Tts.aidl
extToSpeech.java
91bf30a4779146a14b2c9c5ce168d641cd31cb8e 11-Jun-2009 Jean-Michel Trivi <jmtrivi@google.com> TextToSpeech class cleanups
- harmonized private member variable names
- added success / failure codes (used for now in initialization)
- synchronized access to speech completed listener.
extToSpeech.java
a8518c169bb34e540b7542ad5bd3891053d01a9f 11-Jun-2009 Jean-Michel Trivi <jmtrivi@google.com> Renaming the Tts class to TextToSpeech for clarity.
Switching to HashMap for parameter lists to pass key-value parameter pairs.
Using TODO instead of FIXME in comments.
Removing methods that don't belong anymore to the TTS interface now the feature
becomes part of the platform.
extToSpeech.java
ts.java
f85aa5a4d4e6f1ef7e07638568e27d709b8085c6 10-Jun-2009 Charles Chen <clchen@google.com> Restructuring the TTS files so that it works as a Service
Tts.aidl
TtsCallback.aidl
ts.java
bac43254b219c827f3d1fd286f4a7f19e9ee2f05 09-Jun-2009 Jean-Michel Trivi <jmtrivi@google.com> In Tts class, removing method to set the specific engine to use as the
framework is always using the engine selected in the Text-To-Speech service.
ts.java
21a6a6d26baf32593d63226f9728ddd66f0bd571 09-Jun-2009 Jean-Michel Trivi <jmtrivi@google.com> Moving the Tts java class from the android.tts package to the android.speech.tts package.
The Tts class (still hidden at this point) is the only Text-To-Speech class that will be
exposed to application developers.
ts.java