2017-01-24 23 views
1

Приветствую вас, я делаю приложение для сигнализации. Вот мой removeAlarm и AlarmReceiver. Я установил рингтон для моей тревоги. Но когда это время ушло, рингтон включился, и я подождал 1 минуту, 2 минуты, но он не отключился. Итак, что я могу сделать, чтобы отключить его?Как остановить мелодию звонка?

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

Вы пробовали ringtone.stop(); ? – Isaac

ответ

0

Чтобы отменить мелодию после задержки, вы можете добавить Handler задачу к вашему BroadcastReceiver, как это, после того, как ringtone.play():

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