Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 49f6ccf6 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Show sensor usage dialog for assistant" into sc-dev

parents c5b3080f 11b564fe
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -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
+11 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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();
    }

@@ -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"
+17 −0
Original line number Diff line number Diff line
@@ -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