Reputation: 348
I want to use the checkbox for my notification in my BroadcastReceiver.I set all checkbox but I cannot stop vibration and I cannot control my notification. I want to stop vibration.İf checkbox preference is false.İf checkbox preference is true. Vibrate my phone. How can I do that? (I am the beginner at Preference activity)
My settings xml:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:defaultValue="true"
android:key="vibrate"
android:summary="Telefona görev geldiğinde titreşim yollanır."
android:title="Titreşim"
>
</CheckBoxPreference>
<CheckBoxPreference
android:defaultValue="true"
android:key="notify"
android:summary="Telefona görev geldiğinde ses ile uyarılır."
android:title="Bildirim sesi"
>
</CheckBoxPreference>
</PreferenceScreen>
My settings activity (so PreferenceActivity ) :
public class Ayarlar extends PreferenceActivity {
boolean autovibrate;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
getListView().setBackgroundColor(getResources().getColor(R.color.yüz));}
public void onStart(Intent intent, int startId) {
getPrefs();
}
private void getPrefs() {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
autovibrate = prefs.getBoolean("vibrate", true);
}
}
My broadcast receiver :
public class Alarm extends BroadcastReceiver {
cancelAlarm(context);
setalarm(context);
}
It is in a if loop.
Notification noti = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
noti = new Notification.Builder(context)
.setTicker(" size bir bildirim yolladı.")
.setContentTitle("")
.setContentText(listData.get(secilmissayı) + " i arama zamanı")
.setSmallIcon(R.drawable.alarm_24dp)
.addAction(R.drawable.cal, "Ara", pendingIntentYes)
.addAction(R.drawable.se, "Daha Sonra", pendingIntentYes2)
.setContentIntent(pIntent).getNotification();
}
NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
noti.flags |= Notification.FLAG_AUTO_CANCEL;
noti.defaults |= Notification.DEFAULT_ALL;
noti.defaults |= Notification.DEFAULT_VIBRATE;
notificationManager.notify(0, noti);
I tried achive settings activity
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
}
Upvotes: 0
Views: 109
Reputation: 2143
Looks like you need to get the attribute which is responsible for vibration from shared preferences and depending on it's value change notifications settings. Add it to your code in the Alarm class:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Boolean vibrate = prefs.getBoolean("vibrate", true);
noti.defaults |= Notification.DEFAULT_SOUND;
if (vibrate) {
noti.defaults |= Notification.DEFAULT_VIBRATE;
}
Upvotes: 1