Commit Graph

221 Commits

Author SHA1 Message Date
John Spurlock
6090995951 Remove unused imports from frameworks/base.
Change-Id: Ia1f99bd2c1105b0b0f70aa614f1f4a67b2840906
2013-11-20 11:31:47 -05:00
Siva Velusamy
d41b852f92 Fix Javadoc error
This fixes an error introduced with I180296d413a18301cead1c8e3212de2bd0c7e32d

Change-Id: I06512a0fb388738fae5bba5540189095f23f1e2a
2013-10-29 14:11:11 -07:00
Przemyslaw Szczepaniak
97cd647fcd 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
2013-10-29 10:56:06 +00:00
Nick Kralevich
eb337054ed fix javadocs.
Change-Id: Ie008e28db0d3de22c933b4ef1ccbd3f082010a77
2013-10-24 16:22:12 -07:00
Przemyslaw Szczepaniak
90d15d2371 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
2013-10-24 13:42:15 +01:00
Przemyslaw Szczepaniak
58f1665372 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
2013-09-25 10:01:27 +00:00
Sandeep Siddhartha
f702286c94 Merge "Remove HotwordRecognition APIs" into klp-dev 2013-09-11 19:01:51 +00:00
Sandeep Siddhartha
65a6ba3478 Remove HotwordRecognition APIs
- and its usage from Keyguard

Bug: 10708010
Change-Id: Ic4a695a1d0e9312706a3b4ff01e59e2567b6ad9c
2013-09-11 11:01:13 -07:00
Marc Wilson
2921cee304 Update documentation for speech APIs.
Makes it clear that the intent and service APIs are likely to stream
audio over the network and notes that impact this has on bandwidth and
battery life.
Also clarifies that the service API should not be used for continuous
recognition as a result. The intent API only runs when the activity is
in the foreground so I didn't mention continuous recognition for it.

Bug: 10674392
Change-Id: Ib5e0c16b3124f4b7d892ef5bd4167f23662d2ca3
2013-09-10 15:41:47 +01:00
Sandeep Siddhartha
bc916b221a Fix checkbuild error due to javadoc reference to hidden class
Change-Id: I128b8a6dd725468d0c9503b8229f8939fddb51bc
2013-09-10 02:17:20 +00:00
Sandeep Siddhartha
1f0ef2cc33 Move public consts to HotwordRecognitionService
- The HotwordRecognitionService is the only public component of
  Hotword recognition allowing others to implement hotword recognition
- The client API is not available for use by all, hence the consts need
  to be moved to the service class.
- Ideally we'd have retained the public consts in the client side API
  (HotwordRecognizer)

Change-Id: Ibd0d1c0d0514ec4e8f7c284e22c5fa6b7ef3df26
2013-09-06 18:12:11 -07:00
Sandeep Siddhartha
05203c1e4b Fixing build break
Change-Id: I89d1416b356423ee795f01b4c3200bcaa3ec8389
2013-09-06 18:04:48 -07:00
Sandeep Siddhartha
c73c178374 Add permission checks and unhide the Hotword recognition APIs
- Also tweak the API a little to send an intent on hotword being
  recognized.

Change-Id: I8a3fedaec4e1db595ed058089734d25c7957111e
2013-09-06 12:34:03 -07:00
Przemyslaw Szczepaniak
61dda19859 Fix SynthesisRequest javadoc
Bug: 10548784
Change-Id: I76a89bb9accdeee00c60a668adbdd789b995cd92
2013-09-02 16:41:05 +01:00
Sandeep Siddhartha
823393477b Tweak the HotwordRecognizer API
- Make it more intuitive by enforcing callers to set a listener while
  starting recognition
- Fix TODO to resolve the ComponentName if none is provided
- Unbind from the Hotword service if stopRecognition is called
- Get rid of the callback in onStopHotwordRecognition

Change-Id: I8edad0ef0f3671283aeb51eaed1d3b8dab01baa0
2013-08-28 16:27:36 -07:00
Sandeep Siddhartha
407d794a9d Touch up the Hotword API
- Few comments got missed from the last review

Change-Id: I933912c51794875be5d129351d4f06bc040537a6
2013-08-26 18:01:34 -07:00
Sandeep Siddhartha
637cc45809 Add Service API to perform Hotword recognition
Change-Id: I855330b255a12cce309aa11e0b7cde5b8e061043
2013-08-26 17:32:16 -07:00
Elliott Hughes
89a8250e24 am 710f3e2c: am 60ae2617: Merge "If frameworks wants ASCII casing, it should explicity ask for it."
* commit '710f3e2cc6bc2cdc2f2cddb2190823ea31efd52a':
  If frameworks wants ASCII casing, it should explicity ask for it.
2013-08-02 17:58:33 -07:00
Elliott Hughes
cb64d43062 If frameworks wants ASCII casing, it should explicity ask for it.
http://elliotth.blogspot.com/2012/01/beware-convenience-methods.html

