我是Android的初学者,我尝试制作一个带有偏好活动的简单手电筒应用。所以我的问题是;我想通过复选框使灯光和声音设置可选。
的settings.xml
<PreferenceCategory
android:title="@string/sct_behaviour">
<CheckBoxPreference
android:key="pref_light"
android:title="@string/st_pref_light"
android:summary="@string/ss_pref_light"
android:defaultValue="true"
/>
<CheckBoxPreference
android:key="pref_switch_sound"
android:title="@string/st_pref_sound"
android:summary="@string/ss_pref_sound"
android:defaultValue="true"
/>
<CheckBoxPreference
android:key="pref_notification_sound"
android:title="@string/st_pref_notification_sound"
android:summary="@string/ss_pref_notification_sound"
android:defaultValue="true"
/>
settings.java
public class Settings extends PreferenceActivity{
@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
CheckBoxPreference pLight = (CheckBoxPreference)getPreferenceManager().findPreference("pref_light");
pLight.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean myValue = (Boolean) newValue;
if(myValue){
}
//NEED SOME HELP IN THERE
return true;
}
});
我的turnOnFlash功能;
private void turnOnFlash() {
if (!isFlashOn) {
if (camera == null || params == null) {
return;
}
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
isFlashOn = true;
// changing button/switch image
toggleButtonImage();
// play sound
playSound();
}
}
onStart功能
@Override
protected void onStart() {
super.onStart();
if(VERBOSE) Log.v(TAG, "++ ON START ++");
// on starting the app get the camera params
getCamera();
turnOnFlash(value);
}
我想通过用户选择将此true或false值设置为onStart循环。并且不知道如何实现此实现。
答案 0 :(得分:2)
如果我理解正确,你应该获得onResume()的偏好并采取相应的行动:
protected void onResume() {
super.onResume();
if(VERBOSE) Log.v(TAG, "++ ON START ++");
// on starting the app get the camera params
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
boolean lightPref = prefs.getBoolean("pref_light", true);
getCamera();
turnOnFlash(lightPref);
}
答案 1 :(得分:1)
我认为你应该使用; clicklistener
Preference pLight = (Preference)findPreference("pref_light");
Preference pSwitchSound = (Preference)findPreference("pref_switch_sound");
Preference pNotificationSound = (Preference)findPreference("pref_notification_sound");
pLight.setOnPreferenceClickListener(this);
pSwitchSound.setOnPreferenceClickListener(this);
pNotificationSound.setOnPreferenceClickListener(this);