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

This commit is contained in:
TreeHugger Robot
2021-05-18 22:42:28 +00:00
committed by Android (Google) Code Review
3 changed files with 33 additions and 0 deletions

View File

@@ -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);
}

View File

@@ -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"

View File

@@ -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