2017-02-11 2 views
1

Ich muss den Alarm alle 30 Sekunden starten, ich brauche es aktiviert, ohne die App zu starten. Aber ob die App läuft oder nicht, der AlarmReceiver wird nicht aufgerufen. Irgendwelche Vorschläge? Startmethode ist in MainActivity.java Klasseist es richtig, Alarm alle 30 Sekunden einzustellen ???

public void start() { 
    Calendar calendar=Calendar.getInstance(); 
    calendar.add(Calendar.SECOND, 30); 
    Intent intent = new Intent(MainActivity.this, AlarmReceiver.class); 
    PendingIntent pintent = PendingIntent.getService(MainActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
    AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pintent); 
    Log.d("alarm","alarm set for alarm receiver"); 
} 

Mein Receiver

public class AlarmReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    // Toast.makeText(context,"Alarm Receiver ",Toast.LENGTH_SHORT).show(); 
    Log.d("Alarm","Alarm receive"); 

} 

}

Manifest Datei:

<?xml version="1.0" encoding="utf-8"?> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 

    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity" android:configChanges="keyboardHidden|orientation|screenSize"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <service android:name=".GetLocationService"/> 
    <receiver android:name=".AlarmReceiver" android:enabled="true"/> 
</application> 

hier bin ich in der Lage Alarm einzustellen, aber ich nicht erhalten Alarm

+0

Blick auf setExact –

Antwort

0

Auf dieser Seite gibt es ein fertiges Beispiel dafür, was man braucht:

https://www.thepolyglotdeveloper.com/2014/10/use-broadcast-receiver-background-services-android/

Sie Anscheinend ändern müssen Sie die Zeile:

PendingIntent pintent = PendingIntent.getService(MainActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

um

PendingIntent pintent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

Startmethode, um diese Änderung:

public void start() { 
    Intent alarmIntent = new Intent(this, AlarmReceiver.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0); 
    AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    int interval = 30 * 1000; // 30 seconds of interval. 
    manager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, pendingIntent); 
    Toast.makeText(this, "Alarm Set", Toast.LENGTH_SHORT).show(); 
} 

Lassen Sie mich, wenn Werke kennen.

+0

bekommen diese Warnmeldung Dienst kann nicht Intent {flg = 0x4 cmp = com.example.bipin.getlocationdetails/.AlarmReceiver (hat Extras)} U = 0 starten: nicht gefunden‘ –

+0

I edited meine Antwort, überprüfen Sie es jetzt. – Diekrul

Verwandte Themen