Android AlarmManager AM和PM差异

Android AlarmManager AM和PM差异,android,timezone,alarmmanager,Android,Timezone,Alarmmanager,我正在创建报警应用程序。我正在使用下面的代码。它工作得很好,但它在错误的时间启动警报。它不区分am和pm示例之间的报警;如果我在设备中设置了上午10点和当前晚上10点的警报,那么我的警报活动也会开始。我怎样才能解决这个问题,谢谢 Calendar timeCalendar = Calendar.getInstance(); timeCalendar.setTimeInMillis(System.currentTimeMillis()); @Override public void onTim

我正在创建报警应用程序。我正在使用下面的代码。它工作得很好,但它在错误的时间启动警报。它不区分am和pm示例之间的报警;如果我在设备中设置了上午10点和当前晚上10点的警报,那么我的警报活动也会开始。我怎样才能解决这个问题,谢谢

Calendar timeCalendar = Calendar.getInstance();
timeCalendar.setTimeInMillis(System.currentTimeMillis());


@Override
public void onTimeSet(RadialPickerLayout radialPickerLayout, int i, int i2) {
    timeCalendar.set(Calendar.MINUTE, i2);
    timeCalendar.set(Calendar.HOUR_OF_DAY, i);

    if (i == 0) {
        timeCalendar.set(Calendar.AM_PM,0);
    } else if (i < 12) {
        timeCalendar.set(Calendar.AM_PM,0);
    } else if (i == 12) {
        timeCalendar.set(Calendar.AM_PM,1);
    } else {
        timeCalendar.set(Calendar.AM_PM,1);
    }
    updateLabel();
}

享受完整的代码

在按钮单击或您想设置报警的任何位置调用openTimePickerDialog()

private void openTimePickerDialog(boolean is24r) {
        Calendar calendar = Calendar.getInstance();

        timePickerDialog = new TimePickerDialog(MainActivity.this,
                onTimeSetListener, calendar.get(Calendar.HOUR_OF_DAY),
                calendar.get(Calendar.MINUTE), is24r);
        timePickerDialog.setTitle("Set Alarm Time");

        timePickerDialog.show();

    }
这是计时器侦听器

 private void setAlarm(Calendar targetCal) {

        textAlarmPrompt.setText("\n\n***\n" + "Alarm is set "
                + targetCal.getTime() + "\n" + "***\n");

        Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(
                getBaseContext(), RQS_1, intent, 0);
        AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(),
                pendingIntent);

    }  
OnTimeSetListener OnTimeSetListener=新建OnTimeSetListener(){

Reciver.java

public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context k1, Intent k2) {
        // TODO Auto-generated method stub
         Toast.makeText(k1, "Alarm received!", Toast.LENGTH_LONG).show();

    }

}
在清单中:

<receiver android:name=".AlarmReceiver" android:process=":remote" />


为什么要在日历中再次设置AM/PM,通过执行此时间日历。设置(calendar.HOUR\u OF\u DAY,i),您已经将时间设置为一天中的特定时间,例如1点或19点?非常感谢,我用您的代码解决了这个问题。✓✓我试过了,但是我没有足够的声誉来提升自己。再次感谢你的帮助。好的,对不起,我是新来的:)是的,没问题,谢谢
public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context k1, Intent k2) {
        // TODO Auto-generated method stub
         Toast.makeText(k1, "Alarm received!", Toast.LENGTH_LONG).show();

    }

}
<receiver android:name=".AlarmReceiver" android:process=":remote" />