DevelopmentSettings.java revision b7e46e89d77574dbb51855144ea3d46fcf220bbb
1afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/*
2afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
3afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *
4afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * you may not use this file except in compliance with the License.
6afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * You may obtain a copy of the License at
7afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *
8afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *
10afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * See the License for the specific language governing permissions and
14afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * limitations under the License.
15afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */
16afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
17afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpackage com.android.settings;
18afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
19b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwoodimport android.app.AlertDialog;
20b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwoodimport android.content.DialogInterface;
21afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.BatteryManager;
22afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Bundle;
23afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.SystemProperties;
24afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.Preference;
25afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.PreferenceActivity;
26afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.PreferenceScreen;
27afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.CheckBoxPreference;
28afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.provider.Settings;
29afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.text.TextUtils;
30afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
31afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/*
32afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Displays preferences for application developers.
33afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */
34b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwoodpublic class DevelopmentSettings extends PreferenceActivity
35b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood        implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener {
36afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
37afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final String ENABLE_ADB = "enable_adb";
38afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final String KEEP_SCREEN_ON = "keep_screen_on";
39afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private static final String ALLOW_MOCK_LOCATION = "allow_mock_location";
40afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
41afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private CheckBoxPreference mEnableAdb;
42afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private CheckBoxPreference mKeepScreenOn;
43afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private CheckBoxPreference mAllowMockLocation;
44afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
45b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood    // To track whether Yes was clicked in the adb warning dialog
46b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood    private boolean mOkClicked;
47b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood
48afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    @Override
49afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    protected void onCreate(Bundle icicle) {
50afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        super.onCreate(icicle);
51afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
52afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        addPreferencesFromResource(R.xml.development_prefs);
53afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
54afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mEnableAdb = (CheckBoxPreference) findPreference(ENABLE_ADB);
55afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mKeepScreenOn = (CheckBoxPreference) findPreference(KEEP_SCREEN_ON);
56afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mAllowMockLocation = (CheckBoxPreference) findPreference(ALLOW_MOCK_LOCATION);
57afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
58afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
59afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    @Override
60afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    protected void onResume() {
61afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        super.onResume();
62afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
63afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mEnableAdb.setChecked(Settings.Secure.getInt(getContentResolver(),
64afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                Settings.Secure.ADB_ENABLED, 0) != 0);
65afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mKeepScreenOn.setChecked(Settings.System.getInt(getContentResolver(),
66afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                Settings.System.STAY_ON_WHILE_PLUGGED_IN, 0) != 0);
67afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mAllowMockLocation.setChecked(Settings.Secure.getInt(getContentResolver(),
68afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                Settings.Secure.ALLOW_MOCK_LOCATION, 0) != 0);
69afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
70afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
71afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    @Override
72afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
73afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
74afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        // Those monkeys kept committing suicide, so we add this property
75afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        // to disable this functionality
76afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if (!TextUtils.isEmpty(SystemProperties.get("ro.monkey"))) {
77afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            return false;
78afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
79afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
80afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if (preference == mEnableAdb) {
81b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood            if (mEnableAdb.isChecked()) {
82b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood                mOkClicked = false;
83b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood                new AlertDialog.Builder(this).setMessage(
84b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood                        getResources().getString(R.string.adb_warning_message))
85b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood                        .setTitle(R.string.adb_warning_title)
86b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood                        .setIcon(android.R.drawable.ic_dialog_alert)
87b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood                        .setPositiveButton(android.R.string.yes, this)
88b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood                        .setNegativeButton(android.R.string.no, this)
89b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood                        .show()
90b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood                        .setOnDismissListener(this);
91b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood            } else {
92b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood                Settings.Secure.putInt(getContentResolver(), Settings.Secure.ADB_ENABLED, 0);
93b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood            }
94afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } else if (preference == mKeepScreenOn) {
95afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            Settings.System.putInt(getContentResolver(), Settings.System.STAY_ON_WHILE_PLUGGED_IN,
96afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    mKeepScreenOn.isChecked() ?
97afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB) : 0);
98afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } else if (preference == mAllowMockLocation) {
99afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            Settings.Secure.putInt(getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION,
100afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                    mAllowMockLocation.isChecked() ? 1 : 0);
101afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
102afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
103afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        return false;
104afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
105b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood
106b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood    public void onClick(DialogInterface dialog, int which) {
107b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood        if (which == DialogInterface.BUTTON_POSITIVE) {
108b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood            mOkClicked = true;
109b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood            Settings.Secure.putInt(getContentResolver(), Settings.Secure.ADB_ENABLED, 1);
110b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood        } else {
111b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood            // Reset the toggle
112b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood            mEnableAdb.setChecked(false);
113b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood        }
114b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood    }
115b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood
116b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood    public void onDismiss(DialogInterface dialog) {
117b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood        // Assuming that onClick gets called first
118b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood        if (!mOkClicked) {
119b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood            mEnableAdb.setChecked(false);
120b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood        }
121b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood    }
122afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project}
123