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. ................................................
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.
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.
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>
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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With