Loading core/java/android/service/voice/VoiceInteractionManagerInternal.java +5 −0 Original line number Diff line number Diff line Loading @@ -41,4 +41,9 @@ public abstract class VoiceInteractionManagerInternal { public abstract boolean supportsLocalVoiceInteraction(); public abstract void stopLocalVoiceInteraction(IBinder callingActivity); /** * Returns whether the given package is currently in an active session */ public abstract boolean hasActiveSession(String packageName); } No newline at end of file services/core/java/com/android/server/SensorPrivacyService.java +11 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ import android.provider.Settings; import android.service.SensorPrivacyIndividualEnabledSensorProto; import android.service.SensorPrivacyServiceDumpProto; import android.service.SensorPrivacyUserProto; import android.service.voice.VoiceInteractionManagerInternal; import android.telephony.TelephonyCallback; import android.telephony.TelephonyManager; import android.telephony.emergency.EmergencyNumber; Loading Loading @@ -172,6 +173,7 @@ public final class SensorPrivacyService extends SystemService { mActivityManager = context.getSystemService(ActivityManager.class); mActivityTaskManager = context.getSystemService(ActivityTaskManager.class); mTelephonyManager = context.getSystemService(TelephonyManager.class); mSensorPrivacyServiceImpl = new SensorPrivacyServiceImpl(); } Loading Loading @@ -402,6 +404,15 @@ public final class SensorPrivacyService extends SystemService { } } VoiceInteractionManagerInternal voiceInteractionManagerInternal = LocalServices.getService(VoiceInteractionManagerInternal.class); if (sensor == MICROPHONE && voiceInteractionManagerInternal != null && voiceInteractionManagerInternal.hasActiveSession(packageName)) { enqueueSensorUseReminderDialogAsync(-1, user, packageName, sensor); return; } Log.i(TAG, packageName + "/" + uid + " started using sensor " + sensor + " but no activity or foreground service was running. The user will not be" + " informed. System components should check if sensor privacy is enabled for" Loading services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +17 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,23 @@ public class VoiceInteractionManagerService extends SystemService { VoiceInteractionManagerService.this.mServiceStub.stopLocalVoiceInteraction( callingActivity); } @Override public boolean hasActiveSession(String packageName) { VoiceInteractionManagerServiceImpl impl = VoiceInteractionManagerService.this.mServiceStub.mImpl; if (impl == null) { return false; } VoiceInteractionSessionConnection session = impl.mActiveSession; if (session == null) { return false; } return TextUtils.equals(packageName, session.mSessionComponentName.getPackageName()); } } // implementation entry point and binder service Loading Loading
core/java/android/service/voice/VoiceInteractionManagerInternal.java +5 −0 Original line number Diff line number Diff line Loading @@ -41,4 +41,9 @@ public abstract class VoiceInteractionManagerInternal { public abstract boolean supportsLocalVoiceInteraction(); public abstract void stopLocalVoiceInteraction(IBinder callingActivity); /** * Returns whether the given package is currently in an active session */ public abstract boolean hasActiveSession(String packageName); } No newline at end of file
services/core/java/com/android/server/SensorPrivacyService.java +11 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ import android.provider.Settings; import android.service.SensorPrivacyIndividualEnabledSensorProto; import android.service.SensorPrivacyServiceDumpProto; import android.service.SensorPrivacyUserProto; import android.service.voice.VoiceInteractionManagerInternal; import android.telephony.TelephonyCallback; import android.telephony.TelephonyManager; import android.telephony.emergency.EmergencyNumber; Loading Loading @@ -172,6 +173,7 @@ public final class SensorPrivacyService extends SystemService { mActivityManager = context.getSystemService(ActivityManager.class); mActivityTaskManager = context.getSystemService(ActivityTaskManager.class); mTelephonyManager = context.getSystemService(TelephonyManager.class); mSensorPrivacyServiceImpl = new SensorPrivacyServiceImpl(); } Loading Loading @@ -402,6 +404,15 @@ public final class SensorPrivacyService extends SystemService { } } VoiceInteractionManagerInternal voiceInteractionManagerInternal = LocalServices.getService(VoiceInteractionManagerInternal.class); if (sensor == MICROPHONE && voiceInteractionManagerInternal != null && voiceInteractionManagerInternal.hasActiveSession(packageName)) { enqueueSensorUseReminderDialogAsync(-1, user, packageName, sensor); return; } Log.i(TAG, packageName + "/" + uid + " started using sensor " + sensor + " but no activity or foreground service was running. The user will not be" + " informed. System components should check if sensor privacy is enabled for" Loading
services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +17 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,23 @@ public class VoiceInteractionManagerService extends SystemService { VoiceInteractionManagerService.this.mServiceStub.stopLocalVoiceInteraction( callingActivity); } @Override public boolean hasActiveSession(String packageName) { VoiceInteractionManagerServiceImpl impl = VoiceInteractionManagerService.this.mServiceStub.mImpl; if (impl == null) { return false; } VoiceInteractionSessionConnection session = impl.mActiveSession; if (session == null) { return false; } return TextUtils.equals(packageName, session.mSessionComponentName.getPackageName()); } } // implementation entry point and binder service Loading