2016-03-22 17 views
0

Alarmlı bir saat açmak istiyorum. Ben yaptım ama sadece cihaz yeniden başlatılmamışsa çalışır. Eğer sadece bir alarm alamadım. Cihazım yeniden başlatılmış veya başlatılmamış olursa olsun alarmımı almak için ne yapmalıyım? Ben Alarm zamanını ayarlamak edebilirsiniz:Bu cihaz tekrar başlatılmış olsa da alarm alın

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 
am.set(AlarmManager.RTC_WAKEUP,calendar1.getTimeInMillis(),pi1); 
+0

Bunu ve "AutoLoad" yapmak için bir 'BacgroundService' oluşturmanız gerekir üzerindeki servis tekrar başlat. – Aspicas

+0

@aspicas Bunu daha geniş bir şekilde açıklayabilir misiniz? Alarmı ayarlayan bir servis başlatmamı istiyorsun, değil mi? –

+0

Evet, cihazınızda PowerOn'u açtığınızda bildiren alıcı ile bir "bacgroundService" oluşturmak için ihtiyacınız olan ilk seçenek, daha sonra, backgrounService üzerinde kodunuzu ÀlarmManager' – Aspicas

cevap

0

Bu benim benzer bir durumda çalıştı budur:

, yayın alıcı sistemin yeniden tespit edin. Şimdi, sisteminiz yeniden başlatıldığında, yayın alıcınız bunu algılayacak ve görevinizi gerçekleştirebileceksiniz. Benim projemde, SQLite veritabanım üzerinde bir sorgu çalıştırdım ve icra edilmemiş tüm alarmları alıp benim gereksinimlerime göre çalıştırdım ve veritabanını da aynı şekilde güncelledim.

Benzer bir şeyi deneyebilirsiniz. alarmları almak için

Kodu:

aşağıdaki özellikleriyle Yayın Alıcısı ekleyin:

<receiver android:name=".MyBroadcastReceiver"> 
     <intent-filter>  
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </receiver> 

Bu BroadcastReceiver Android cihazınızın yeniden algılamak ve BroadcastReceiver ait OnReceive() yöntemini çalıştırır. OnReceive() yönteminde, tüm alarmları ölçütlerinize göre alın ve daha sonra işleyin.

aşağıdaki bağlantıyı geçmesi ayrıca SQLite veritabanından kayıtları veya dizilerini nasıl alınacağını öğrenmek için:

http://developer.android.com/training/basics/data-storage/databases.html#ReadDbRow

+0

Eh, şimdilik sadece bir alarm kurabilirim (bir kerede bütünüyle çalışamıyorum) Bana ne önerebilirsiniz? –

+0

Sadece bir alarm için istiyorsanız, aynı tekniği (yukarıda anlattığım) Shared Preferences ile kullanabilirsiniz. –

+0

Birden fazla alarm istiyorsanız, kullanıcı tarafından bir alarm ayarlandığı anda, PendingIntent'ın istek kodunu ve alarmın zaman ve tarih ayrıntılarını SQLite veritabanına kaydedin ve oradan tüm bilgileri işleyin. –

İlgili konular