振动不使用SharedPreferences

时间:2014-03-08 21:51:52

标签: android sharedpreferences

我的应用程序中有一个AlarmActivity,在其中我希望能够检查我的preferences.xml文件中的键“vibrate”的值,然后如果键返回true,则启动我的AlarmActivity中的振动模式。我以为我跟这个有关,但显然我不是。

AlarmActivity.java:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_alarm);

    final Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

    SharedPreferences prefs = this.getSharedPreferences("com.j5tech.app", Context.MODE_PRIVATE);
    boolean alarmVibrate = prefs.getBoolean("vibrate", false);
    if (alarmVibrate){

        long[] pattern = { 0, 200, 500 };
        vib.vibrate(pattern, 0);

    }else{

    }
...
}

在我的偏好.xml ...

<PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent">

<CheckBoxPreference
    android:key="vibrate"
    android:title="@string/vibrate_setting_title"
    android:summary="@string/vibrate_setting_summary"
    android:defaultValue="false" />

</PreferenceScreen>

2 个答案:

答案 0 :(得分:0)

在清单中设置振动权限:

<uses-permission android:name="android.permission.VIBRATE" />

答案 1 :(得分:0)

我知道我并没有在这里开玩笑。使用SharedPreferences,我不应该经历一大堆这个并设置它。这是由班级照顾的。以下是我最终要做的设置,以便在AlarmActivity中正确使用vibrate方法。

在preferences.xml中有一个UI对象,一个CheckBoxPreference:

<CheckBoxPreference
    android:name="@+id/chkbxVibrate"
    android:key="vibrate"
    android:title="@string/vibrate_setting_title"
    android:summary="@string/vibrate_setting_summary"
    android:defaultValue="false" />

然后PreferencesActivity.java非常简单:

...
public class PreferencesActivity extends PreferenceActivity {

@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);

}
...
}

然后在我的AlarmActivity中,我想检查CheckBoxPreference对象的值:

final Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    long[] pattern = { 0, 200, 500 };

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    boolean vibrate = prefs.getBoolean("vibrate", true);
    if (vibrate == true){

        vib.vibrate(pattern, 0);
    }

就这么简单!我希望这有助于其他人。