2014-10-26 8 views
6

В моем классе активностисигнализации Планирование каждые 2 минуты андроид

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

    } 

И моя onrecieve функция alarmreciever класса

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

Я использую Nexus 4, KitKat версии. Я не вижу, чтобы какая-либо функция срабатывания срабатывала каждые 2 минуты. Nthg происходит ... любая помощь? спасибо

<?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> 

Я просто кладу манифеста, а также. ................................................

+0

Вы указали имя класса приемника сигнала тревоги в своем манифесте? – hister

+0

да. ........... – user3278732

ответ

8

В функции setRepeating, вы должны использовать SystemClock.elapsedRealTime() для ELAPSED_REALTIME_WAKEUP. Кроме того, вам нужно изменить 2000 на 2 * 60 * 1000, чтобы указать интервал времени.

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

Надеюсь, это поможет.

Ссылка: ELAPSED_REALTIME_WAKEUP

EDIT: В вашем файле манифеста, есть опечатка в вашем имени приемника. Измените «.AlarmReciever» на «.AlarmReceiver».

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

ее не работает, мой проект здесь https://www.wetransfer.com/downloads/8529755c58f64f5f9f5767be664893ce20141026134802/1395db476afa6c786d656162a5c140f420141026134802/5beafe если и хотите проверить его – user3278732

+0

@ user3278732 Я проверил ваш проект и выяснили, опечатка в вашем файле манифеста. Я только что обновил свой ответ. – SLee

+0

спасибо, много, что решило ситуацию. теперь я работаю над другой проблемой. в прянике менеджер тревог стреляет быстро, в kitkat его обстрел после 32 секунд .. когда я делаю это 10 * 60 * 1000 – user3278732

3

в своем коде вы установить сигнализацию таким образом

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

интервал времени является неправильным запускать каждые две минуты вы должны написать:

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

EDIT

для отложенного умысел установленного флага PendingIntent.FLAG_UPDATE_CURRENT и посмотреть, не изменит ли он что-либо.

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

набор повторяющихся занимает 4 Params, а не 3. – user3278732

+0

Я редактировал ответ – hister

+0

я поставил код здесь https://www.wetransfer.com/downloads/8529755c58f64f5f9f5767be664893ce20141026134802/1395db476afa6c786d656162a5c140f420141026134802/5beafe его не работает. простое приложение, просто распечатать тревогу – user3278732