Android使ALarmManager在特定时间运行&;每天补餐
我有一个android应用程序。我想让闹钟在特定时间运行,比如上午10:30和晚上7:30,每天重复,我搜索了很多次,但没有任何东西是工作> \n 我尝试了以下代码:Android使ALarmManager在特定时间运行&;每天补餐,android,alarmmanager,Android,Alarmmanager,我有一个android应用程序。我想让闹钟在特定时间运行,比如上午10:30和晚上7:30,每天重复,我搜索了很多次,但没有任何东西是工作> \n 我尝试了以下代码: //var public int AM_IS_ON = 1288, PM_IS_ON = 98760, am_hr, pm_hr; private String am; private AlarmManager alarmManager; private SharedPreferences sharedPrefs; private
//var
public int AM_IS_ON = 1288, PM_IS_ON = 98760, am_hr, pm_hr;
private String am;
private AlarmManager alarmManager;
private SharedPreferences sharedPrefs;
private PendingIntent pendingIntent;
//////after OnCreate() Method//////
sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
am_hr = Integer.parseInt((sharedPrefs.getString("am_hr", "7")));
pm_hr = Integer.parseInt((sharedPrefs.getString("pm_hr", "5")));
boolean AM = sharedPrefs.getBoolean("isAM", true);
boolean PM = sharedPrefs.getBoolean("isPM", true);
boolean on_or_off = sharedPrefs.getBoolean("alarm_on_or_off", false);
if (on_or_off) {
if (AM) {
SetAlarm(am_hr, AM_IS_ON, PM_IS_ON);
} else {
Toast.makeText(MainActivity.this, R.string.alarm_is_off, Toast.LENGTH_SHORT).show();
}
public void SetAlarm(int hr, int am_uid, int pm_uid) {
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
am = "AM";
Log.e("MyActivity", "Alarm On");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hr);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Intent myIntent = new Intent(MainActivity.this, AlarmReceiver.class);
if (am.equals("AM")) {
am = "PM";
Log.e("MyActivity", "AM On");
calendar.set(Calendar.AM_PM, Calendar.AM);
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, am_uid, myIntent, Intent.FILL_IN_ACTION);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
if (am.equals("PM")) {
Log.e("MyActivity", "PM On");
calendar.set(Calendar.AM_PM, Calendar.PM);
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, pm_uid, myIntent, Intent.FILL_IN_ACTION);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
}
&这是我的接受者:
public class AlarmReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
//this will update the UI with message
MainActivity inst = MainActivity.instance();
//this will sound the alarm tone
//this will sound the alarm once, if you wish to
//raise alarm in loop continuously then use MediaPlayer and setLooping(true)
Uri alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
if (alarmUri == null) {
alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
}
Ringtone ringtone = RingtoneManager.getRingtone(context, alarmUri);
ringtone.play();
//this will send a notification message
ComponentName comp = new ComponentName(context.getPackageName(),
AlarmService.class.getName());
startWakefulService(context, (intent.setComponent(comp)));
setResultCode(Activity.RESULT_OK);
}
}
问题是当我打开MainActivity时,SetAlarm()方法>>会触发PM&AM警报。
我想要的是在指定的时间内设置闹钟。我怎样才能设置闹钟