Bug: https://code.google.com/p/android/issues/detail?id=58359
Change-Id: Iaab02e718a7be7bda22e626dca05d79bfd2a8fc4
2013-08-02 15:12:32 -07:00
Przemyslaw Szczepaniak
e86a936afd Document the case where TTS onInit callback is called in ctor.
Bug: 8743649
Change-Id: Ibf6002f93af9d19d809679852310561e69d57c1e
2013-06-20 08:58:41 +00:00
Przemyslaw Szczepaniak
653278341d 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
2013-06-05 14:44:52 +00:00
Przemyslaw Szczepaniak
40d51e7003 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
2013-05-21 12:29:28 +00:00
Przemyslaw Szczepaniak
d0b927948e 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
2013-05-08 15:56:12 +01:00
Przemyslaw Szczepaniak
24943bf19d 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
2013-03-13 15:50:00 +00:00
Przemyslaw Szczepaniak
7341786b13 Forgot to rename constructor to match class name.
Change-Id: I7e66c3dd26ec7f8be381b0dfd87ac686665206cd
2013-03-06 10:04:07 +00:00
Przemyslaw Szczepaniak
fcf671be89 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
2013-03-06 09:27:11 +00:00
Przemyslaw Szczepaniak
5acb33af35 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
2013-02-18 11:09:23 +00:00
Przemyslaw Szczepaniak
647abce570 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
2013-01-30 09:37:05 +00:00
Fergus Henderson
1c2df38242 Fix logic error in Pszczepaniak's recent change.
Also improve wording of error message.

Bug: 7666482
Change-Id: I2d2316b10fdf394bec8963327529723cbd5fbb32
2013-01-25 14:59:59 +00:00
Przemyslaw Szczepaniak
9c4012b31b 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
2013-01-22 17:20:37 +00:00
Przemyslaw Szczepaniak
176baa7de1 Revert "Deprecate unused and implementation-specific parts of TTS API"
This reverts commit 8a3d9f0319

Change-Id: I5a5c18f72ae2ea73c21dc27c7469c68d6b4b4c24
2013-01-09 03:36:23 -08:00
Przemyslaw Szczepaniak
8a3d9f0319 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
2013-01-09 03:08:29 -08:00
Przemyslaw Szczepaniak
b46533732c 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
2012-12-13 03:21:30 -08:00
Przemyslaw Szczepaniak
2d940bcbd1 Make TTS input string limit public and documented.
TTS input limit is now publicly available from getMaxSpeechInputLength()
static method.

Bug: 7456118
Change-Id: Ib2afbb7202ad9dc15895f322fbd1480a5f1f7278
2012-11-27 03:25:27 -08:00
Przemyslaw Szczepaniak
13896b7419 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
2012-11-20 05:08:49 -08:00
Przemyslaw Szczepaniak
228323e759 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
2012-11-20 04:14:39 -08:00
Przemyslaw Szczepaniak
8f3957cb91 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
2012-11-20 04:01:09 -08:00
Przemyslaw Szczepaniak
c3c427d2e3 Revert "Make TTS input string limit public and documented"
This reverts commit f288a64f5b

Change-Id: I6f3e2a6a6a131b0422cfcdb2bda23f8ae245d774
2012-11-16 05:11:23 -08:00
Przemyslaw Szczepaniak
f288a64f5b Make TTS input string limit public and documented
Bug: 7456118
Change-Id: Iced44eb349e1abb551f991c2b9357a03bab3bb3d
2012-11-16 03:14:22 -08:00
Kenny Root
7b172a49a9 am 58ed5d74: am 768d9e1a: Merge "Correct executable bit for source files"
* commit '58ed5d748c0b9b64845975ef5844ad313de7c3f6':
  Correct executable bit for source files
2012-11-07 13:08:25 -08:00
Kenny Root
58ed5d748c am 768d9e1a: Merge "Correct executable bit for source files"
* commit '768d9e1a72ceee7d4a5f608776b87b62d6ce4a04':
  Correct executable bit for source files
2012-11-07 11:52:12 -08:00
Kenny Root
3a084af2e9 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
2012-11-07 10:27:31 -08:00
Przemyslaw Szczepaniak
a6e16b86b9 SynthesisCallback documentation update
Clarification about when android.speech.tts.SynthesisCallback.done()
should be called.

Bug: 2481825
Change-Id: Ic781a6facc2d9acb3f06afb952fbac0b494c56cf
2012-10-15 13:07:11 +01:00
Przemyslaw Szczepaniak
442f1786b2 TTS documentation clarification.
Bug: 7183943
Change-Id: Iffec9069bef7c9c428ebae2f84ba16ef697ffb2a
2012-10-02 02:59:36 -07:00
Przemyslaw Szczepaniak
70574efd8f 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
2012-08-28 02:19:20 -07:00
Przemyslaw Szczepaniak
091d56cab8 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
2012-08-20 08:56:39 -07:00
Narayan Kamath
9c3d7a888d 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
2012-08-14 08:38:26 -07:00
Narayan Kamath
ed4e541a20 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
2012-08-14 08:36:27 -07:00
Jean-Michel Trivi
482c9bb390 New action and extra in RecognizerIntent for "hands free" voice search
New action and extra for android.speech.RecognizerIntent:
  ACTION_VOICE_SEARCH_HANDS_FREE
  EXTRA_SECURE

Change-Id: I1f390ede4f4087bae1781347bb211dc0a093e857
2012-05-17 15:43:40 -07:00
Narayan Kamath
c60aad2a8a Write unit tests for android.speech.tts.
Change-Id: Ie5b3b4cdd13be2babee9a44bae00da179b372d12
2012-01-09 13:38:55 +00:00