2016-05-12 4 views
-1

Was ist falsch in Code? Ich habe die Zeit geändert, um nur zu testen. Bitte geben Sie das Ergebnis detailliert an.Ich möchte meine Aktivität zu einer bestimmten Zeit beginnen. Zum Beispiel 3 Uhr

AlarmManager am = (AlarmManager) getBaseContext().getSystemService(Context.ALARM_SEDate futureDate = new Date(new Date().getTime() + 86400000); 
    futureDate.setHours(7); 
    futureDate.setMinutes(45); 
    futureDate.setSeconds(0); 

    Intent intent = new Intent(getBaseContext(), MyBroadcastReceiver.class); 

    PendingIntent sender = PendingIntent.getBroadcast(getBaseContext(), 0,intent, 
      PendingIntent.FLAG_UPDATE_CURRENT); 

Dies ist mein Broadcast-Reciever

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 

public class MyBroadcastReceiver extends BroadcastReceiver { 
//MediaPlayer mp; 
@Override 
public void onReceive(Context context, Intent intent) { 
    //mp=MediaPlayer.create(context, R.raw.alrm ); 
    //mp.start(); 
    //Toast.makeText(context, "Alarm....", Toast.LENGTH_LONG).show(); 
    Intent scheduledIntent = new Intent(context, HorrorRes.class); 
    scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(scheduledIntent); 

} 
} 
+0

Wo stellen Sie den Alarm ein? Das heißt, wo nennst du 'am.set()' oder eine ähnliche Methode? –

+0

Warum machst du neues Date(). GetTime() + 86400000 welches die aktuelle Zeit bekommt und dann diese Periode hinzufügt .. und dann die Kalenderzeitparameter danach einstellen .. du solltest zuerst die Daten einstellen .. dann – JoxTraex

Antwort

1

ich viel Weisheit haben speziell für das, was Sie erreichen wollen. Ich habe kürzlich eine Wecker-App veröffentlicht, die nur über NFC (Tap-and-Pay) -Technologie deaktiviert werden kann.

Hier sind ein paar Dinge, die Sie vorwärts gehen müssen tun:

  • Verwendung getSystemService (Context.ALARM_SERVICE);

  • Kalender ist sehr speziell. Verwenden Sie Calendar .add() oder .set(), und die Kalenderklasse ändert viele ihrer internen Variablen entsprechend. Calendar.getTime() berechnet alle inneren Felder von Calendar neu und gibt dann Ihr Date-Objekt zurück.

    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.add(Calendar.SECOND, 4); 
    Date date = calendar.getTime(); 
    Log.d("WakefulReceiver", date.toString()); 
    mAlarmManager.setExact(AlarmManager.RTC_WAKEUP, date.getTime(), mIntent); 
    
  • Ihre Absicht sieht gut aus.

  • Verwandeln Sie Ihren BroadcastReceiver in einen WakefulBroadcastReceiver, dieser Kurs kümmert sich um Ihr Wakelock und erledigt das schwere Heben für Sie. Wir wollen wirklich nur einen BroadcastReceiver in Android erhalten(). Im Empfang können Sie einen IntentService starten.

  • IntentService wird die Klasse sein, um die vielen Dinge zu handhaben, die durch Ihr Design passieren sollten. Ihr IntentService sollte: (A) einen separaten Dienst starten, um einen Async Foreground Media Player auszuführen. (B) Beginnen Sie Ihre Aktivität.

ich viel mehr ins Detail bekommen, here is my Github project code.

  • WakefulBroadcastReceiver = /app/WakefulReceiver.java
  • IntentService = /app/RingingService.java
  • Mediaplayer (als Vordergrund Async Service) = /app/AlarmService.java

Nachricht Ich für mehr Einsicht!

+0

Können Sie mir den perfekten Code senden? –

+0

Was ist gemeint mit mIntent und nAlarmManager? –

+0

Ich habe viele Fragen bezüglich Code, wie kann ich Sie kontaktieren Ich bin neu bei StackOverflow –

Verwandte Themen