• Home
  • History
  • Annotate
  • only in /frameworks/base/core/java/android/hardware/soundtrigger/
History log of /frameworks/base/core/java/android/hardware/soundtrigger/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
d7a7af558b2ff74e55890f618011c8d66b226fed 21-Mar-2017 Chris Thornton <thorntonc@google.com> Prevent inclusion of null KeyphraseMetadata in info map.

If getKeyphraseMetadataFromApplicationInfo encountered a parse error, it
would return a null KeyphraseMetadata instance. Other parts of
KeyphraseEnrollmentInfo assume that everything inserted into the member
mKeyphrasePackageMap is valid, so this would cause an NPE.

Bug:33448806
Test: Build a bogus enrollment APK and not see a crash.
Change-Id: I0936439ea4bd0050580a7b0ee8f08f2992ebfd63
eyphraseEnrollmentInfo.java
d9729d1df877d88e7dbdc1b2675a331cea519338 06-May-2016 Chris Thornton <thorntonc@google.com> Fix NPE in KeyphraseEnrollmentInfo.toString()

If there are no enrollment applications on the system, but someone still
makes a KeyphraseEnrollmentInfo and tries to print it, it would generate
a NPE on a map object. Instead of setting the map to null when we don't
find any enrollment applications, we can just set it to an empty map.

Bug:28622866
Change-Id: I023e6fd90effd3143c19817a0d6637a013bebc31
eyphraseEnrollmentInfo.java
1cba0696bd4c0e9d9d35f919a7a4c029ba9e4956 01-Apr-2016 Chris Thornton <thorntonc@google.com> Support multiple Enrollment APKs

Previously, the KeyphraseEnrollmentInfo would iterate through the list
of Enrollment APKs and just use the first one for a list of supported
keywords (of which there only could be one). Now, all APKs will be
enumerated and the enrollment APK that provides the given
keyphrase/locale will be used for the enrollment intent.

Change-Id: I78b0ef758c6c024b5787603bba5907a646f3c3f1
eyphraseEnrollmentInfo.java
ea04e8fe75b6a369b487f0f9a1cc180f5227ca3c 03-Mar-2016 Ryan Bavetta <bavetta@google.com> Fix soundtrigger test, adds null pointer check

BUG:27461735
Change-Id: I95ea641e41bcaefce15004f508ddb4bed0b5f2a8
oundTrigger.java
f47f173b06e2972bb376da8ff11db3a83c21d10b 19-Feb-2016 Arunesh Mishra <arunesh@google.com> Fix AlwaysOnHotwordDetector recognition event bug.

Parcelables don't work well with inheritance. So changed the
IRecognitionStatusCallback to have onKeyphraseDetected() and
onGenericSoundTriggerDetected() for those respective events.

Made corresponding changes to AlwaysOnHotwordDetector and SoundTriggerDetector.

Bug: 27250528
Change-Id: Ic08a431e7cc4248c688b05c865348170246de576
RecognitionStatusCallback.aidl
oundTrigger.aidl
oundTrigger.java
a772e5fc062c8de48cb9c1d61755110f6b2e189b 25-Jan-2016 Arunesh Mishra <arunesh@google.com> SoundTrigger API improvements.

This CL implements the SoundTrigger API improvements as given in b/22860713. Only the java-level
parts are implemented in this CL.

Key changes include:

* Addition of a SoundTriggerManager/SoundTriggerDetector system API to manage
the sound-trigger based sound models.
* Addition of a SoundTriggerService service that manages all sound models
including voice (keyphrase) and sound-trigger based models.
* Includes logic to write sound-trigger based models to the database.
* VoiceInteractionManager service now uses SoundTriggerService instead of
SoundTriggerHelper.

Bug: 22860713
Change-Id: I7b5c0ed80702527c4460372efeb5e542d3693a69
RecognitionStatusCallback.aidl
oundTrigger.aidl
oundTrigger.java
8ea56f68517ffa42bd5f43ab67f4ebfcfcb0cd23 07-Jul-2015 Lazar Trsic <Lazar.Trsic@imgtec.com> Replace hard-coded errno values with OsConstants

Errno values have been hard-coded inside java code. On the native side
however, bionic's errno.h is used (through utils/Errors.h). Some of
the numbers are architecture dependent (EOPNOTSUPP, ETIMEDOUT...).

This causes Camera app to crash on MIPS devices. There is a check for
expected errors, in CameraBinderDecorator.throwOnError, but the error
(EOPNOTSUPP) is not recognized and an exception is thrown.

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

