From 922e104be45bda7655cbb51fd73d7261b90b013c Mon Sep 17 00:00:00 2001 From: Nate Myren Date: Fri, 10 Sep 2021 13:36:22 -0700 Subject: Do not fail Recognition on MODE_IGNORED for preflight Recognition will fail upon attempting to open the microphone, if it is accessed. Bug: 197465285 Test: manual Change-Id: I83f1ae30295caf576eb7a6f0191313cb789f1d52 --- core/java/android/speech/RecognitionService.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/core/java/android/speech/RecognitionService.java b/core/java/android/speech/RecognitionService.java index 362ea8c87f7f..5e647a4531bc 100644 --- a/core/java/android/speech/RecognitionService.java +++ b/core/java/android/speech/RecognitionService.java @@ -115,7 +115,7 @@ public abstract class RecognitionService extends Service { @NonNull AttributionSource attributionSource) { try { if (mCurrentCallback == null) { - boolean preflightPermissionCheckPassed = checkPermissionForPreflight( + boolean preflightPermissionCheckPassed = checkPermissionForPreflightNotHardDenied( attributionSource); if (preflightPermissionCheckPassed) { if (DBG) { @@ -470,10 +470,11 @@ public abstract class RecognitionService extends Service { return mStartedDataDelivery; } - private boolean checkPermissionForPreflight(AttributionSource attributionSource) { - return PermissionChecker.checkPermissionForPreflight(RecognitionService.this, - Manifest.permission.RECORD_AUDIO, attributionSource) - == PermissionChecker.PERMISSION_GRANTED; + private boolean checkPermissionForPreflightNotHardDenied(AttributionSource attributionSource) { + int result = PermissionChecker.checkPermissionForPreflight(RecognitionService.this, + Manifest.permission.RECORD_AUDIO, attributionSource); + return result == PermissionChecker.PERMISSION_GRANTED + || result == PermissionChecker.PERMISSION_SOFT_DENIED; } void finishDataDelivery() { -- cgit v1.2.3-59-g8ed1b