J'essaie de programmer mon AlarmManager pour qu'il se réveille tous les jours avec un temps aléatoire différent qui se produit entre 22h00 et 06h00. ont mal une alarmeHoraire aléatoire de Alarm Manager avec Calendrier
public class AlarmReciver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
try
{
System.out.println(TAG+": Alert recieved");
schedualeNextTimeAlarming(context);
} catch (Exception e)
{
}
private void schedualeNextTimeAlarming(Context context)
{
AlarmManager am = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReciver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
am.cancel(pi);
getNextTime(am, pi);
}
private void getNextTime(AlarmManager am, PendingIntent pi)
{
int max = 8;
int min = 1;
final Random myRandom = new Random();
int result = myRandom.nextInt(max - min) + min;
int hourOfDay = 0;
switch (result)
{
case 0:
hourOfDay = 22;
break;
case 1:
hourOfDay = 23;
break;
case 2:
hourOfDay = 24;
break;
default:
hourOfDay = result;
}
hourOfDay = 15; //for testing
System.out.println("next time alert: "+hourOfDay+" seconds");
Calendar cal = Calendar.getInstance();
// cal.add(Calendar.DAY_OF_YEAR, 1); if i disable this line, the Alarm wont work at all.
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 1);
cal.set(Calendar.SECOND, hourOfDay);
am.cancel(pi);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pi);
}
mon résultat attendu est que tous les 15 secodns:
J'ai essayé Technic, mais il ne marche pas semble fonctionner. c'est la sortie:
08-02 11:56:48.188: INFO/System.out(9138): InformationReceiver: Alert recieved
08-02 11:56:48.198: INFO/System.out(9138): next time alert: 15 seconds
08-02 11:56:48.218: INFO/System.out(9138): InformationReceiver: Alert recieved
08-02 11:56:48.228: INFO/System.out(9138): next time alert: 15 seconds
08-02 11:56:48.248: INFO/System.out(9138): InformationReceiver: Alert recieved
08-02 11:56:48.248: INFO/System.out(9138): next time alert: 15 seconds
08-02 11:56:48.278: INFO/System.out(9138): InformationReceiver: Alert recieved
08-02 11:56:48.278: INFO/System.out(9138): next time alert: 15 seconds
08-02 11:56:48.308: INFO/System.out(9138): InformationReceiver: Alert recieved
Comme vous pouvez le voir, il ne marche pas d'alarme toutes les 15 secondes.
Je veux un nouveau temps d'alarme ACHIVE la situation de re-scheduale, chaque fois qu'il pénètre dans cette fonction
une solution ou d'autres suggestions efficaces serait la bienvenue.
Merci.
Il serait très utile pour nous de savoir ce qui ne fonctionne pas. Existe-t-il une exception, n'y a-t-il pas d'alarme? – Janusz
Il y a une alarme, le problème est que ça ne désactive pas le alivar preivouse .. bien que je fasse du cancle. Aussi le réveil d'Alaram n'est pas juste, mal éditer le code avec sortie – Moshik