2012-04-09 13 views
0

私のアプリで毎日のアラームを設定しようとしています。アンドロイド:特定の間隔の間のアラームレマンの停止

すべて正常に動作します。しかし、今私は欲しいです:特定の期間、私の警報は静かなままにする必要があります。

例:アラームが設定されている場合30分ごとにアラームを再生し、午前1時から午前2時の間に静かにしておくように指定した場合は、 。

私はこのようなことのためのコードを持っている:時間2:00 AM 1:00 AMの間沈黙であれば

30分ごとに、私のサービスは、電話します。

はコードの下を参照してください:

Calendar currentTime = new GregorianCalendar(); 
    currentTime.set(Calendar.HOUR, Calendar.HOUR); 
    currentTime.set(Calendar.MINUTE, Calendar.MINUTE); 
    currentTime.set(Calendar.SECOND, Calendar.SECOND); 
    currentTime.set(Calendar.DATE, Calendar.DATE); 
    currentTime.set(Calendar.MONTH, Calendar.MONTH); 

    Calendar start_time = new GregorianCalendar(); 
    start_time.set(Calendar.HOUR, sHour); 
    start_time.set(Calendar.MINUTE, sMinute); 
    start_time.set(Calendar.SECOND, Calendar.SECOND); 
    start_time.set(Calendar.DATE, Calendar.DATE); 
    start_time.set(Calendar.MONTH, Calendar.MONTH); 

    Calendar end_time = new GregorianCalendar(); 
    end_time.set(Calendar.HOUR, eHour); 
    end_time.set(Calendar.MINUTE, eMinute); 
    end_time.set(Calendar.SECOND, Calendar.SECOND); 
    end_time.set(Calendar.DATE, Calendar.DATE); 
    end_time.set(Calendar.MONTH, Calendar.MONTH); 




    if((!SILENCE) && (((!(start_time.getTimeInMillis() < currentTime.getTimeInMillis())) && (!(currentTime.getTimeInMillis() < end_time.getTimeInMillis()))))){ 
    // Alarm will play 
} 
else{ 
// you are in Silent mode 
} 

ので、私はなっておりませんしながら、それが動作することを私に解決策を与えてください? ここにこのコードがあります。私はいつも「あなたはサイレントモードです」

だから私に助けてください。

ありがとうございました。

答えて

3

あなたは整数値に時間と分を設定しているこの文を使用して、間違った

currentTime.set(Calendar.HOUR, Calendar.HOUR); 

を行っています。 たとえばCalendar.HOURには一定の値10がありますが、すべての定数には異なる固定値があり、この値をカレンダーに割り当てているとおそらく問題が発生します。

ソリューション

あなただけの時間と分を設定したい場合は、自動的にあなたの現在のdatatimeを検討するように、その後、他のフィールドを残して。

Calendar currentTime = Calendar.getInstant(); 
currentTime.set(Calendar.HOUR, hours); 
currentTime.set(Calendar.MINUTE, minuts); 

ので、これはあなたが提供した値にカレンダーで時間と分を設定し、それが現在の日、月、年などのような他の情報を設定します。

編集

あなたはその後、System.currentTimeMillis();を使用するミリ秒単位で現在の時刻を取得するために、問題に直面している場合。

ミリ秒で将来の時間を得るには、カレンダーに適切な時間を設定しなければならず、その後は、のようなミリ秒単位でカレンダーから時間を取得する必要があります。

+0

本当に良い答え。しかし、もし私が現在の時間をミリ秒単位で取得したいのであれば、もっと考えてみましょうか?私はあなたのコード時間とminutsは現在の時間と分を意味するので、どのようにそのコードを設定するのですか? –

+0

私は開始時刻と終了時刻の時と分を設定しましたが、現在の時刻はどのように設定するのですか? –

+0

それは私の問題を解決してくれてありがとう。 –

1

はそれを試す -

if((!SILENCE) && (start_time.getTimeInMillis() > System.getTimeInMillis())){ 
// Alarm will play 
} 
else{ 
// you are in Silent mode 
} 
+0

答えに感謝します。しかし、私はまた、終了時間をチェックする必要があります。いつの間にか私はアラームを再生したいので –

関連する問題