2017-01-24 4 views
1

Hallo an alle, ich mache eine Alarmanwendung. Hier ist mein removeAlarm und AlarmReceiver. Ich habe einen Klingelton für meinen Wecker eingestellt. Aber als diese Zeit vergangen ist, hat sich der Klingelton eingeschaltet und ich warte 1 Minute, 2 Minuten, aber er hat sich nicht abgeschaltet. Also, was kann ich tun, um es auszuschalten?Wie man den Klingelton des Alarms stoppt?

public static void removeAlarm(Context context, long id){ 
    AlarmManager alarmManager; 
    PendingIntent pendingIntent; 
    alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
    Intent myIntent = new Intent(context, AlarmReceiver.class); 
    pendingIntent = PendingIntent.getBroadcast(context, (int) id, myIntent, 0); 
    if(alarmManager != null) 
     alarmManager.cancel(pendingIntent); 
} 

public class AlarmReceiver extends BroadcastReceiver { 
private Ringtone ringtone = null; 
@Override 
public void onReceive(Context context, Intent intent) { 
    Toast.makeText(context,"Alarm",Toast.LENGTH_LONG).show(); 
    Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); 
    ringtone = RingtoneManager.getRingtone(context, uri); 
    ringtone.play(); 
    Intent x = new Intent(context,AlarmDialog.class); 
    context.startActivity(x); 
} 
+1

Haben Sie versucht, ringtone.stop(); ? – Isaac

Antwort

0

Um Ihren Klingelton nach einer Verzögerung abbrechen, können Sie eine Handler Aufgabe zu Ihrem BroadcastReceiver wie diese, nach ringtone.play() hinzufügen:

final Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
    ringtone.stop(); 
    } 
}, 1000 * 60); // runs stop() after 1 minute 
Verwandte Themen