Change-Id: I031443de83f93eb57a98863001826671b18f3b17
oundTriggerModule.java
33d3c53da021f0d044028860ace0f4ad817273f5 11-Feb-2015 Alex Klyubin <klyubin@google.com> resolved conflicts for merge of 517e0274 to lmp-mr1-dev-plus-aosp

Change-Id: Ic20b6c8851458483dd73a144bd5ae6e8d141e62a
b9f8a5204a1b0b3919fa921e858d04124c582828 03-Feb-2015 Alex Klyubin <klyubin@google.com> Move hidden ApplicationInfo flags into a separate field.

The public API field android.content.pm.ApplicationInfo.flags can
support only 32 flags. This limit has been reached. As a short term
workaround to enable new public flags to be added, this CL moves flags
which are not public API into a separate new field privateFlags and
renames the affected flags constants accordingly (e.g., FLAG_PRIVILEGED
is now PRIVATE_FLAG_PRIVILEGED).

The new privateFlags field is not public API and should not be used
for flags that are public API.

The flags that are moved out of ApplicationInfo.flags are:
* FLAG_HIDDEN,
* FLAG_CANT_SAVE_STATE,
* FLAG_FORWARD_LOCK, and
* FLAG_PRIVILEGED.

NOTE: This changes the format of packages.xml. Prior to this CL flags
were stored in the "flags" attribute. With this CL, the public flags
are stored in a new "publicFlags" attribute and private flags are
stored in a new "privateFlags" attribute. The old "flags" attribute
is interpreted by using the old values of hidden/private flags.

Change-Id: Ie23eb8ddd5129de3c6e008c5261b639e22182ee5
eyphraseEnrollmentInfo.java
45c00b5877e908f44853783b42deb437cfd30d94 17-Oct-2014 Sandeep Siddhartha <sansid@google.com> Don't unload the sound model on stopRecognition

This helps us in majority of the scenarios where the sound model doesn't
change across start/stop calls.

Bug: 17954633
Change-Id: Ibff817bb69bc69d2bb3a2603460fed596688b892
oundTrigger.java
75b433f737c3f45ac111a13876c0fd450b0b94ec 13-Sep-2014 Eric Laurent <elaurent@google.com> SoundTrigger: fix KeyphraseRecognitionEvent parceling

Always include the Audioformat in the parcel if not
null.

Bug: 17489186.
Change-Id: I8bea031942b55078e5637959d5bf70961d134733
oundTrigger.java
39fcca0a503658f91a14b4b1d35dfc4ac9fce9d9 06-Sep-2014 Eric Laurent <elaurent@google.com> SoundTrigger: fix capture format in recognition event

Also include capture format in recognition event
if capture is available for streaming. It was only
included if trigger was contained in event.

Bug: 17409062
Bug: 16731718
Change-Id: I5bf566e6bda57f23c870b4a1293e9b6d15d51e5a
oundTrigger.java
a54cd533663b9836ec78735078ff11a6ca6a6db0 23-Aug-2014 Sandeep Siddhartha <sansid@google.com> Fix an issue with locale for managing intent

Bug: 17187528
Change-Id: I254d838b6b37934ce81dd1fcd5a047b50d593887
eyphraseEnrollmentInfo.java
dcf3068fcb55f101680e70a8a6f84f3b2c9cb1e3 23-Aug-2014 Sandeep Siddhartha <sansid@google.com> Fix the Locale story in the hotword API

Tighten the API by taking in a locale rather than a string tag.
Tighten the checks when reading the enrollment metadata, bail out if any
attribute is missing or invalid.
Add missing recycle call for a TypedArray

Stop recognition when sound model(s) change. This is needed during
un-enrollment/re-enrollment.

Bug: 17187528
Bug: 17205230
Change-Id: Idb00b51ef8c4ea0a8f8993decea582223181fa3d
eyphraseEnrollmentInfo.java
eyphraseMetadata.java
6df952ec2208714d3206c54987eb388aee799be6 09-Aug-2014 Sandeep Siddhartha <sansid@google.com> Add debugging info to VIS via dump()

Change-Id: I9e8f4536de309256db835b30d94765bfc27d4e80
eyphraseEnrollmentInfo.java
cb4e81c7fe1ec843d80f7604a688c71086c23685 06-Aug-2014 Sandeep Siddhartha <sansid@google.com> Handle microphone contention/Phone calls while recognition is active

