Age | Commit message (Collapse) | Author |
|
Bug: 220074017
Change-Id: Idfdd94e902f656ac65a2a75dfdd199f6f85ba472
|
|
Change-Id: Ic2889f5eb531008340529eadc36ec8efc62b1984
|
|
Change-Id: Id27ea30be4f20be6f5d7d6336c8f53d2644c8e25
|
|
Bug: 198415915
Test: atest CtsVoiceInteractionTestCases
Change-Id: I8fde3c1ced5a99e98c037a32d97f41835e572a9b
|
|
There will be a race condition (Ex:Create AlwaysOnHotwordDetector
twice quickly) where it will miss unbinding HotwordDetectionService
and clearing HotwordDetectionServiceProvider when using the
isBound() check for HotwordDetectionService.
Because we use "ServiceConnector.Impl" to create the connection,
it is unnecessary to use isBound() function to check if the
HotwordDetectionService should be unbound.
Bug: 195457729
Test: atest CtsVoiceInteractionTestCases
Test: atest CtsVoiceInteractionTestCases --instant
Test: manual - DSP and non-DSP
Change-Id: Ib74e0dc9364af3713007b115f7d170bf6e833810
|
|
The requirement to use a sandboxed HotwordDetectionService to avoid
incurring the mic indicator will be added back in a future release.
With this change, SoundTrigger events and hotword-source audio do not
incur the mid indicator for any process.
This change adds back the permissions logic from
I3275647d0f9a6e3ce8b97a556f56723b49170c8e, adjusted to account for the
changes from I4fc3b3e8defed59a900fd156273e9e695a322b0c (preflight
permission checks were made to accept soft denials, so simply reusing
enforcePermissionForPreflight does not work anymore - it would pop up a
dialog if the mic sensor is muted).
We preserve the behavior of showing the indicator when the detected
event is delivered from the Trusted Hotword process (no false-positives
here, so we can accurately show it).
Fix: 197034852
Test: manual - dsp and non-dsp; true and false positives; mute mic
sensor - events aren't delivered and no dialog is shown, hotword still
works after unmuting; mute mic and restart, unmute after starting reco;
Trusted and non-Trusted hotwording
Test: atest CameraMicIndicatorsPermissionTest
Test: atest HotwordDetectionServiceBasicTest
Test: atest android.cts.statsdatom.appops.AppOpsTests#testAppOps
Change-Id: I68f2f37b5ce835e7fd8649b382eaee9fc299ec79
(cherry picked from commit 0e7131f3090fc0b7b8c040d09de4d5d4d62c0d19)
|
|
The requirement to use a sandboxed HotwordDetectionService to avoid
incurring the mic indicator will be added back in a future release.
With this change, SoundTrigger events and hotword-source audio do not
incur the mid indicator for any process.
This change adds back the permissions logic from
I3275647d0f9a6e3ce8b97a556f56723b49170c8e, adjusted to account for the
changes from I4fc3b3e8defed59a900fd156273e9e695a322b0c (preflight
permission checks were made to accept soft denials, so simply reusing
enforcePermissionForPreflight does not work anymore - it would pop up a
dialog if the mic sensor is muted).
We preserve the behavior of showing the indicator when the detected
event is delivered from the Trusted Hotword process (no false-positives
here, so we can accurately show it).
Fix: 197034852
Test: manual - dsp and non-dsp; true and false positives; mute mic
sensor - events aren't delivered and no dialog is shown, hotword still
works after unmuting; mute mic and restart, unmute after starting reco;
Trusted and non-Trusted hotwording
Test: atest CameraMicIndicatorsPermissionTest
Test: atest HotwordDetectionServiceBasicTest
Test: atest android.cts.statsdatom.appops.AppOpsTests#testAppOps
Change-Id: I68f2f37b5ce835e7fd8649b382eaee9fc299ec79
|
|
Change-Id: I5aa7cf27a3a3cc16830c9947a826e30a0da481c4
|
|
into sc-dev
|
|
Change-Id: I09253f8614e9ee85a59460f3ef25f17dd98cac80
|
|
A prior change to the permissions flow for Trusted Hotword
(I80dabaf6ae0e781028dde16ead3321fbff319542) made the system enforce
the required permissions on the APIs the conventional way - by throwing
a SecurityException. But the existing behavior was to silence these
exceptions and instead return error results. This change brings back
the old behavior which exists in the SoundTrigger layer.
Also removes permissions checks for a couple of APIs to again be
consistent with the old behavior (and the current behavior in the
SoundTrigger layer).
Fix: 193116894
Test: manual - remove permission and reboot / remove permission after
boot, stop/start reco
Test: atest HotwordDetectionServiceBasicTest
Change-Id: I56391260fd4375a04233eb3261bacec8696bda99
|
|
This change follows the pattern of how the IME UID is set.
The UID is stored in AudioService and re-sent there if the audio server
dies.
Fix: 194368677
Test: manual - hotword works when another app is using the mic and in
Auto projection mode; also after restarting the process or killing
audio server
Test: atest HotwordDetectionServiceBasicTest
Change-Id: I325cb33d17387e62302967b261b6fe61086d8893
|
|
If the voice interaction doesn't set RecognitionService, it may cause
NPE when it tries to get recognizer name. We don't need recognizer
name since Android 12, we delete it directly. To avoid the app does
not set RecognitionService then updating the app to earlier platform
that may cause boot loop. We add a warning log and set empty service
for voiceinteraction to let app aware the problem. Also logging and
unset the voiceinteraction service if the app try to update the app
without recognition service.
Bug: 170742278
Test: Use sample VoiceInteractionService without a RecognitionService
The system doesn't crash when choosing the sample app as the default
assistant app from Settings. And make sure the VoiceInteractionService
is unset.
Test: Install sample VoiceInteractionService with a RecognitionService
and then update it without a RecognitionService. Make sure the voice
interaction service is unset.
Change-Id: I79ab3d6449984ead0be28a94adaad57ab24d1fb9
|
|
In preflight we should accept soft denials as they can become grants at
the time of delivery.
Realigns permissions code in VoiceInteraction with that in SoundTrigger,
which was fixed in I4fc3b3e8defed59a900fd156273e9e695a322b0c.
Fix: 194137739
Test: manual - no errors for starting recognition when mic access is
blocked. data delivery is still blocked
Test: atest HotwordDetectionServiceBasicTest
Change-Id: I49d504a30b4d04f157990580838757a3f17861cc
|
|
Change-Id: I220cdfc5cb9db40162fd33f400a54591018d54cf
|
|
Currently we provide the Shell command to enable/disable one debug mode
that we will log the HotwordDetectedResult and HotwordRejectedResult if
the debug mode is wnable. But we will reset the debug mode after one
hour from last enable.
Bug: 194339253
Test: Use the Shell command and check the log
Change-Id: I212ad58c7550b297babed50249a08db6f0e24b3a
|
|
Change-Id: I65e2b7db097927b87c9c4023015c754033c62086
|
|
Set the Debug flag to false, but we also reserve some logs
for clarifying the issue.
Bug: 177502877
Test: atest CtsVoiceInteractionTestCases
Test: atest CtsVoiceInteractionTestCases --instant
Change-Id: Idf5dd82d8db27bb682b473eb4584e8b230073d08
|
|
Bug: 194090728
Test: atest CtsVoiceInteractionTestCases
Test: atest CtsVoiceInteractionTestCases --instant
Change-Id: I5b9f8320ddbcfc947f9a0b810b6f71c8a4fc9ff4
|
|
I use the command "adb shell kill <pid>" and "adb shell am crash
<package>" to test, it works well.
Bug: 193421614
Test: manual test
Test: atest CtsVoiceInteractionTestCases
Test: atest CtsVoiceInteractionTestCases --instant
Change-Id: I53206f07801b0fac588cb23fa2b91cac561547ed
|
|
Change-Id: I4610885d5d770d858895057cdd9fea387a5e33dd
|
|
This is partially a followup of
I80dabaf6ae0e781028dde16ead3321fbff319542 which removed these operations
from the SoundTrigger layer when the HotwordDetectionService is used.
Also fixes a race condition where the DSP event can go directly to the
Interactor if the DetectionService isn't connected.
Bug: 186164881
Test: atest HotwordDetectionServiceBasicTest
Test: manual - DSP and non-DSP
Change-Id: Iee3b00c6c08597ad1993fae677e9f8ae2f60744c
|
|
Change-Id: I96a39cdca22771b76e89caebd53ed52416005092
|
|
|
|
We do this instead of simply sending over the new binder to avoid race
conditions with audio reading in the service.
Fix: 190011174
Test: manual - kill audio server, also do this twice in quick
succession; dsp and non-dsp
Test: atest CtsVoiceInteractionTestCases
Change-Id: Iabee9549512cc09d2305de5b0e965b9315134fb0
|
|
|
|
Grants mic access to the process as soon as it comes up, instead of
waiting for the initialization status callback.
Bug: 190011174
Test: manual - dsp and non-dsp; restarting while invoking the hotword
Test: atest CtsVoiceInteractionTestCases
Change-Id: I54e0b42868f663ae1c9edd9bcf4aaee2a13b827a
|
|
process" into sc-dev
|
|
Bug: 192331590
Test: atest CtsVoiceInteractionTestCases
Test: atest CtsVoiceInteractionTestCases --instant
Change-Id: I08329643d94655f762787a7a49567e19bbbfbe9c
|
|
sc-dev
|
|
This allows properly checking/noting against the voice interactor or
HotwordDetectionService as needed. Otherwise,
SoundTriggerMiddlewarePermission notes ops for data delivery to the
interactor, even if the data only reaches the HotwordDetectionService.
This is accomplished with a decorator for permission checks, that wraps
the real implementation. A proxy that serves as the remote Binder object
is also needed, to allow this decoration pattern.
The list of sessions stored in VIMS is removed for simplicity. It
currently serves no purpose (used only in dump() but doesn't implement
it so it's a no-op there).
DataDelivery checks will be addressed in a followup change.
Bug: 186164881
Test: manual - permissions are checked appropriately
Test: atest CtsVoiceInteractionTestCases
Change-Id: I80dabaf6ae0e781028dde16ead3321fbff319542
|
|
Change-Id: I72d03812a8377fc014aebad8db4e68eeded2d531
|
|
Result of permission check was erroneously ignored instead of
throwing.
Fixes: 191597651
Test: Manual verification of basic soundtrigger flows (assistant, now
playing) against regression.
Requested reporter to repro bug.
Change-Id: I73449a156308880dae9ca5d432df3bc5ee747e58
|
|
detectors." into sc-dev
|
|
Bug: 188892570
Test: 1) adb shell cmd voiceinteraction restart-detection
2) Tried locally with restarting every 30 seconds, verified everything
works
3) adb shell ps | grep <test_package_name> - shows:
u0_a221 3328 1026 14501612 69208 0 0 R com.google.th
u0_i9002 9049 1026 14448104 53860 0 0 S com.google.th:com.google.th.SampleHotwordDetectionService:hotword_detector_3
Change-Id: I9f08943212c20b83da35c18df56460eaedbbf8f0
|
|
Change-Id: I9acdc955f698dbebb8fad19cfd5cb71fcdd27b45
|
|
Change-Id: I5200ee05285ae422d5e9c1c00f45709a5d6188be
|
|
VoiceInteractionManagerService.setDisabled()" into sc-dev
|
|
This method is called by CarService when the system goes into suspend
state and the initial implementation completely disabled the service
(and unbound system server from it), which had 2 drawbacks:
- It adds extra work when the system resumes as it has to rebind.
- It can cause memory leaks if the service implementation doesn't
handle it well.
This CL changes how the API is implemented: rather than disabling the
service, it just ignores new sessions.
To test it:
1. Disable
$ adb shell cmd voiceinteraction disable true
2. Start a session
$ adb shell cmd voiceinteraction show
3. Check logcat
I VoiceInteractionManager: showSessionForActiveService(): ignored while temporarily disabled
Bug: 190051449
Test: manual verification (see above)
Change-Id: Idbc4881b92d9254fb07ea5af1370ea600fc10b80
|
|
|
|
CAPTURE_AUDIO_HOTWORD." into sc-dev
|
|
|
|
Fix: 190572818
Test: atest CtsVoiceInteractionTestCases
Change-Id: I8a109f6540cf8c342b827464ccc2beabd99d1b9c
|
|
HotwordDetectionService is an isolated service which ordinarily cannot
hold permissions. An isolated service has its own uid separate from the
owning package.
To allow it to access mic audio, we dynamically override the permissions
check based on the currently bound HotwordDetectionService.
Bug: 190011174
Test: manual - sample app can read audio (with a few other wip changes)
Test: atest CtsVoiceInteractionTestCases
Change-Id: I5abc809546184ef13cb9eb009f916afae6bdf1af
|
|
Bug: 189887779
Test: atest CtsVoiceInteractionTestCases
Test: atest CtsVoiceInteractionTestCases --instant
Change-Id: I98659f4c4553b6c9da31829016419871756d34c9
|
|
HotwordDetectionService is an isolated service which ordinarily cannot
access audioflinger due to selinux restrictions on isolated processes.
To bypass those restrictions, the audioflinger binder is passed from
the system server to the HotwordDetectionService. This follows the
existing pattern of providing access to the ContentCapture service.
In T we *may* instead solve this at the selinux layer. For now, this
simpler approach is used.
Bug: 190011174
Test: manual - sample app can read audio (with a few other wip changes)
Test: atest CtsVoiceInteractionTestCases
Change-Id: I5493a5c3addf68f2ae80d64b6971a8576484eb8e
|
|
For DSP-based detection, stopRecognition() disables detection at the
sound trigger layer. For software detection, the HotwordDetectionService
must be notified so it can stop detection.
Bug: 189236104
CTS-Coverage-Bug: 183425641
Test: atest CtsVoiceInteractionTestCases
Change-Id: I220d2255e5e500c22723f6e2fbc34860a529f216
|
|
HotwordDetectionService" into sc-dev
|
|
HotwordDetectionService
Bug: 187914415
Test: atest CtsVoiceInteractionTestCases
Test: atest CtsVoiceInteractionTestCases --instant
Change-Id: I4ccd8fd5b153f28fa4b1463f7412bb8067cc4ffd
|
|
Change-Id: Ic23aece12c3bbd2b4dcf3205fdbcdd1601deabec
|