Loading core/java/android/speech/RecognitionService.java +27 −12 Original line number Diff line number Diff line Loading @@ -115,20 +115,28 @@ public abstract class RecognitionService extends Service { @NonNull AttributionSource attributionSource) { try { if (mCurrentCallback == null) { Context attributionContext = createContext(new ContextParams.Builder() .setNextAttributionSource(attributionSource) .build()); boolean preflightPermissionCheckPassed = checkPermissionForPreflight( attributionContext.getAttributionSource()); if (preflightPermissionCheckPassed) { if (DBG) { Log.d(TAG, "created new mCurrentCallback, listener = " + listener.asBinder()); Log.d(TAG, "created new mCurrentCallback, listener = " + listener.asBinder()); } mCurrentCallback = new Callback(listener, attributionSource); boolean preflightPermissionCheckPassed = checkPermissionForPreflight(); if (preflightPermissionCheckPassed) { mCurrentCallback = new Callback(listener, attributionSource, attributionContext); RecognitionService.this.onStartListening(intent, mCurrentCallback); } if (!preflightPermissionCheckPassed || !checkPermissionAndStartDataDelivery()) { listener.onError(SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS); if (preflightPermissionCheckPassed) { // If we attempted to start listening, cancel the callback RecognitionService.this.onCancel(mCurrentCallback); dispatchClearCallback(); } Log.i(TAG, "caller doesn't have permission:" + Manifest.permission.RECORD_AUDIO); } Loading Loading @@ -285,8 +293,15 @@ public abstract class RecognitionService extends Service { private Callback(IRecognitionListener listener, @NonNull AttributionSource attributionSource) { this(listener, attributionSource, null); } private Callback(IRecognitionListener listener, @NonNull AttributionSource attributionSource, @Nullable Context attributionContext) { mListener = listener; mCallingAttributionSource = attributionSource; mAttributionContext = attributionContext; } /** Loading Loading @@ -466,10 +481,10 @@ public abstract class RecognitionService extends Service { return mStartedDataDelivery; } private boolean checkPermissionForPreflight() { private boolean checkPermissionForPreflight(AttributionSource attributionSource) { return PermissionChecker.checkPermissionForPreflight(RecognitionService.this, Manifest.permission.RECORD_AUDIO, mCurrentCallback.getAttributionContextForCaller() .getAttributionSource()) == PermissionChecker.PERMISSION_GRANTED; Manifest.permission.RECORD_AUDIO, attributionSource) == PermissionChecker.PERMISSION_GRANTED; } void finishDataDelivery() { Loading Loading
core/java/android/speech/RecognitionService.java +27 −12 Original line number Diff line number Diff line Loading @@ -115,20 +115,28 @@ public abstract class RecognitionService extends Service { @NonNull AttributionSource attributionSource) { try { if (mCurrentCallback == null) { Context attributionContext = createContext(new ContextParams.Builder() .setNextAttributionSource(attributionSource) .build()); boolean preflightPermissionCheckPassed = checkPermissionForPreflight( attributionContext.getAttributionSource()); if (preflightPermissionCheckPassed) { if (DBG) { Log.d(TAG, "created new mCurrentCallback, listener = " + listener.asBinder()); Log.d(TAG, "created new mCurrentCallback, listener = " + listener.asBinder()); } mCurrentCallback = new Callback(listener, attributionSource); boolean preflightPermissionCheckPassed = checkPermissionForPreflight(); if (preflightPermissionCheckPassed) { mCurrentCallback = new Callback(listener, attributionSource, attributionContext); RecognitionService.this.onStartListening(intent, mCurrentCallback); } if (!preflightPermissionCheckPassed || !checkPermissionAndStartDataDelivery()) { listener.onError(SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS); if (preflightPermissionCheckPassed) { // If we attempted to start listening, cancel the callback RecognitionService.this.onCancel(mCurrentCallback); dispatchClearCallback(); } Log.i(TAG, "caller doesn't have permission:" + Manifest.permission.RECORD_AUDIO); } Loading Loading @@ -285,8 +293,15 @@ public abstract class RecognitionService extends Service { private Callback(IRecognitionListener listener, @NonNull AttributionSource attributionSource) { this(listener, attributionSource, null); } private Callback(IRecognitionListener listener, @NonNull AttributionSource attributionSource, @Nullable Context attributionContext) { mListener = listener; mCallingAttributionSource = attributionSource; mAttributionContext = attributionContext; } /** Loading Loading @@ -466,10 +481,10 @@ public abstract class RecognitionService extends Service { return mStartedDataDelivery; } private boolean checkPermissionForPreflight() { private boolean checkPermissionForPreflight(AttributionSource attributionSource) { return PermissionChecker.checkPermissionForPreflight(RecognitionService.this, Manifest.permission.RECORD_AUDIO, mCurrentCallback.getAttributionContextForCaller() .getAttributionSource()) == PermissionChecker.PERMISSION_GRANTED; Manifest.permission.RECORD_AUDIO, attributionSource) == PermissionChecker.PERMISSION_GRANTED; } void finishDataDelivery() { Loading