From 0089aa80f0aec6eb0b3a50d048fde5807d2d6716 Mon Sep 17 00:00:00 2001 From: Rios Kao Date: Mon, 14 Mar 2022 14:16:45 +0000 Subject: [PATCH] correct sequence about granting permission of SoundTriggerTestApp After Android S, any SoundTriggerClient should have permission first, then register the module to framework. Adjust the grant permission sequence of SoundTriggerTestApp to avoid confusion. Bug: b/176943913 Test: Test SoundTriggerTestApp manually. Change-Id: I3d66119b5fccb27a4dfad880cb7882d0dfb64297 --- .../SoundTriggerTestActivity.java | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestActivity.java b/tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestActivity.java index 72aa38dc7e4ba..103d516e5967d 100644 --- a/tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestActivity.java +++ b/tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestActivity.java @@ -97,13 +97,8 @@ public class SoundTriggerTestActivity extends Activity implements SoundTriggerTe setVolumeControlStream(AudioManager.STREAM_MUSIC); - // Make sure that the service is started, so even if our activity goes down, we'll still - // have a request for it to run. - startService(new Intent(getBaseContext(), SoundTriggerTestService.class)); - - // Bind to SoundTriggerTestService. - Intent intent = new Intent(this, SoundTriggerTestService.class); - bindService(intent, mConnection, Context.BIND_AUTO_CREATE); + requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, + AUDIO_PERMISSIONS_REQUEST); } @Override @@ -267,12 +262,16 @@ public class SoundTriggerTestActivity extends Activity implements SoundTriggerTe public synchronized void onCaptureAudioCheckboxClicked(View v) { // See if we have the right permissions - if (!mService.hasMicrophonePermission()) { - requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, - AUDIO_PERMISSIONS_REQUEST); - return; + if (mService == null) { + Log.e(TAG, "Can't set capture audio: not bound to SoundTriggerTestService"); } else { - mService.setCaptureAudio(mSelectedModelUuid, mCaptureAudioCheckBox.isChecked()); + if (!mService.hasMicrophonePermission()) { + requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, + AUDIO_PERMISSIONS_REQUEST); + return; + } else { + mService.setCaptureAudio(mSelectedModelUuid, mCaptureAudioCheckBox.isChecked()); + } } } @@ -283,8 +282,15 @@ public class SoundTriggerTestActivity extends Activity implements SoundTriggerTe if (grantResults[0] != PackageManager.PERMISSION_GRANTED) { // Make sure that the check box is set to false. mCaptureAudioCheckBox.setChecked(false); + } else { + // After granted Record_Audio permission, start and bind the service. + // so we can run that sound trigger capability, + // even if our activity goes down, we'll still have a request for it to run. + startService(new Intent(getBaseContext(), SoundTriggerTestService.class)); + // Bind to SoundTriggerTestService. + Intent intent = new Intent(this, SoundTriggerTestService.class); + bindService(intent, mConnection, Context.BIND_AUTO_CREATE); } - mService.setCaptureAudio(mSelectedModelUuid, mCaptureAudioCheckBox.isChecked()); } }