[adbwifi] Add qstile for wireless debugging.
Bug: 153275926 Test: make RunSettingsRoboTests ROBOTEST_FILTER=WirelessDebuggingTest Change-Id: I6b381a7e29beec5c9c345b374e127caabdb674db
This commit is contained in:
@@ -16,13 +16,21 @@
|
||||
|
||||
package com.android.settings.development.qstile;
|
||||
|
||||
import static com.android.settings.development.AdbPreferenceController.ADB_SETTING_OFF;
|
||||
import static com.android.settings.development.AdbPreferenceController.ADB_SETTING_ON;
|
||||
|
||||
import android.app.KeyguardManager;
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.database.ContentObserver;
|
||||
import android.hardware.SensorPrivacyManager;
|
||||
import android.app.KeyguardManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.os.Looper;
|
||||
import android.os.Parcel;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
@@ -41,6 +49,8 @@ import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.internal.app.LocalePicker;
|
||||
import com.android.internal.statusbar.IStatusBarService;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.development.WirelessDebuggingPreferenceController;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
import com.android.settingslib.development.DevelopmentSettingsEnabler;
|
||||
@@ -349,4 +359,77 @@ public abstract class DevelopmentTiles extends TileService {
|
||||
mSensorPrivacyManager.setSensorPrivacy(isEnabled);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tile to control the "Wireless debugging" developer setting
|
||||
*/
|
||||
public static class WirelessDebugging extends DevelopmentTiles {
|
||||
private Context mContext;
|
||||
private KeyguardManager mKeyguardManager;
|
||||
private Toast mToast;
|
||||
private final Handler mHandler = new Handler(Looper.getMainLooper());
|
||||
private final ContentObserver mSettingsObserver = new ContentObserver(mHandler) {
|
||||
@Override
|
||||
public void onChange(boolean selfChange, Uri uri) {
|
||||
refresh();
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
mContext = getApplicationContext();
|
||||
mKeyguardManager = (KeyguardManager) mContext.getSystemService(
|
||||
Context.KEYGUARD_SERVICE);
|
||||
mToast = Toast.makeText(mContext, R.string.adb_wireless_no_network_msg,
|
||||
Toast.LENGTH_LONG);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartListening() {
|
||||
super.onStartListening();
|
||||
getContentResolver().registerContentObserver(
|
||||
Settings.Global.getUriFor(Settings.Global.ADB_WIFI_ENABLED), false,
|
||||
mSettingsObserver);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStopListening() {
|
||||
super.onStopListening();
|
||||
getContentResolver().unregisterContentObserver(mSettingsObserver);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isEnabled() {
|
||||
return isAdbWifiEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsEnabled(boolean isEnabled) {
|
||||
// Don't allow Wireless Debugging to be enabled from the lock screen.
|
||||
if (isEnabled && mKeyguardManager.isKeyguardLocked()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Show error toast if not connected to Wi-Fi
|
||||
if (isEnabled && !WirelessDebuggingPreferenceController.isWifiConnected(mContext)) {
|
||||
// Close quick shade
|
||||
sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
|
||||
mToast.show();
|
||||
return;
|
||||
}
|
||||
|
||||
writeAdbWifiSetting(isEnabled);
|
||||
}
|
||||
|
||||
private boolean isAdbWifiEnabled() {
|
||||
return Settings.Global.getInt(getContentResolver(), Settings.Global.ADB_WIFI_ENABLED,
|
||||
ADB_SETTING_OFF) != ADB_SETTING_OFF;
|
||||
}
|
||||
|
||||
protected void writeAdbWifiSetting(boolean enabled) {
|
||||
Settings.Global.putInt(getContentResolver(), Settings.Global.ADB_WIFI_ENABLED,
|
||||
enabled ? ADB_SETTING_ON : ADB_SETTING_OFF);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user