Internally we pause the recognition when:
- a phone call is active/off-hook/ringing
- or some other application grabs the microphone

we auto-resume when the condition that caused us to pause reverses.

Both these events are notified to the client via callbacks so that they can choose to display on their UI,
that the recognition is paused for some reason.

Bug: 16515468
Bug: 16740806
Bug: 16514535
Change-Id: Ib274d68522c8cf37d42402c875b16159957657f0
RecognitionStatusCallback.aidl
d3b8223377b8046280e4c09e728edc600171f941 30-Jul-2014 Eric Laurent <elaurent@google.com> SoundTrigger API update.

Add sound model update callback.
Add native service state change callback.
Add vendor UUID in sound model description.
Add coarse confidence level in recognition event.
Add capture format in recognition event.

Bug: 12378680.

Change-Id: Id63437819ec7b9a4a69e1ff6185b747e20cad95e
oundTrigger.java
oundTriggerModule.java
2c0273e50a3162595e9a54030166f2369b039a5a 01-Aug-2014 Sandeep Siddhartha <sansid@google.com> Add a flag for multiple triggers with same recognition session

Also annotate the flags with @IntDef to make things clearer and safer

Add more debug logging

Revert to start/stop being synchronous since telephony and microphone will
need to be handled internally.

Bug: 16731586
Bug: 16514535
Bug: 16549061
Change-Id: I83695d52e9547269c95d443e4d921c9238b7401e
oundTrigger.java
1ed12ddb8c46193cc4d790b9c7d6a5d61afb3311 29-Jul-2014 Sandeep Siddhartha <sansid@google.com> Make startRecognition async

- This is needed for telephony and audio integration which should happen via async callbacks
that'll end up starting/stopping recognition.

e.g. if a startRecognition happens when in a phone call - the onDetectionStarted will get called once the phone
call ends.

For now the transient stoppages due to internal reasons will not be propagated back to the client.

Bug: 16514535
Bug: 16515468
Change-Id: I1b2b8edd28f5c5e67c453f66c23e1a67a626114e
RecognitionStatusCallback.aidl
6817337118655d5792e36e954b123e6daa4174a6 28-Jul-2014 Sandeep Siddhartha <sansid@google.com> Read the keyphrase ID from the recognition event

Bug: 16516658
Change-Id: Ibeee81c9543aa1091bb075066cfc2269107f13c0
RecognitionStatusCallback.aidl
oundTrigger.aidl
oundTrigger.java
39c12fab49075b715c253c68c84b5c10c3150197 26-Jul-2014 Sandeep Siddhartha <sansid@google.com> Use blob (shared memory) for large data in sound model/recognition event/config

Also add a missing null check in writeBlob

Bug: 16516353
Change-Id: Ie702f8daae541cab7c2cee6e13d49e7fc84c84e1
RecognitionStatusCallback.aidl
oundTrigger.aidl
oundTrigger.java
110f569b47bc21fb38ec25b6110ee302ce137e06 20-Jul-2014 Sandeep Siddhartha <sansid@google.com> Fix synchronization issues in AlwaysOnHotwordDetector

- Remove unnecessary recognition status from AlwaysOnHotwordDetector

- Remove unnecessary recognition started callback from IRecognitionStatusCallback

- Fix a bug around the fact that we weren't picking up enrollment at runtime because
we were storing the availability at instantiation time.

- Handle 0-length arrays in SoundTrigger classes while parceling/unparceling

- Fix issue in SoundTrigger helper where we were not comparing binders for start/stop calls

- Unload the previous model when starting a new recognition

- Add more debug logging

Change-Id: Icc56d7f3dd1ffa49a8cfeea49080e3ab4d342c32
RecognitionStatusCallback.aidl
oundTrigger.java
055897208d659e9734a82def88be4a806ff55448 18-Jul-2014 Sandeep Siddhartha <sansid@google.com> Move sound trigger calls to VoiceInteractionManagerService

- This ensures that any data being loaded on the DSP comes from the framework

Change-Id: Ie15f0994850ba8f298ca07c49fe0b89e066d9e2b
spInfo.java
RecognitionStatusCallback.aidl
eyphrase.aidl
eyphrase.java
eyphraseSoundModel.aidl
eyphraseSoundModel.java
oundTrigger.aidl
oundTrigger.java
oundTriggerHelper.java
e6cd2476aa9d07df0de0a0081ab66d8401a7e228 11-Jul-2014 Sandeep Siddhartha <sansid@google.com> Add recognition modes to the enrollment metadata

