Files
android_development/samples/VoiceInteractionService
Nicholas Ambur 8ffec3f908 add trace events for SampleHotwordDetectionService
The same trace events are logged for both the VoiceInteractionService
and the HotwordDetectionService

Bug: 232147045
Test: manual
Change-Id: I8b46f1a76c46a34c62a42762d5c56d67f44d8b31
2022-11-07 23:37:47 +00:00
..
2022-07-18 15:52:07 -07:00

setup:

  1. Set the KEYPHRASE constant in SampleVoiceInteractionService.java to something the device's default assistant supports.
  2. m -j SampleVoiceInteractor
  3. adb root; adb remount
  4. adb push development/samples/VoiceInteractionService/com.example.android.voiceinteractor.xml /system/etc/permissions/com.example.android.voiceinteractor.xml
  5. adb shell mkdir /system/priv-app/SampleVoiceInteractor
  6. adb push out/target/product/$TARGET_PRODUCT/system/priv-app/SampleVoiceInteractor/SampleVoiceInteractor.apk /system/priv-app/SampleVoiceInteractor/
  7. adb reboot
  8. Go to the sample app info/settings.
  9. Tap on Permissions and grant Mic access.
  10. Reboot.
  11. Set the "Digital assistant app" to "Sample Voice Interactor" in the Android settings
  12. Check for this in the logs to make sure it worked: com.example.android.voiceinteractor I/VIS: onAvailabilityChanged: 2
  13. If it didn't, check if the pregrant worked: adb shell dumpsys package com.example.android.voiceinteractor | grep CAPTURE_AUDIO_HOTWORD

Iterating:

  • adb install like usual
  • If syncing changes to the system image, either first copy the permissions file into out/target/product/system/etc/permissions/ or push it again after syncing. Sometimes you might need to uninstall the app (go to the sample app info/settings -> 3 dots menu -> uninstall updates).

to test:

  1. Say "1,2,Ok Poodle,3,4.."
  2. Check the logs for the app and wait till it finishes recording.
  3. Either check the logs for the sampled bytes to match, e.g. "sample=[95, 2, 97, ...]" should appear twice; or open the sample app activity and click the button to play back the recorded audio. Tap directRecord to simulate the non-DSP case (must be done after a dsp trigger since it reuses the previous data).

Debugging:

  • Set DEBUG to true in AlwaysOnHotwordDetector
  • uncomment LOG_NDEBUG lines at the top in AudioFlinger.cpp, Threads.cpp, Tracks.cpp, AudioPolicyInterfaceImpl.cpp, AudioPolicyService.cpp
  • Use this logcat filter: com.example.android.voiceinteractor|AlwaysOnHotword|SoundTrigger|RecordingActivityMonitor|soundtrigger|AudioPolicyManager|AudioFlinger|AudioPolicyIntefaceImpl|AudioPolicyService|VIS|SHotwordDetectionSrvc|Hotword-AudioUtils