1

ユーザーがイベントを SQLite DB に入力するリマインダー アプリケーションを構築しています。メイン画面には各リマインダーのタイトルが一覧表示され、項目をクリックするとその詳細が表示されます。これはすべて正常に機能します。

ここで、イベントがスケジュールされる 15 分前、30 分前、または 1 時間前にリマインダーを設定するオプションを使用して、ユーザーが各アイテムの通知を設定できるようにしたいと考えています。

これについてどうすればいいのかわかりませんし、良いチュートリアルも見つかりません。これをどのように実装するかについて、誰かが私にアイデアを与えることができますか?

ありがとう!

4

3 に答える 3

2

AlaramManagerを使用して、イベントに関する通知をユーザーに表示するようにアプリに指示するブロードキャストを開始します。

これを使用する例を次に示します。アラーム マネージャの例

于 2012-11-08T14:40:35.303 に答える
2

データベースからイベントの日付を取得したら、他の通知と同じくらい簡単ですが、日付から時間 (15、30、60 分) を差し引くことに注意してください。

Timer timer = new Timer();
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy HH:mm");
Date date = formatter.parse("11/08/2012 16:39");
timer.schedule(timerTask, date);

これにより、イベントがイベント時間にスケジュールされます。イベントが実際に行われる前にリマインダーが必要とのことですが、これを行うには、カレンダー オブジェクトを作成して、必要な方法で日付を変更できます。以前のスケジュールを削除することを忘れないでください。そうしないと、2 つのリマインダー (一度に 1 つとリマインダーとして 1 つ) が残ります。

Calendar cal = Calendar.getInstance();
         cal.setTime(date);
         cal.add(Calendar.MINUTE, -15);//Or whatever
//Then schedule it.
time.schedule(timerTask,cal.getTime());

どちらのアプローチも、保留中の通知を実際に作成するメソッド呼び出しをtimerTask含む、このような変数を使用しています。createNotification

TimerTask timerTask = new TimerTask(){
   @Override
   public void run(){
       createNotification(title,  text,  tickerText,  millisec);
   }
};

これには潜在的な問題があります。アプリケーションが閉じられている場合、タイマーはそれと共に死ぬと思うので、アプリケーションの性質によっては、他のAlarmManager人が提案したように使用することをお勧めします.

于 2012-11-08T14:40:40.097 に答える
1

AlarmManagerを使用して、特定の日時にトリガーされるアクションを設定します。(AlarmManagerの使用方法に関するチュートリアルがたくさんあります)

アラームマネージャイベントは常にPendingIntentをトリガーします。このインテントから、ブロードキャストを行うか、サービスを開始することができます。(放送受信機またはサービスを作成する必要があります)

次に、ブロードキャストレシーバーまたはサービスで、通知を作成して表示します。

私は放送受信機ルートを提案します、それはよりクリーンでよりシームレスです。また、ユーザーがデバイスを再起動した場合にアラームマネージャーでイベントを再スケジュールするために、onBootイベント用のブロードキャストレシーバーを用意することもできます。

于 2012-11-08T14:41:59.607 に答える