如何在Android中使用CheckBoxPreference切换整个系统的声音,振动,数据连接和wifi? 我希望有可能在我的应用程序中运行活动时禁用这些内容。
答案 0 :(得分:0)
我明白了。
在res/xml/preferences.xml
中添加CheckBoxPreferences:
<CheckBoxPreference
android:defaultValue="false"
android:key="pref_disableSoundAndVibration"
android:title="Disable sound and vibration" />
<CheckBoxPreference
android:defaultValue="false"
android:key="pref_disableWifi"
android:title="Disable Wi-Fi" />
在MainActivity中添加两个布尔成员来存储音频和wifi复选框状态,并为振铃状态(静音,振动,声音)添加一个整数。
protected void onCreate(Bundle savedInstanceState) {
...
mDisableSoundAndVibration = mPref.getBoolean("pref_disableSoundAndVibration", false);
AudioManager aManager=(AudioManager)getSystemService(AUDIO_SERVICE);
mRingerMode = aManager.getRingerMode();
mDisableWifi = mPref.getBoolean("pref_disableWifi", false);
WifiManager wifiManager = (WifiManager)this.getSystemService(WIFI_SERVICE);
mWifiMode = wifiManager.isWifiEnabled();
...
if (savedInstanceState != null) {
mDisableSoundAndVibration = savedInstanceState.getBoolean("disableSoundAndVibration");
mDisableWifi = savedInstanceState.getBoolean("disableWifi");
...
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
...
mDisableSoundAndVibration = mPref.getBoolean("pref_disableSoundAndVibration", false);
mDisableWifi = mPref.getBoolean("pref_disableWifi", false);
...
}
protected void onSaveInstanceState(Bundle outState) {
...
outState.putBoolean("disableSoundAndVibration", mDisableSoundAndVibration);
outState.putInt("ringerMode", mRingerMode);
outState.putBoolean("disableWifi", mDisableWifi);
....
}
如果您想暂时禁用声音和Wi-Fi并保留初始状态:
if (mDisableSoundAndVibration){
AudioManager aManager=(AudioManager)getSystemService(AUDIO_SERVICE);
aManager.setRingerMode(aManager.RINGER_MODE_SILENT);
}
if (mDisableWifi){
WifiManager wifiManager = (WifiManager)this.getSystemService(this.WIFI_SERVICE);
wifiManager.setWifiEnabled(false);
}
然后恢复初始值:
if (mDisableSoundAndVibration){
AudioManager aManager=(AudioManager)getSystemService(AUDIO_SERVICE);
aManager.setRingerMode(mRingerMode);
}
if(mDisableWifi){
WifiManager wifiManager = (WifiManager)this.getSystemService(WIFI_SERVICE);
wifiManager.setWifiEnabled(mWifiMode);
}