Loading packages/SystemUI/src/com/android/systemui/qs/tiles/CameraToggleTile.java +4 −2 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.qs.QSHost; import com.android.systemui.qs.logging.QSLogger; import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController; import com.android.systemui.statusbar.policy.KeyguardStateController; import javax.inject.Inject; Loading @@ -49,9 +50,10 @@ public class CameraToggleTile extends SensorPrivacyToggleTile { StatusBarStateController statusBarStateController, ActivityStarter activityStarter, QSLogger qsLogger, IndividualSensorPrivacyController sensorPrivacyController) { IndividualSensorPrivacyController sensorPrivacyController, KeyguardStateController keyguardStateController) { super(host, backgroundLooper, mainHandler, metricsLogger, statusBarStateController, activityStarter, qsLogger, sensorPrivacyController); activityStarter, qsLogger, sensorPrivacyController, keyguardStateController); } @Override Loading packages/SystemUI/src/com/android/systemui/qs/tiles/MicrophoneToggleTile.java +4 −2 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.qs.QSHost; import com.android.systemui.qs.logging.QSLogger; import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController; import com.android.systemui.statusbar.policy.KeyguardStateController; import javax.inject.Inject; Loading @@ -49,9 +50,10 @@ public class MicrophoneToggleTile extends SensorPrivacyToggleTile { StatusBarStateController statusBarStateController, ActivityStarter activityStarter, QSLogger qsLogger, IndividualSensorPrivacyController sensorPrivacyController) { IndividualSensorPrivacyController sensorPrivacyController, KeyguardStateController keyguardStateController) { super(host, backgroundLooper, mainHandler, metricsLogger, statusBarStateController, activityStarter, qsLogger, sensorPrivacyController); activityStarter, qsLogger, sensorPrivacyController, keyguardStateController); } @Override Loading packages/SystemUI/src/com/android/systemui/qs/tiles/SensorPrivacyToggleTile.java +12 −1 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import com.android.systemui.qs.QSHost; import com.android.systemui.qs.logging.QSLogger; import com.android.systemui.qs.tileimpl.QSTileImpl; import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController; import com.android.systemui.statusbar.policy.KeyguardStateController; /** * Superclass to toggle individual sensor privacy via quick settings tiles Loading @@ -42,6 +43,7 @@ import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController; public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanState> implements IndividualSensorPrivacyController.Callback { private final KeyguardStateController mKeyguard; private IndividualSensorPrivacyController mSensorPrivacyController; /** Loading @@ -61,10 +63,12 @@ public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanS StatusBarStateController statusBarStateController, ActivityStarter activityStarter, QSLogger qsLogger, IndividualSensorPrivacyController sensorPrivacyController) { IndividualSensorPrivacyController sensorPrivacyController, KeyguardStateController keyguardStateController) { super(host, backgroundLooper, mainHandler, metricsLogger, statusBarStateController, activityStarter, qsLogger); mSensorPrivacyController = sensorPrivacyController; mKeyguard = keyguardStateController; mSensorPrivacyController.observe(getLifecycle(), this); } Loading @@ -75,6 +79,13 @@ public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanS @Override protected void handleClick() { if (mKeyguard.isMethodSecure() && mKeyguard.isShowing()) { mActivityStarter.postQSRunnableDismissingKeyguard(() -> { mSensorPrivacyController.setSensorBlocked(getSensorId(), !mSensorPrivacyController.isSensorBlocked(getSensorId())); }); return; } mSensorPrivacyController.setSensorBlocked(getSensorId(), !mSensorPrivacyController.isSensorBlocked(getSensorId())); } Loading packages/SystemUI/src/com/android/systemui/sensorprivacy/SensorUseStartedActivity.kt +38 −3 Original line number Diff line number Diff line Loading @@ -17,14 +17,19 @@ package com.android.systemui.sensorprivacy import android.app.AppOpsManager import android.app.KeyguardManager import android.app.KeyguardManager.KeyguardDismissCallback import android.content.DialogInterface import android.content.Intent.EXTRA_PACKAGE_NAME import android.content.pm.PackageManager import android.content.res.Resources import android.hardware.SensorPrivacyManager import android.hardware.SensorPrivacyManager.* import android.hardware.SensorPrivacyManager.EXTRA_SENSOR import android.hardware.SensorPrivacyManager.INDIVIDUAL_SENSOR_CAMERA import android.hardware.SensorPrivacyManager.INDIVIDUAL_SENSOR_MICROPHONE import android.os.Bundle import android.text.Html import android.util.Log import com.android.internal.app.AlertActivity import com.android.systemui.R Loading @@ -35,18 +40,29 @@ import com.android.systemui.R * <p>The dialog is started for the user the app is running for which might be a secondary users. */ class SensorUseStartedActivity : AlertActivity(), DialogInterface.OnClickListener { companion object { private val LOG_TAG = SensorUseStartedActivity::class.java.simpleName } private var sensor = -1 private lateinit var sensorUsePackageName: String private lateinit var sensorPrivacyManager: SensorPrivacyManager private lateinit var appOpsManager: AppOpsManager private lateinit var keyguardManager: KeyguardManager override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setShowWhenLocked(true) setFinishOnTouchOutside(false) setResult(RESULT_CANCELED) sensorPrivacyManager = getSystemService(SensorPrivacyManager::class.java)!! appOpsManager = getSystemService(AppOpsManager::class.java)!! keyguardManager = getSystemService(KeyguardManager::class.java)!! sensorUsePackageName = intent.getStringExtra(EXTRA_PACKAGE_NAME) ?: return sensor = intent.getIntExtra(EXTRA_SENSOR, -1).also { Loading Loading @@ -107,10 +123,25 @@ class SensorUseStartedActivity : AlertActivity(), DialogInterface.OnClickListene override fun onClick(dialog: DialogInterface?, which: Int) { when (which) { BUTTON_POSITIVE -> { if (keyguardManager.isDeviceLocked) { keyguardManager .requestDismissKeyguard(this, object : KeyguardDismissCallback() { override fun onDismissError() { Log.e(LOG_TAG, "Cannot dismiss keyguard") } override fun onDismissSucceeded() { sensorPrivacyManager .setIndividualSensorPrivacyForProfileGroup(sensor, false) setResult(RESULT_OK) } }) } else { sensorPrivacyManager.setIndividualSensorPrivacyForProfileGroup(sensor, false) setResult(RESULT_OK) } } } dismiss() } Loading @@ -120,4 +151,8 @@ class SensorUseStartedActivity : AlertActivity(), DialogInterface.OnClickListene sensorPrivacyManager.suppressIndividualSensorPrivacyReminders(sensorUsePackageName, false) } override fun onBackPressed() { // do not allow backing out } } No newline at end of file Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/CameraToggleTile.java +4 −2 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.qs.QSHost; import com.android.systemui.qs.logging.QSLogger; import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController; import com.android.systemui.statusbar.policy.KeyguardStateController; import javax.inject.Inject; Loading @@ -49,9 +50,10 @@ public class CameraToggleTile extends SensorPrivacyToggleTile { StatusBarStateController statusBarStateController, ActivityStarter activityStarter, QSLogger qsLogger, IndividualSensorPrivacyController sensorPrivacyController) { IndividualSensorPrivacyController sensorPrivacyController, KeyguardStateController keyguardStateController) { super(host, backgroundLooper, mainHandler, metricsLogger, statusBarStateController, activityStarter, qsLogger, sensorPrivacyController); activityStarter, qsLogger, sensorPrivacyController, keyguardStateController); } @Override Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/MicrophoneToggleTile.java +4 −2 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.qs.QSHost; import com.android.systemui.qs.logging.QSLogger; import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController; import com.android.systemui.statusbar.policy.KeyguardStateController; import javax.inject.Inject; Loading @@ -49,9 +50,10 @@ public class MicrophoneToggleTile extends SensorPrivacyToggleTile { StatusBarStateController statusBarStateController, ActivityStarter activityStarter, QSLogger qsLogger, IndividualSensorPrivacyController sensorPrivacyController) { IndividualSensorPrivacyController sensorPrivacyController, KeyguardStateController keyguardStateController) { super(host, backgroundLooper, mainHandler, metricsLogger, statusBarStateController, activityStarter, qsLogger, sensorPrivacyController); activityStarter, qsLogger, sensorPrivacyController, keyguardStateController); } @Override Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/SensorPrivacyToggleTile.java +12 −1 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import com.android.systemui.qs.QSHost; import com.android.systemui.qs.logging.QSLogger; import com.android.systemui.qs.tileimpl.QSTileImpl; import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController; import com.android.systemui.statusbar.policy.KeyguardStateController; /** * Superclass to toggle individual sensor privacy via quick settings tiles Loading @@ -42,6 +43,7 @@ import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController; public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanState> implements IndividualSensorPrivacyController.Callback { private final KeyguardStateController mKeyguard; private IndividualSensorPrivacyController mSensorPrivacyController; /** Loading @@ -61,10 +63,12 @@ public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanS StatusBarStateController statusBarStateController, ActivityStarter activityStarter, QSLogger qsLogger, IndividualSensorPrivacyController sensorPrivacyController) { IndividualSensorPrivacyController sensorPrivacyController, KeyguardStateController keyguardStateController) { super(host, backgroundLooper, mainHandler, metricsLogger, statusBarStateController, activityStarter, qsLogger); mSensorPrivacyController = sensorPrivacyController; mKeyguard = keyguardStateController; mSensorPrivacyController.observe(getLifecycle(), this); } Loading @@ -75,6 +79,13 @@ public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanS @Override protected void handleClick() { if (mKeyguard.isMethodSecure() && mKeyguard.isShowing()) { mActivityStarter.postQSRunnableDismissingKeyguard(() -> { mSensorPrivacyController.setSensorBlocked(getSensorId(), !mSensorPrivacyController.isSensorBlocked(getSensorId())); }); return; } mSensorPrivacyController.setSensorBlocked(getSensorId(), !mSensorPrivacyController.isSensorBlocked(getSensorId())); } Loading
packages/SystemUI/src/com/android/systemui/sensorprivacy/SensorUseStartedActivity.kt +38 −3 Original line number Diff line number Diff line Loading @@ -17,14 +17,19 @@ package com.android.systemui.sensorprivacy import android.app.AppOpsManager import android.app.KeyguardManager import android.app.KeyguardManager.KeyguardDismissCallback import android.content.DialogInterface import android.content.Intent.EXTRA_PACKAGE_NAME import android.content.pm.PackageManager import android.content.res.Resources import android.hardware.SensorPrivacyManager import android.hardware.SensorPrivacyManager.* import android.hardware.SensorPrivacyManager.EXTRA_SENSOR import android.hardware.SensorPrivacyManager.INDIVIDUAL_SENSOR_CAMERA import android.hardware.SensorPrivacyManager.INDIVIDUAL_SENSOR_MICROPHONE import android.os.Bundle import android.text.Html import android.util.Log import com.android.internal.app.AlertActivity import com.android.systemui.R Loading @@ -35,18 +40,29 @@ import com.android.systemui.R * <p>The dialog is started for the user the app is running for which might be a secondary users. */ class SensorUseStartedActivity : AlertActivity(), DialogInterface.OnClickListener { companion object { private val LOG_TAG = SensorUseStartedActivity::class.java.simpleName } private var sensor = -1 private lateinit var sensorUsePackageName: String private lateinit var sensorPrivacyManager: SensorPrivacyManager private lateinit var appOpsManager: AppOpsManager private lateinit var keyguardManager: KeyguardManager override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setShowWhenLocked(true) setFinishOnTouchOutside(false) setResult(RESULT_CANCELED) sensorPrivacyManager = getSystemService(SensorPrivacyManager::class.java)!! appOpsManager = getSystemService(AppOpsManager::class.java)!! keyguardManager = getSystemService(KeyguardManager::class.java)!! sensorUsePackageName = intent.getStringExtra(EXTRA_PACKAGE_NAME) ?: return sensor = intent.getIntExtra(EXTRA_SENSOR, -1).also { Loading Loading @@ -107,10 +123,25 @@ class SensorUseStartedActivity : AlertActivity(), DialogInterface.OnClickListene override fun onClick(dialog: DialogInterface?, which: Int) { when (which) { BUTTON_POSITIVE -> { if (keyguardManager.isDeviceLocked) { keyguardManager .requestDismissKeyguard(this, object : KeyguardDismissCallback() { override fun onDismissError() { Log.e(LOG_TAG, "Cannot dismiss keyguard") } override fun onDismissSucceeded() { sensorPrivacyManager .setIndividualSensorPrivacyForProfileGroup(sensor, false) setResult(RESULT_OK) } }) } else { sensorPrivacyManager.setIndividualSensorPrivacyForProfileGroup(sensor, false) setResult(RESULT_OK) } } } dismiss() } Loading @@ -120,4 +151,8 @@ class SensorUseStartedActivity : AlertActivity(), DialogInterface.OnClickListene sensorPrivacyManager.suppressIndividualSensorPrivacyReminders(sensorUsePackageName, false) } override fun onBackPressed() { // do not allow backing out } } No newline at end of file