2014-10-26 11 views
6

Nella mia classe di attivitàallarme Scheduling ogni 2 minuti Android

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     AlarmManager alarmManager=(AlarmManager) getSystemService(ALARM_SERVICE); 
     Intent intent = new Intent(MainActivity.this, AlarmReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0); 
     alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,System.currentTimeMillis(),2000, pendingIntent); 

    } 

E mia funzione onrecieve in alarmreciever classe

 @Override 
    public void onReceive(Context context, Intent intent) 
     { 
     //get and send location information 
     System.out.println("fired"); 
     } 

Sto usando Nexus 4, la versione KitKat. Non vedo nessuna funzione attivata ogni 2 minuti. Sta succedendo ... qualche aiuto? thank you

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.alarmexample" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="20" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <receiver 
     android:name="com.example.AlarmExample" 
     android:exported="false" > 
    </receiver> 
</application> 
</manifest> 

ho appena messo la mia manifesta pure. ................................................

+0

hai messo il nome della classe del ricevitore di allarme nel tuo manifest? – hister

+0

si. ........... – user3278732

risposta

8

Nella funzione setRepeating, è necessario utilizzare SystemClock.elapsedRealTime() per ELAPSED_REALTIME_WAKEUP. Inoltre, è necessario modificare da 2000 a 2 * 60 * 1000 per specificare l'intervallo di tempo.

alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
          SystemClock.elapsedRealtime(), 
          2*60*1000, 
          pendingIntent); 

Spero che questo aiuti.

Riferimento: ELAPSED_REALTIME_WAKEUP

EDIT: Nel file manifest, v'è un errore di battitura nel nome del ricevitore. Cambia ".AlarmReciever" in ".AlarmReceiver".

<receiver 
    android:name=".AlarmReceiver" 
    android:exported="true" > 
</receiver> 
+0

sua non funziona, il mio progetto è qui https://www.wetransfer.com/downloads/8529755c58f64f5f9f5767be664893ce20141026134802/1395db476afa6c786d656162a5c140f420141026134802/5beafe se la u vuole controllarlo – user3278732

+0

@ user3278732 ho controllato il vostro progetto e scoperto un refuso nel file manifest. Ho appena aggiornato la mia risposta. – SLee

+0

grazie molte, che ha risolto la situazione. ora sto lavorando su un altro problema. nel pan di zenzero il gestore degli allarmi spara rapidamente, nel kitkat il suo sparo dopo 32 secondi .. quando lo faccio 10 * 60 * 1000 – user3278732

3

nel codice si imposta la sveglia in questo modo

alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
      System.currentTimeMillis(), 
      2000, 
      pendingIntent); 

l'intervallo di tempo è sbagliato per eseguire ogni due minuti si dovrebbe scrivere:

alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
      0, 
      1000 * 60 * 2, 
      pendingIntent); 

EDIT

per la vostra attesa di flag set intento PendingIntent.FLAG_UPDATE_CURRENT e vedere se cambia qualcosa.

PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 
      0, 
      intent, 
      PendingIntent.FLAG_UPDATE_CURRENT); 
+0

set ripetendo prende 4 params, non 3. – user3278732

+0

Ho modificato la risposta – hister

+0

metto il codice qui https://www.wetransfer.com/downloads/8529755c58f64f5f9f5767be664893ce20141026134802/1395db476afa6c786d656162a5c140f420141026134802/5beafe sua non funziona. semplice applicazione, basta stampare l'allarme – user3278732