使用CheckBoxPreference打开/关闭手机声音,振动和互联网访问

时间:2016-05-16 19:53:57

标签: android audio checkbox sharedpreferences vibration

如何在Android中使用CheckBoxPreference切换整个系统的声音,振动,数据连接和wifi? 我希望有可能在我的应用程序中运行活动时禁用这些内容。

1 个答案:

答案 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);
    }