0

ユーザー定義の時間に毎日実行されるアプリ用の新しいスケジューラを作成しようとしています。以下のコードは次のとおりです。問題は、スケジューラが設定された時間に実行されていないことです.これを行う方法を提案してください

 private void setAlarm(String targetCal){
    Toast.makeText(MainActivity.this,"Alarm Set", Toast.LENGTH_LONG).show();
    String[] Time=targetCal.split(":");
    Calendar timeOff = Calendar.getInstance();
    Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);

    //int days = Calendar.SUNDAY + (7 - timeOff.get(Calendar.DAY_OF_WEEK)); // how many days until Sunday
    timeOff.set(Calendar.HOUR,Integer.valueOf(Time[0].trim()));
    timeOff.set(Calendar.MINUTE,Integer.valueOf(Time[1].trim()));
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, timeOff.getTimeInMillis(), alarmManager.INTERVAL_DAY , pendingIntent);

}
4

2 に答える 2

2

このコードを試してください

    Intent i = new Intent("in.servicealarmdemo.demoactivity");

/** Creating a Pending Intent */
PendingIntent operation = PendingIntent.getActivity(getBaseContext(), count+2, i, Intent.FLAG_ACTIVITY_NEW_TASK);

/** Getting a reference to the System Service ALARM_SERVICE */
AlarmManager alarmManager = (AlarmManager) getBaseContext().getSystemService(ALARM_SERVICE);
/** Creating a calendar object corresponding to the date and time set by the user */
GregorianCalendar calendar = new GregorianCalendar(pYear,pMonth,pDay,pHour,pMinute);

/** Converting the date and time in to milliseconds elapsed since epoch */
long alarm_time = calendar.getTimeInMillis();

/** Setting an alarm, which invokes the operation at alart_time */
alarmManager.set(AlarmManager.RTC_WAKEUP  , alarm_time , operation);

/** Alert is set successfully */
Toast.makeText(getBaseContext(), "Alarm is set successfully",Toast.LENGTH_SHORT).show();

または、このチュートリアルを試すこともできます

http://wptrafficanalyzer.in/blog/setting-up-alarm-using-alarmmanager-and-waking-up-screen-and-unlocking-keypad-on-alarm-goes-off-in-android/

于 2013-04-18T07:36:08.383 に答える
0

変数の設定によって問題が発生する可能性があります。代わりに、現在の時刻と新しい値の差を見つけてから、次のようにします。

timeOff.add(Calender.HOUR,diff);
于 2013-04-18T07:38:10.080 に答える