Android повтор будильника или сервис? - PullRequest
0 голосов
/ 22 декабря 2011

Я создал приложение, которое рассчитывает определенный набор времени дня в соответствии с географическими координатами. Он дает уведомления о тех временах. Я использовал повторяющуюся тревогу для уведомления ежедневно (хотя сроки меняются для каждого дня, следовательно, не точные). Но он не уведомляет меня через 3 дня (я не заметил точное количество дней), пока не произойдет сброс. Почему это так? Сейчас я решил использовать сервис, который будет устанавливать уведомления ежедневно , следовательно, точный. Как мне написать услугу и позвонить ей?

public void alarmNoon(long diff) {
      Intent intent = new Intent(this, PNoon.class);
      PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
            intent, PendingIntent.FLAG_CANCEL_CURRENT);
      if (checkadan(1)==true){
          if (diff>=0){
          am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+diff,
            (1000*60*60*24), pendingIntent);}else{
          am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+diff+(1000*60*60*24), (1000*60*60*24), pendingIntent);
            }}else{
                am.cancel(pendingIntent);
            }
     }

diff - разница во времени между полуднем и текущим временем

public class PNoon extends BroadcastReceiver {
Dialog db;
@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);
    Notification notification = new Notification( R.drawable.icon, "Time", System.currentTimeMillis());
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, 0);
    notification.setLatestEventInfo(context,  "Time", "Its Noon", contentIntent);      
    notification.flags=Notification.FLAG_AUTO_CANCEL;
    notification.sound=Uri.parse("android.resource://net.ttct.time/"+R.raw.NoonAnnouncement);
    mNotificationManager.notify(1, notification);

}
}

Также звук прекращается, когда панель уведомлений открывается, она должна останавливаться только при касании элемента в панели уведомлений.

<receiver  android:process=":remote" android:name="PNoon"></receiver>

1 Ответ

0 голосов
/ 17 февраля 2012
       PendingIntent.FLAG_CANCEL_CURRENT change it as intent.FLAG_NEW_TASK

и зарегистрируйте свою трансляцию в manifest.xml

...