2017-02-02 1 views
0

Je fais une application audioplayer dans Android. J'essaie de faire sleeptimer, mais ça ne marche pas. Je souhaite que l'application se ferme automatiquement lorsqu'elle respecte l'heure définie. Je l'ai considéré plus de 5 jours ... S'il vous plaît aidez-moiSleeptime Android avec broadcastreceiver

Voici ma partie d'activité.

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

C'est 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()); 
    } 
} 

}

Ceci est manifeste.

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

Répondre

0

Vous pouvez fermer votre application onReceive() Regardez les liens ci-dessous:

this, or this

+0

Je veux dire ne fonctionne pas BroadcastReceiver. –

+0

Utilisation: Intention intention = new Intention (votreContext, AlarmBroadCastReceiver.class); pas besoin d'action et aussi supprimer l'action vérifier onReceive – d1vivek681065

+0

merci beaucoup mec :) cela fonctionne –