2017-09-04 9 views
0

Je veux utiliser la case à cocher pour ma notification dans mon BroadcastReceiver.J'ai mis toute la case à cocher mais je ne peux pas arrêter les vibrations et je ne peux pas contrôler ma notification. Je veux arrêter la vibration.İf checkboxpreference est faux.İf checkboxpreference est true.Vibrate mon téléphone.Comment puis-je faire cela? (Je suis begginner à PreferenceActivity)CheckboxPreference en utilisant dans broadcastReceiver pour la notification

Mes paramètres 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> 

Mes réglages activité (si 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); 
    } 


    } 

Mon BroadcastReceiver:

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); 




      } 

Répondre

1

On dirait que vous besoin d'obtenir l'attribut qui est responsable de la vibration des préférences partagées et en fonction sur sa valeur modifier les paramètres de notifications. Ajoutez-le à votre code dans la classe Alarme:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
Boolean vibrate = prefs.getBoolean("vibrate", true); 

noti.defaults |= Notification.DEFAULT_SOUND; 
if (vibrate) { 
    noti.defaults |= Notification.DEFAULT_VIBRATE; 
}