2
2slow4you
Gast
Hallo,
ich habe im Moment ein Problem mit dem AlarmManager: wenn man einen Button drückt, wird ein AlarmManager gestartet, und das funktioniert auch alles reibungslos. Wenn man aber danach, also während der Erste noch läuft, einen zweiten (anderen) AlarmManager startet, übernimmt der Erste die Zeit vom Zweiten. Das sieht dann so aus, dass der erste AM und der zweite AM zur gleichen Zeit zwei Notifications senden.
Das ist der Code für die Buttons:
Und das ist der Code aus dem Reciever:
Weiß jemand Rat? Verschiedene AM und IDs hab ich ja schon...
ich habe im Moment ein Problem mit dem AlarmManager: wenn man einen Button drückt, wird ein AlarmManager gestartet, und das funktioniert auch alles reibungslos. Wenn man aber danach, also während der Erste noch läuft, einen zweiten (anderen) AlarmManager startet, übernimmt der Erste die Zeit vom Zweiten. Das sieht dann so aus, dass der erste AM und der zweite AM zur gleichen Zeit zwei Notifications senden.
Das ist der Code für die Buttons:
Code:
switch (v.getId()) {
case (R.id.buttona1):
lol_newtime_a1 = 300000;//300 seconds
lol_actualtimea1 = lol_newtime_a1;
Toast.makeText(getApplicationContext(),"1. gestartet", Toast.LENGTH_SHORT).show();
//set AlarmManager
lol_newtime_a1 = new GregorianCalendar().getTimeInMillis() + lol_newtime_a1;
Intent intent_lol_a1 = new Intent(this, AlarmReciever.class);
Bundle lol_extras_a1 = new Bundle();
lol_extras_a1.putString("title", (getResources().getString(R.string.game_lol_a1)));
lol_extras_a1.putString("what", "The " + (getResources().getString(R.string.game_lol_a1)) + " " + end1);
intent_lol_a1.putExtras(lol_extras_a1);
AlarmManager lol_alarmManager_a1 = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
lol_alarmManager_a1.set(AlarmManager.RTC_WAKEUP, lol_newtime_a1,
PendingIntent.getBroadcast(this, 1, intent_lol_a1, PendingIntent.FLAG_UPDATE_CURRENT));
refreshLoL(1);
lol_timerHasStarted_a1 = true;
break;
case (R.id.buttona2):
lol_newtime_a2 = 360000;//360 seconds
lol_actualtimea2 = lol_newtime_a2;
Toast.makeText(getApplicationContext(),"2. gestartet", Toast.LENGTH_SHORT).show();
//set AlarmManager
lol_newtime_a2 = new GregorianCalendar().getTimeInMillis() + lol_newtime_a2;
Intent intent_lol_a2 = new Intent(this, AlarmReciever.class);
Bundle lol_extras_a2 = new Bundle();
lol_extras_a2.putString("title", (getResources().getString(R.string.game_lol_a2)));
lol_extras_a2.putString("what", "The " + (getResources().getString(R.string.game_lol_a2)) + " " + end1);
intent_lol_a2.putExtras(lol_extras_a2);
AlarmManager lol_alarmManager_a2 = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
lol_alarmManager_a2.set(AlarmManager.RTC_WAKEUP, lol_newtime_a2,
PendingIntent.getBroadcast(this, 2, intent_lol_a2, PendingIntent.FLAG_UPDATE_CURRENT));
refreshLoL(2);
lol_timerHasStarted_a2 = true;
break;
Code:
@Override
public void onReceive(Context context, Intent intent) {
String what = intent.getStringExtra("what");
String title = intent.getStringExtra("title");
showNotification(context, title, what);
}
private void showNotification(Context context, String title, String what) {
Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
new Intent(context, MainGameActivity.class), 0);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSound(soundUri)
.setLights(0xffcc0000, 1000, 100)
.setAutoCancel(true)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(title)
.setContentText(what)
.setTicker(what);
mBuilder.setContentIntent(contentIntent);
mBuilder.setDefaults(Notification.DEFAULT_SOUND);
mBuilder.setAutoCancel(true);
NotificationManager mNotificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Random generator = new Random();
int id = generator.nextInt( 564651684 );
mNotificationManager.notify(id, mBuilder.build());
}