summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values/strings.xml4
-rw-r--r--res/xml/development_prefs.xml5
-rw-r--r--src/com/android/settings/DevelopmentSettings.java16
3 files changed, 25 insertions, 0 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 21a4e04..1d2ba38 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3074,6 +3074,10 @@
<string name="keep_screen_on">Stay awake</string>
<!-- setting Checkbox summary whether to keep the screen on when plugged in -->
<string name="keep_screen_on_summary">Screen will never sleep while charging</string>
+ <!-- Setting Checkbox title whether to enable bluetooth HCI snoop log -->
+ <string name="bt_hci_snoop_log">Enable Bluetooth HCI snoop log</string>
+ <!-- setting Checkbox summary whether to capture all bluetooth HCI packets in a file -->
+ <string name="bt_hci_snoop_log_summary">Capture all bluetooth HCI packets in a file</string>
<!-- Runtime selection title, used for debug purposes only. [CHAR LIMIT=25] -->
<string name="select_runtime_title">Select runtime </string>
diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml
index eddc411..db003d3 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -56,6 +56,11 @@
android:title="@string/enforce_read_external_title"
android:summary="@string/enforce_read_external_summary" />
+ <CheckBoxPreference
+ android:key="bt_hci_snoop_log"
+ android:title="@string/bt_hci_snoop_log"
+ android:summary="@string/bt_hci_snoop_log_summary"/>
+
<PreferenceCategory android:key="debug_debugging_category"
android:title="@string/debug_debugging_category">
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 6c3ce1a..db68a14 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -27,6 +27,7 @@ import android.app.Dialog;
import android.app.DialogFragment;
import android.app.admin.DevicePolicyManager;
import android.app.backup.IBackupManager;
+import android.bluetooth.BluetoothAdapter;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
@@ -97,6 +98,7 @@ public class DevelopmentSettings extends PreferenceFragment
private static final String CLEAR_ADB_KEYS = "clear_adb_keys";
private static final String ENABLE_TERMINAL = "enable_terminal";
private static final String KEEP_SCREEN_ON = "keep_screen_on";
+ private static final String BT_HCI_SNOOP_LOG = "bt_hci_snoop_log";
private static final String SELECT_RUNTIME_KEY = "select_runtime";
private static final String SELECT_RUNTIME_PROPERTY = "persist.sys.dalvik.vm.lib";
private static final String ALLOW_MOCK_LOCATION = "allow_mock_location";
@@ -167,6 +169,7 @@ public class DevelopmentSettings extends PreferenceFragment
private Preference mBugreport;
private CheckBoxPreference mBugreportInPower;
private CheckBoxPreference mKeepScreenOn;
+ private CheckBoxPreference mBtHciSnoopLog;
private CheckBoxPreference mEnforceReadExternal;
private CheckBoxPreference mAllowMockLocation;
private PreferenceScreen mPassword;
@@ -252,6 +255,7 @@ public class DevelopmentSettings extends PreferenceFragment
mBugreport = findPreference(BUGREPORT);
mBugreportInPower = findAndInitCheckboxPref(BUGREPORT_IN_POWER_KEY);
mKeepScreenOn = findAndInitCheckboxPref(KEEP_SCREEN_ON);
+ mBtHciSnoopLog = findAndInitCheckboxPref(BT_HCI_SNOOP_LOG);
mEnforceReadExternal = findAndInitCheckboxPref(ENFORCE_READ_EXTERNAL);
mAllowMockLocation = findAndInitCheckboxPref(ALLOW_MOCK_LOCATION);
mPassword = (PreferenceScreen) findPreference(LOCAL_BACKUP_PASSWORD);
@@ -477,6 +481,8 @@ public class DevelopmentSettings extends PreferenceFragment
Settings.Secure.BUGREPORT_IN_POWER_MENU, 0) != 0);
updateCheckBox(mKeepScreenOn, Settings.Global.getInt(cr,
Settings.Global.STAY_ON_WHILE_PLUGGED_IN, 0) != 0);
+ updateCheckBox(mBtHciSnoopLog, Settings.Secure.getInt(cr,
+ Settings.Secure.BLUETOOTH_HCI_LOG, 0) != 0);
updateCheckBox(mEnforceReadExternal, isPermissionEnforced(READ_EXTERNAL_STORAGE));
updateCheckBox(mAllowMockLocation, Settings.Secure.getInt(cr,
Settings.Secure.ALLOW_MOCK_LOCATION, 0) != 0);
@@ -607,6 +613,14 @@ public class DevelopmentSettings extends PreferenceFragment
}
}
+ private void writeBtHciSnoopLogOptions() {
+ BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
+ adapter.configHciSnoopLog(mBtHciSnoopLog.isChecked());
+ Settings.Secure.putInt(getActivity().getContentResolver(),
+ Settings.Secure.BLUETOOTH_HCI_LOG,
+ mBtHciSnoopLog.isChecked() ? 1 : 0);
+ }
+
private void writeDebuggerOptions() {
try {
ActivityManagerNative.getDefault().setDebugApp(
@@ -1193,6 +1207,8 @@ public class DevelopmentSettings extends PreferenceFragment
Settings.Global.STAY_ON_WHILE_PLUGGED_IN,
mKeepScreenOn.isChecked() ?
(BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB) : 0);
+ } else if (preference == mBtHciSnoopLog) {
+ writeBtHciSnoopLogOptions();
} else if (preference == mEnforceReadExternal) {
if (mEnforceReadExternal.isChecked()) {
ConfirmEnforceFragment.show(this);