This will be used by the Voice interaction service to determine what type of recognition may be run
on the DSP. e.g. If the DSP supports voice trigger only for the given keyphrase,
the voice interaction service may want to perform user identification at its end.

Also support keyphrase metadata for all keyphrases and locales.
In case the enrollment app supports open-ended keyphrases, it can leave the keyphrase text
to be empty
similarly, if the enrollment app supports all locales, it can leave the supported locales
attribute to be empty,

Change-Id: I782a17a877fc79ed569fa7c3a81697641182590b
eyphraseEnrollmentInfo.java
eyphraseMetadata.java
oundTriggerHelper.java
a433af6b739e6d1b57a06913401086cdd8eccffb 17-Jul-2014 Sandeep Siddhartha <sansid@google.com> Add code for isKeyphraseActive and some logging to help debug issues

Change-Id: I89f2090be5a5fe5f7c0da1648a0d46a093893fe2
oundTriggerHelper.java
8ecaf5f5cfd18e0436db1a27ccf46a063e9aacd7 11-Jul-2014 Sandeep Siddhartha <sansid@google.com> Hook in startRecogniton call

Add required info to the sound model database: users & recognition modes

Change-Id: I6e12cbc6342a2767c0e3d8328c0a3be899ac9952
eyphrase.java
eyphraseEnrollmentInfo.java
eyphraseSoundModel.java
oundTriggerHelper.java
d7018200312e4e4dc3f67cf33dc90bf7ce585844 11-Jul-2014 Sandeep <sansid@google.com> Always on hotword changes

Add model management API skeleton to VoiceInteractionManagerService
Add an "interactor" for all always-on APIs

- The VoiceInteractionService will get an interactor for the given
keyphrase and locale.
- It can then check the availability and call methods to start and
stop recognition on this interactor.

- Add a common class to deal with SoundTrigger APIs

- Cleanup the keyphrase representation:
We now have separate representations for the keyphrase metadata and
a keyphrase being used for recognition.
This'll also help us to handle custom keyphrases in the
future easily.
This also ensures that for use within the framework,
we rely on the ID of the KeyphraseInfo rather than comparing the
text everytime.

Add a callback for the AlwaysOnHotwordDetector

This callback should be passed in by the VoiceInteractionService and is used to notify it
of recognition events.

Change-Id: I26252298773024f53a10cdd2af4404a4e6d74aae
spInfo.java
eyphrase.aidl
eyphrase.java
eyphraseEnrollmentInfo.java
eyphraseMetadata.java
eyphraseSoundModel.aidl
eyphraseSoundModel.java
oundTrigger.java
oundTriggerHelper.java
013f66b92db609fceeff9c8171daca13d057cc95 07-Jul-2014 Eric Laurent <elaurent@google.com> SoundTrigger: update API

class Keyphrase: replaced number of users by list of user IDs.
class RecognitionEvent: added capture preamble duration.
class KeyphraseRecognitionEvent: add keyphrase ID and explicit list of
user ID/confidence level pairs.
startRecognition(): takes a RecognitionConfig specifying the list of
keyphrases to listen to as well as for each keyphrase the recognition mode,
users and min confidence levels for each user.

Bug: 12378680.
Change-Id: I57036cc83b5d9e90512b8bb3f951af3a4a74c0ce
oundTrigger.java
oundTriggerModule.java
d4233c68fc17f0909e9e36494db85a634f8e2665 13-Jun-2014 Sandeep Siddhartha <sansid@google.com> Initial code for listing/storing sound models

- We use a DB to store and persist the sound models.
- This'll be used by SoundTriggerModelManager, a service that lists,
deletes and registers new models. This'll be used by the enrollment
client to enroll and unenroll users.

- This needs the unique identifiers for sound model & keyphrases to be
present in the respective data structures

This is very early stage so please point out any concerns.

Change-Id: I82962895bf326167458f20e6ba995295551de025
oundTrigger.java
e48188ce35f613f64b513e5d8ce24fada1212d8e 19-Apr-2014 Eric Laurent <elaurent@google.com> Add SoundTrigger native service interface

Add JAVA framework interface for native sound trigger service.
The interface allows for:
- enumeration of sound trigger hardware modules and their properties
- load/unload sound models
- start, stop and receive recognition events on sound models.

Change-Id: I51542f38f5359ffbbf79d2cbd7c9ea1ee10c9c18
oundTrigger.java
oundTriggerModule.java