Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scheduling alarm every 2 minutes android

Tags:

android

alarms

In my activity class

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

    }

And My onrecieve function in alarmreciever class

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

I am using nexus 4, kitkat version. I don't see any onreceive function fired every 2 minutes.nthg is happening... any help? 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>

I just put my manifest as well. ................................................

like image 528
user3278732 Avatar asked Oct 26 '14 13:10

user3278732


People also ask

Can also be used to schedule repeating alarms?

Decide how precise your alarm needs to be For most apps, setInexactRepeating() is the right choice. When you use this method, Android synchronizes multiple inexact repeating alarms and fires them at the same time.

What is Android alarm Manager?

android.app.AlarmManager. This class provides access to the system alarm services. These allow you to schedule your application to be run at some point in the future.


2 Answers

In your setRepeating function, you should use SystemClock.elapsedRealTime() for ELAPSED_REALTIME_WAKEUP. Also, you need to change 2000 to 2*60*1000 to specify your interval time.

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

Hope this helps.

Reference: ELAPSED_REALTIME_WAKEUP

EDIT: In your manifest file, there is a typo in your receiver name. Change ".AlarmReciever" to ".AlarmReceiver".

<receiver
    android:name=".AlarmReceiver"
    android:exported="true" >
</receiver>
like image 69
sam Avatar answered Oct 04 '22 04:10

sam


in your code you set the alarm this way

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

the interval time is wrong to run every two minutes you should write:

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

EDIT

for your pending intent set flag PendingIntent.FLAG_UPDATE_CURRENT and see if it changes anything.

PendingIntent alarmIntent = PendingIntent.getBroadcast(context,
            0,
            intent,
            PendingIntent.FLAG_UPDATE_CURRENT);
like image 34
EC84B4 Avatar answered Oct 04 '22 02:10

EC84B4