0

私のアプリケーションは、特定の時間にサービスを開始するように設計されています。

時間を受け取るためにtimePickerを使用します

 time.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {

        public void onTimeChanged(TimePicker view, int hourOfDay, int min) {
            hour = hourOfDay;
            minute = min;
        }
    });

ボタンを押すと、alarmmanagerがアクティブになります。その後、インテントはこの時点で開始する必要があります。

public void onClick(View v) {
            cal = Calendar.getInstance();
            int _hour = hour;
            int tmpHour = cal.get(Calendar.HOUR_OF_DAY);
            int tmpMinute = cal.get(Calendar.MINUTE);
            // Alarm is today?
            if (hour > tmpHour || (tmpHour == hour && tmpMinute < minute)){

                tmpHour *= 60;
                _hour *= 60;
            }
            **// Add 24Hours to get difference.
            else {

                tmpHour *= 60;
                _hour *= (_hour + 24) * 60;
            }**
            int minutesToAdd = (_hour + minute) - (tmpHour + tmpMinute);
            Log.d("AlarmExample", "Need to add " + minutesToAdd + " minutes");
            cal.add(Calendar.MINUTE, minutesToAdd);


            cal.set(Calendar.SECOND, 0);
            cal.set(Calendar.MILLISECOND, 0);

..。

//alarmmanager

            AlarmManager amanag = (AlarmManager) getSystemService(ALARM_SERVICE);
            amanag .set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);

ここで問題があります:午前12:00から午前12:59までの時間を選択すると、 _hour * =(_hour + 24)* 60; ボタンをタッチするとすぐにアラームが鳴ります。

_hour =(_hour + 24)* 60; *に変更しようとしましたが、機能しませんでした。

これを信頼できるものにする方法を知っていますか?

よろしくお願いいたします。Wolfen

4

1 に答える 1

0
AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);     

    Intent intent = new Intent(this, OnAlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1, intent, 0);               
    Calendar timeOff = Calendar.getInstance();  
//time 12.19AM
    timeOff.set(Calendar.HOUR_OF_DAY, 0);
    timeOff.set(Calendar.MINUTE, 19);
    timeOff.set(Calendar.SECOND, 0);      


 alarmMgr.set(AlarmManager.RTC, timeOff.getTimeInMillis(), pendingIntent);

Broadcast reciverを実装してintentに設定するonAlermReciverを使用した後、アラームはOnAlermReciverへの呼び出しをオフにしました

 alarmMgr.set(AlarmManager.RTC, timeOff.getTimeInMillis(), sender);
于 2012-05-30T08:50:19.627 に答える