2016-08-13 4 views
0

私はJavaを使ってAndroid用の目覚まし時計アプリケーションを作成したいと思います。そして、(現在の時刻)が正確に同じ日の「設定時刻」よりも遅い場合にonReceive関数が実行されることに気付きました。AlarmManager.setWindowとAlarmManager.setのバグ?

私が設定機能で抱えている問題は、アラームを午前8時に設定すると(非常に翌日)、夜間にアラームを設定すると11時にonReceive機能が実行されるためです夜11時には、同じ日の午前8時より遅いので、アラームを設定する前に午前12時まで待たなければなりません。希望の結果が得られ、何をすべきかを調査し、 setWindow関数をset関数の代わりに使用します。

私は既にsetWindow関数を試しましたが、(set関数を使用しているかのように)同じ問題がまだ発生しています。私は、現在の時刻が設定された時間後に1分未満である場合にのみ、onReceive関数を実行したいと思います。また、(私はstackoverflowに慣れているので)サンプルコードとログをどのように送っていますか?私は4つのスペースをインデントし、送信しようとしても同じエラーが表示されます。ありがとうございました。

+0

「アラームを設定する前に午前12時まで待ってから、結果を得ることができます」、またはアラーム時刻に1日追加することができます。 [この回答](https://stackoverflow.com/a/35945869/115145)、第3段落を参照してください。 "送信しようとしたときに同じエラーが発生しています" - エラーは何ですか? – CommonsWare

+0

ありがとうございましたが、同じ日に私を目覚めさせて、自動的に天候を判断していないかどうかはどうですか? –

+0

あなたは過去の時代に "同じ日に私を起こす"ことはできません。今日の時刻が過去の 'Calendar'になったら、' add() 'を実行します。今日の時刻が将来の予定の「カレンダー」になったら、その「カレンダー」だけを使用してください。 – CommonsWare

答えて

0

すべてのAlarmManager.set...メソッドは、固定時間(typeパラメータに応じて解釈される)を示すパラメータlong triggerAtMillisを持ちます。

ミリ秒を得るには、f.ex. Calendarオブジェクトをhintedとして使用します。

詳細情報が必要な場合は、コードを投稿してください(最高:MCVE)。

関連する問題