2017-02-02 6 views
0

Ich mache eine Audioplayer-App in Android. Ich versuche einen Sleeptimer zu machen, aber es funktioniert nicht. Ich möchte die App automatisch schließen lassen, wenn sie die festgelegte Zeit erreicht. Ich habe es über 5 Tage betrachtet ... Bitte helfen Sie mirAndroid Sleeptimer mit BroadcastReceiver

Hier ist mein Teil der Aktivität.

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

Dies ist 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()); 
    } 
} 

}

Dies ist offenbar.

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

Antwort

0

können Sie schließen die Anwendung onReceive() unten die Links suchen:

this, or this

+0

meine ich BroadcastReceiver nicht funktioniert. –

+0

Verwendung: Absicht intent = neue Absicht (yourContext, AlarmBroadCastReceiver.class); keine Notwendigkeit für Aktion und entfernen Sie auch Aktion einchecken onReceive – d1vivek681065

+0

Vielen Dank Kumpel :) es funktioniert –

Verwandte Themen