2017-02-02 15 views
0

Я делаю аудиоплеер в Android. Я пытаюсь сделать sleeptimer, но он не работает. Я хочу, чтобы приложение закрывалось автоматически, когда оно соответствует установленному времени. Я рассмотрел его в течение 5 дней ... Пожалуйста, помогите мнеAndroid sleeptimer with broadcastreceiver

Это моя деятельность.

String items[] = {"타이머 없음", "1분", "3분", "5분", "10분", "15분", "20분",   "30분", "40분", "1시간", "2시간"}; 
AlertDialog.Builder ab = new AlertDialog.Builder(this); 
ab.setTitle("SleepTimer"); 
ab.setSingleChoiceItems(items, 0, 
    new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 

      try { 
       int broadcastUniqId = 0x1123; // uniq id 설정 
       Intent intent = new Intent("action_alarm_notification"); 
       PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), broadcastUniqId, intent, 0); 
       AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 


       alarmManager.cancel(pendingIntent); 
       pendingIntent.cancel(); 

       int intervalTime = 0; 
       switch (whichButton) { 
        case 0: 
         intervalTime = 0; 
         break; 
        case 1:// 1분 
         intervalTime = 60000; 
         break; 
        case 2:// 3분 
         intervalTime = 180000; 
         break; 
        case 3:// 5분 
         intervalTime = 300000; 
         break; 
        case 4:// 10분 
         intervalTime = 600000; 
         break; 
        case 5:// 15분 
         intervalTime = 900000; 
         break; 
        case 6:// 20분 
         intervalTime = 1200000; 
         break; 
        case 7:// 30분 
         intervalTime = 1800000; 
         break; 
        case 8:// 40분 
         intervalTime = 2400000; 
         break; 
        case 9:// 1시간 
         intervalTime = 3600000; 
         break; 
        case 10:// 2시간 
         intervalTime = 7200000; 
         break; 
       } 


       if (intervalTime > 0) { 
        pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), broadcastUniqId, intent, 0); 
        alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+ intervalTime, pendingIntent); 
       } 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      dialog.dismiss(); 
     } 
    }); 
    ab.show(); 

Это BroadcastReceiver

public class AlarmBroadcastReceiver extends BroadcastReceiver { 
    @Override 
     public void onReceive(Context context, Intent intent) { 
      if (intent.getAction().equals("action_alarm_notification")) { 
     System.exit(0); 
      android.os.Process.killProcess(android.os.Process.myPid()); 
    } 
} 

}

Это проявляется.

<receiver 
     android:name=".AlarmBroadcastReceiver" 
    android:enabled="true" 
     android:exported="false"> 
    <intent-filter> 
    <action android:name="action_alarm_notification"/> 
    </intent-filter> 
    </receiver> 

ответ

0

Вы можете закрыть приложение onReceive() Посмотрите ссылки ниже:

this, or this

+0

Я имею в виду BroadcastReceiver не работает. –

+0

Использование: Цель намерения = новое намерение (yourContext, AlarmBroadCastReceiver.class); нет необходимости в действии, а также удалить проверку действий в onReceive – d1vivek681065

+0

спасибо вам большое чувак :) это работает –