2016-04-08 23 views
0

Uygulamamda sorun yaşıyorum, ilk açılışta bir alarm sesi ayarlamak istiyorum ve alarm yöneticisinin belirli bir zamanda her 24 saatte bir bildirim göndermesini istiyorum. Bu uygulama ile ilgili her şey, uygulamayı ilk kez başlattığım zaman (uygulamadan veri temizlendiğinde), o zaman saatin 09 bir dahaki sefere kadar yapmaması gereken hemen bir bildirim gönderilir: 00. İşte AlarmManager ilk kurulumda gönderir

alarmı

public void setAlarm(){ 
    Toast.makeText(this, "setAlarm()", Toast.LENGTH_LONG).show(); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.set(Calendar.HOUR_OF_DAY, 9); 
    calendar.set(Calendar.MINUTE, 0); 
    calendar.set(Calendar.SECOND, 0); 

    Intent alarmIntent = new Intent(this, AlertReceiver.class); 

    if(PendingIntent.getBroadcast(this, 0, alarmIntent, PendingIntent.FLAG_ONE_SHOT) != null){ 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

     AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); 
    } 
} 

(sadece ilk defa uygulaması çalışıyorsa denir) kurulum fonksiyonudur Ve burada

public void createNotification(Context context, String msg, String msgText, String msgAlert){ 
    PendingIntent notificIntent = PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT); 

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context); 
    mBuilder.setSmallIcon(R.drawable.ic_stat_dmq_notification_icon); 
    mBuilder.setTicker(msgAlert); //Ticker! 
    mBuilder.setWhen(System.currentTimeMillis()); 
    mBuilder.setContentTitle(msg); //Title: 
    mBuilder.setContentText(msgText); //Text 
    mBuilder.setContentIntent(notificIntent); 
    mBuilder.setDefaults(NotificationCompat.DEFAULT_SOUND); 
    mBuilder.setAutoCancel(true); 

    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    mNotificationManager.notify(uniqueId, mBuilder.build()); 

Ben yayın alıcısının bildirim fonksiyonudur bunu günlerce inceliyordum ve bunu ortaya çıkaramıyorum ne de bir çözüm bulabilirim. Eğer herkes yardımcı olabilirse ben mutlu bir adam olurdum!

+1

calendar.setTimeInMillis (System.currentTimeMillis aramaya gerek();. – peter

+0

Evet haklısınız, ancak beklendiği gibi benim hata değişmedi Haklısınız –

cevap

0

test etmek için. Eklenecek gerekli Tek şey bu yüzden

if(calendar.getTimeInMillis() < System.currentTimeMillis()){ 
      Toast.makeText(this,"1 day have been added", Toast.LENGTH_SHORT).show(); 
      calendar.add(Calendar.DATE, 1); 
} 

Temelde sadece zaman geçmişte olup olmadığını görmek için kontrol edin ve eğer, o zaman başka bir gün ekler, alle olducalendar.set sonra oldu alarm ertesi gün sönecek.

1

Bölgenizde 09:00 geçiyor mu. Bu senin hatanın kaynağı olabilir. Android'de geçmişte bir zamana ayarlanmış bir alarm hemen ateş ediyor. Deneyin:

calendar.set(Calendar.YEAR, 2017); 

Çılgın hemen sonra tüm anlamaya i yönetmek Tamam

+0

, alarm kapatıp gitmeyecek. –

İlgili konular