Add Sensors Off QS developer tile
This CL will replace the SensorPrivacyTile with a new tile that can be enabled from the developer settings. When this new tile is enabled only the camera, mic, and sensors controlled by the SensorManager will be disabled; the location and airplane mode tiles will not be modified. The user will be notified when this tile is enabled with the sensors off icon in the status bar. Fixes: 126618519 Test: Manually verified the Sensors Off tile was available in the QS page after being enabled from the developer settings. Change-Id: I028aa1c836b00e6a8d129e46a925d2d2c2d61759
This commit is contained in:
@@ -2958,6 +2958,17 @@
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<service
|
||||
android:name=".development.qstile.DevelopmentTiles$SensorsOff"
|
||||
android:label="@string/sensors_off_quick_settings_title"
|
||||
android:icon="@drawable/tile_icon_sensors_off"
|
||||
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"
|
||||
android:enabled="false">
|
||||
<intent-filter>
|
||||
<action android:name="android.service.quicksettings.action.QS_TILE" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<activity
|
||||
android:name=".HelpTrampoline"
|
||||
android:exported="true"
|
||||
|
39
res/drawable/tile_icon_sensors_off.xml
Normal file
39
res/drawable/tile_icon_sensors_off.xml
Normal file
@@ -0,0 +1,39 @@
|
||||
<!--
|
||||
Copyright (C) 2019 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:pathData="M21.966,2 L2,22"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeColor="#000000"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeWidth="1.6521436"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeAlpha="1"/>
|
||||
<path
|
||||
android:pathData="M0.752,12L4.496,12l2.496,-6.25 2.496,12.5 2.496,-15 2.496,12.5 2.496,-7.5 1.248,3.75h4.992"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeColor="#000000"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeWidth="1.25090861"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeAlpha="1"/>
|
||||
</vector>
|
||||
|
@@ -9769,6 +9769,9 @@
|
||||
<!-- [CHAR LIMIT=25] Title of developer tile to toggle winscope trace -->
|
||||
<string name="winscope_trace_quick_settings_title">Winscope Trace</string>
|
||||
|
||||
<!-- [CHAR LIMIT=25] Title of developer tile to toggle sensors -->
|
||||
<string name="sensors_off_quick_settings_title">Sensors Off</string>
|
||||
|
||||
<!-- [CHAR LIMIT=60] Title of work profile setting page -->
|
||||
<string name="managed_profile_settings_title">Work profile settings</string>
|
||||
<!-- [CHAR LIMIT=60] The preference title for enabling cross-profile remote contact search -->
|
||||
|
@@ -16,9 +16,12 @@
|
||||
|
||||
package com.android.settings.development.qstile;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.hardware.SensorPrivacyManager;
|
||||
import android.app.KeyguardManager;
|
||||
import android.os.IBinder;
|
||||
import android.os.Parcel;
|
||||
import android.os.RemoteException;
|
||||
@@ -38,6 +41,8 @@ import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.internal.app.LocalePicker;
|
||||
import com.android.internal.statusbar.IStatusBarService;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
import com.android.settingslib.development.DevelopmentSettingsEnabler;
|
||||
import com.android.settingslib.development.SystemPropPoker;
|
||||
|
||||
@@ -273,4 +278,45 @@ public abstract class DevelopmentTiles extends TileService {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tile to toggle sensors off to control camera, mic, and sensors managed by the SensorManager.
|
||||
*/
|
||||
public static class SensorsOff extends DevelopmentTiles {
|
||||
private Context mContext;
|
||||
private SensorPrivacyManager mSensorPrivacyManager;
|
||||
private KeyguardManager mKeyguardManager;
|
||||
private MetricsFeatureProvider mMetricsFeatureProvider;
|
||||
private boolean mIsEnabled;
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
mContext = getApplicationContext();
|
||||
mSensorPrivacyManager = (SensorPrivacyManager) mContext.getSystemService(
|
||||
Context.SENSOR_PRIVACY_SERVICE);
|
||||
mIsEnabled = mSensorPrivacyManager.isSensorPrivacyEnabled();
|
||||
mMetricsFeatureProvider = FeatureFactory.getFactory(
|
||||
mContext).getMetricsFeatureProvider();
|
||||
mKeyguardManager = (KeyguardManager) mContext.getSystemService(
|
||||
Context.KEYGUARD_SERVICE);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isEnabled() {
|
||||
return mIsEnabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsEnabled(boolean isEnabled) {
|
||||
// Don't allow sensors to be reenabled from the lock screen.
|
||||
if (mIsEnabled && mKeyguardManager.isKeyguardLocked()) {
|
||||
return;
|
||||
}
|
||||
mMetricsFeatureProvider.action(getApplicationContext(), SettingsEnums.QS_SENSOR_PRIVACY,
|
||||
isEnabled);
|
||||
mIsEnabled = isEnabled;
|
||||
mSensorPrivacyManager.setSensorPrivacy(isEnabled);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user