1

У меня есть службы .. Я должен генерировать уведомление на время, прошедшее с выбором времени .. Он работает с System.currentTimeMillis(), но если я беру время от времени подборщикаAlarmManager не работает с выбором времени

Вот время выбор, который я показываю на щелчку TextView:

tv.setOnClickListener(new OnClickListener() { 
    @Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    mcurrentTime = Calendar.getInstance(); 
    int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY); 
    int minute = mcurrentTime.get(Calendar.MINUTE); 
    TimePickerDialog mTimePicker; 
    mTimePicker = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() { 
    @Override 
public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) { 
    timePicker.setIs24HourView(true); 
    //tv.setText(selectedHour + " : " + selectedMinute); 
    mcurrentTime.set(Calendar.HOUR,selectedHour); 
    mcurrentTime.set(Calendar.MINUTE,selectedMinute); 
    mcurrentTime.set(Calendar.SECOND,0); 
    // HERE I AM GETTING TIME FROM TIMEPICKER 
    l= mcurrentTime.getTimeInMillis(); 
    tv.setText(String.valueOf(l)); 
    } 
}, hour, minute, true);//Yes 24 hour tim 
    mTimePicker.setTitle("Select Time"); 
    mTimePicker.show(); 

    } 
}); 

Вот код кнопки мыши, на этом нажмите я запуск службы:

Intent myIntent = new Intent(MainActivity.this, MyReceiver.class); 
int randomPIN = (int)(Math.random()*9000)+1000; 
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, randomPIN, myIntent,pendingIntent.FLAG_ONE_SHOT); 
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
//HERE I am entering the time from time picker 
alarmManager.set(AlarmManager.RTC, l , pendingIntent); 
+0

положить некоторые журналы помогут, если вы получаете в заданное время или нет. – codevscolor

ответ

2

Заменить следующим образом:

mcurrentTime.set(Calendar.HOUR, selectedHour); 

с этим:

mcurrentTime.set(Calendar.HOUR_OF_DAY, selectedHour); 

Calendar.HOUR строго в течение 12 часов.

По Documentation

номер поля для получения и установки с указанием часа утром или днем ​​ . ЧАС используется для 12-часового такта (0 - 11). Полдень и полночь представлены 0, а не 12, например, в 10: 04: 15,250 П.М. ЧАС 10.

+1

Благодарение dhaval .. спас мою жизнь :) :) – Prakhar

1

Попробуйте setExact вместо set.

Существует абзац в set Javadoc:

Примечание: Начиная с API 19, время запуска передается этому методу рассматривается как неточное: сигнал не будет доставлен до этого времени, но может быть отложенных и доставленных спустя некоторое время. ОС будет использовать эту политику, чтобы «пакетные» сигналы тревоги были объединены во всей системе, сводя к минимуму количество раз, когда устройство должно «просыпаться» и минимизировать использование батареи. В общем случае аварийные сигналы, запланированные в ближайшем будущем, не будут отложены до тех пор, пока тревога запланирована далеко в будущем.

+0

Это не объясняет, почему он работает при установке времени вручную без 'TimePickerDialog' в качестве претензий. –