summaryrefslogtreecommitdiffstats
path: root/services/voiceinteraction
Commit message (Collapse)AuthorAgeFilesLines
* Rework voice interaction session lifecycle.Dianne Hackborn2015-02-253-139/+342
| | | | | | | | | | | | | | | | | | | | We now have a formal concept of the session being shown and hidden, with it being able to continue running while hidden as long as there is enough RAM. This changes the flow that a VoiceInteractionSession will see: onCreate() is when it is first created, onCreateContentView() is when its UI first needs to be built, onShow() is called each time it needs to be shown and has the arguments given when the show request was made (which has been renamed from startSession to showSession), and then onHide() will be called when the UI is no longer shown. The methods show() and hide() now allow a VoiceInteractionSession subclass to control when it is shown and hidden, working with the shown state being maintained by the system. Change-Id: Ic4a430ec7e8bf76a5441fd0425e2932806170fcc
* Update voice interaction layer for new UI design.Dianne Hackborn2015-02-132-12/+60
| | | | | | | | | | | | | | | | | | Can switch from a pure overlay at the top of the screen, to interactive mode with the voice UI drawing at the bottom and pushing its target activity up like an IME. Add mechanism to get assist data to the voice interaction UI. Add some basic visualization of the assist data, outlining where on the screen we have text. Add a test ACTION_ASSIST handler, which can propagate the assist data it gets to the voice interaction session so you can see what kind of data we are getting from different apps. Change-Id: I18312fe1601d7926d1fb96a817638d60f6263771
* Bring back voice interaction APIs.Dianne Hackborn2015-01-211-4/+0
| | | | Change-Id: I6039d7c0b188ac342441c56f7d19994b9a80ba17
* Issue #17551667: Voice interaction service should be disabled...Dianne Hackborn2014-11-141-3/+16
| | | | | | | | | | ...by default on Svelte devices Also make sure the voice_recognizers feature is not enabled on low-ram devices, with a new facility for platform feature declarations to say they should be ignored on low ram devices. Change-Id: I833c04b12e0e566dd682ed20adb0985c677a696f
* Don't unload the sound model on stopRecognitionSandeep Siddhartha2014-11-121-29/+18
| | | | | | | | This helps us in majority of the scenarios where the sound model doesn't change across start/stop calls. Bug: 17954633 Change-Id: Ibff817bb69bc69d2bb3a2603460fed596688b892
* Fix issues with multiple languages and multi-usersSandeep Siddhartha2014-09-153-47/+86
| | | | | | | | | | | | | | | | | | | | | For multi-user the issue was looking into the user ID of the current process instead of the active user. The current process was the system process and the call to UserManager was returning a user handle that wasn't of any use while trying to map sound models to a user. For language, the issue was that we were incorrectly just looking up the model based on the keyphrase id, however we should have also taken the enrolled model's locale into account. Explicitly document that for model management the string representation of locales is a BCP47 language tag. Remove debug logging. Bug: 16798166 Bug: 17462570 Bug: 17463511 Change-Id: Ieffb3e218de63f6e7f40af9705dced481a35b0ad
* SoundTriggerHelper: handle media server deathEric Laurent2014-09-091-3/+13
| | | | | | | Retry to attach sound trigger module when startRecognition() is called. Bug: 17373746. Change-Id: I5b2f806b6cab47741d345be1cde73a84f5a62590
* Hide the interaction part of VoiceInteractionService.Dianne Hackborn2014-09-021-0/+4
| | | | | | | | Also the ability to start voice activities is turned off, though for testing purposes it can be turned back on with a system property. Change-Id: I867704d32c53beeb851ceea9b45c28bf5c01ef61
* Add sample profiling option to am.Jeff Hao2014-08-261-1/+1
| | | | | | | Also bundles all profiling options into a class. Bug: 17040932 Change-Id: I85d675ee1494bdc7308caffdf94145d27c996e9d
* Turn off hotword when in power save modeSandeep Siddhartha2014-08-222-16/+63
| | | | | Bug: 15705459 Change-Id: Ifa8b80223affffdc00da467c2066bc6370c85af1
* Make sure we initialize to enable the default voice interaction service.Dianne Hackborn2014-08-151-32/+64
| | | | | | | | | We weren't taking care of the case of an upgrade to L. The main change here is that the voice interaction service setting now has an empty string when the user has explicitly said they don't want one, so when it is null we will initialize it to its default. Change-Id: Icdd30b4f09498f8928cea759a64628bd43bc5d0e
* Fix delete clause for sound model DBSandeep Siddhartha2014-08-131-2/+2
| | | | | | | Since UUIDs contain '-'s they need to be wrapped within quotes Bug: 16985919 Change-Id: I624a512ca7fc2494a7737b5465c94a9e161dec88
* Add debugging info to VIS via dump()Sandeep Siddhartha2014-08-111-1/+1
| | | | Change-Id: I9e8f4536de309256db835b30d94765bfc27d4e80
* Fix issues 16739817 and 16709247 in voice interaction service.Dianne Hackborn2014-08-091-13/+215
| | | | | | | | | | | | Issue #16739817 VIS doesn't start for non-primary user(s) Issue #16709247 GSA is not the default voice interaction agent These are both fixed by getting rid of the existing code for applying the default voice recognizer, moving it in to the voice interaction manager service, and extending it to also set up the default voice interaction service. Change-Id: If8d5936c28aebfa7eff77c8d99241c3a2ffdb0a4
* Dump the state of SoundTriggerHelper for bugreportsSandeep Siddhartha2014-08-072-0/+21
| | | | Change-Id: I01a17d969fbd22c6bcbb161e3542ca14a3f8c7c8
* Handle microphone contention/Phone calls while recognition is activeSandeep Siddhartha2014-08-072-208/+354
| | | | | | | | | | | | | | | | 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
* Handle same keyphrase for multiple usersSandeep Siddhartha2014-08-072-56/+69
| | | | | | | Also notify the VIS of a change after finishing the change Bug: 16816191 Change-Id: I6c96595819cd07182c3825c522d9bae559bb6814
* SoundTrigger API update.Eric Laurent2014-08-042-1/+20
| | | | | | | | | | | | 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
* Stop recognition when shutting down VISSandeep Siddhartha2014-08-012-3/+25
| | | | | Bug: 16629417 Change-Id: I9c98d7e6d487d3eaff604df401c320f8554589f9
* Add a flag for multiple triggers with same recognition sessionSandeep Siddhartha2014-08-011-2/+16
| | | | | | | | | | | | | | 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
* Don't unload sound model in start recognition unless the model changesSandeep Siddhartha2014-07-311-20/+39
| | | | | | This helps in start -> detected -> start again scenarios Change-Id: I6d8d55e469e0623b9eb07595df8897ad4942aa11
* Make startRecognition asyncSandeep Siddhartha2014-07-301-3/+3
| | | | | | | | | | | | | | - 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
* Notify VIS of shutdown before switching implementationsSandeep Siddhartha2014-07-291-7/+8
| | | | | | | This lets the implementation cleanup before it's destroyed. Bug: 16629417 Change-Id: Ia717d461677e9ca8fa66f02c030aacad1597692d
* Use keyphrase id from the recognition eventSandeep Siddhartha2014-07-291-2/+1
| | | | | Bug: 16516658 Change-Id: I8be773eec39e1c4c57d106e03a443cbfc5c6dc5d
* Read the keyphrase ID from the recognition eventSandeep Siddhartha2014-07-291-22/+53
| | | | | Bug: 16516658 Change-Id: Ibeee81c9543aa1091bb075066cfc2269107f13c0
* Use blob (shared memory) for large data in sound model/recognition event/configSandeep Siddhartha2014-07-281-9/+2
| | | | | | | Also add a missing null check in writeBlob Bug: 16516353 Change-Id: Ie702f8daae541cab7c2cee6e13d49e7fc84c84e1
* Fix various bugs with model managementSandeep Siddhartha2014-07-253-187/+179
| | | | | | | | | | | | | | | | | | | - Tie the sound model and keyphrase for simplicity We won't support multiple keyphrases in a single model out of the box. The db schema will need to be changed by the OEM wishing to add multiple hotwords. This is because we currently have no way to test the flow and make sure that things work well with multiple keyphrases and also the framework only reads the metadata for one keyphrase. - Make the delete/update operations atomic - Make the flow of data from Enrollment -> VIMS; the large sound model doesn't cross the process boundary any other time. This is achieved by passing they key around, instead of the model themselves. - Add a specific delete operation in DatabaseHelper rather than relying on emptying the keyphrases to delete. Bug: 16555803 Bug: 16516353 Change-Id: I1e0cce137517502a669e431ca7e9f9f755598328
* Make hotword availability a callbackSandeep Siddhartha2014-07-222-89/+98
| | | | | | | | | | | | This helps us make the list sound models operation an async one, it also helps us with the case where a detector is invalidated, so the client doesn't have to keep checking the state. Synchronize DatabaseHelper methods on its instance so that other VoiceInteractionManagerService calls aren't blocked on db writes/reads. It's still possible for the list operation to be blocked on update and vice-versa Change-Id: Ib8ec4ac5056b62d443038560ce31d0641b4627b0
* AlwaysOnHotwordDetector needs to reflect enrollment changesSandeep Siddhartha2014-07-222-10/+31
| | | | | | | | | Add a callback for when any sound model change happens. This helps the VIS to re-check the availability and either enroll the user, or start/stop recognition. Also shut down any active recognition when VIS dies, or a different hotword detector instance is obtained from VIS. Change-Id: I03f94e78c6ee307afe822a84aebc7e74c64de7b4
* Fix synchronization issues in AlwaysOnHotwordDetectorSandeep Siddhartha2014-07-202-12/+67
| | | | | | | | | | | | | | | | | | | - 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
* Move sound trigger calls to VoiceInteractionManagerServiceSandeep Siddhartha2014-07-203-17/+356
| | | | | | - This ensures that any data being loaded on the DSP comes from the framework Change-Id: Ie15f0994850ba8f298ca07c49fe0b89e066d9e2b
* Test hotword flowSandeep Siddhartha2014-07-171-7/+11
| | | | | | - Also fix a few StrictMode violations in DatabaseHelper Change-Id: I93f27407dae34cc0dca5e9f891d4ca718d6010a5
* Support model deletionSandeep Siddhartha2014-07-172-12/+43
| | | | | | | | | | | | the updateKeyphrase call is also used to clear out a sound model currently, this happens when the sound model passed in has no keyphrases. We can revisit if we need another deleteSoundModel method - Also fix an issue with the way we were writing keyphrase to the DB and when updating keyphrase, we actually addOrUpdate Change-Id: Ib7250c2fdafef6bc40387912a79366c334d73292
* Implement issue #16330060: Inform ActivityManager about WebView...Dianne Hackborn2014-07-161-0/+4
| | | | | | | | | | | | | | | | | | | | ...state changes. Add a new API to tell the activity manager about a new dependency one process has on another package. Start using it already for when apps is Context.createPackageContext() to load code from another app. Also do some work on getting the monitoring of proc/uid states in shape so it can be used by unundled code, along with an AppImportanceMonitor class for doing so. Some small fixes and additions to VoiceInteractionService. Improve handling of unaccounted/overcounted battery use so that they aren't shown to the user unless they are significant. Change-Id: I22dd79a73f4e70103d3f8964494aebc8a31f971c
* Plumb the database code to read/update sound modelsSandeep Siddhartha2014-07-162-14/+21
| | | | Change-Id: I135131b042481462f905bdb69ea8544e2561d177
* Hook in startRecogniton callSandeep Siddhartha2014-07-151-8/+10
| | | | | | Add required info to the sound model database: users & recognition modes Change-Id: I6e12cbc6342a2767c0e3d8328c0a3be899ac9952
* Always on hotword changesSandeep2014-07-102-1/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* SoundTrigger: update APIEric Laurent2014-07-081-4/+4
| | | | | | | | | | | | | 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
* Initial code for listing/storing sound modelsSandeep Siddhartha2014-07-081-0/+181
| | | | | | | | | | | | | | - 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
* Fix cleanup of voice sessions.Dianne Hackborn2014-07-071-0/+6
| | | | | | They would leave active voice activities lingering around. Change-Id: I5b6716ab303636ebdf2f13c3172552a73dae3bb1
* Add system layer for voice interaction services.Dianne Hackborn2014-05-281-1/+1
| | | | | | | | | | | | | | | | | New window layer that voice interaction service windows go in to. Includes a new voice-specific content rectangle that voice activities are placed in to. Add specific animations for this layer, sliding down from the top (though this can be customized by the voice interaction service). Also add the concept of activities running for voice interaction services for purposes of adjusting the animation used for them, again sliding from the top, but not (yet?) customizable by the voice interaction service. Change-Id: Ic9e0e8c843c2e2972d6abb4087dce0019326155d
* Further work on voice interaction services.Dianne Hackborn2014-05-052-38/+151
| | | | | | | | | | | | | This makes VoiceInteractionSession a more first-class concept. Now the flow is that a VoiceInteractionService calls startSession() when it wants to begin a session. This will result in a new VoiceInteractionSession via the VoiceInteractionSessionService containing it, and the session at that point an decide what to do. It can now show UI, and it is what has access to the startVoiceActivity API. Change-Id: Ie2b85b3020ef1206d3f44b335b128d064e8f9935
* Rework some of the voice interaction APIs.Dianne Hackborn2014-04-282-34/+185
| | | | | | | | | | | | | | On the app side, requests are now composed by subclassing from various types of Request objects. On the service side, starting a voice interaction session involves starting another service that will then manage the session. This leads the service design much more to what we want, where the long-running main service is very tiny and all the heavy-weight transient session work is elsewhere in another process. Change-Id: I46c074c6fe27b6c1cf2583c6d216aed1de2f1143
* Initial implementation of new voice interaction API.Dianne Hackborn2014-04-243-0/+346
This gives a basic working implementation of a persist running service that can start a voice interaction when it wants, with the target activity(s) able to go through the protocol to interact with it. It may even work when the screen is off by putting the activity manager in the correct state to act like the screen is on. Includes a sample app that is a voice interation service and also has an activity it can launch. Now that I have this initial implementation, I think I want to rework some aspects of the API. Change-Id: I7646d0af8fb4ac768c63a18fe3de43f8091f60e9