2016-10-09 3 views
1

Я не понимаю, что это неправильно, но моя тревога работает каждый день, даже если я жёстко номер дня, я понятия не имею, что происходит ...Android - менеджер сигнализации работает каждый день

Intent notificationIntent = new Intent(AddTask.this,CustomBroadcastReceiver.class); 
notificationIntent.putExtra(Intent.EXTRA_UID,newTaskId); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(AddTask.this, newTaskId, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
AlarmManager alarmManager = (AlarmManager)getSystemService(getApplicationContext().ALARM_SERVICE); 

Calendar calendar = Calendar.getInstance(); 
calendar.setTimeInMillis(System.currentTimeMillis()); 
calendar.set(Calendar.HOUR_OF_DAY, hour); 
calendar.set(Calendar.MINUTE, minute); 
calendar.set(Calendar.DAY_OF_WEEK,2); 

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY * 7, pendingIntent); 

сегодня воскресенье, поэтому число дней равно 1, и я написал calendar.set (Calendar.DAY_OF_WEEK, 2); и будильник только что получил тригер, так как я использовал время и минуту этого момента ... Не важно, устанавливаю ли я день № 1 2 3 4 5 или 6 или даже если я создаю несколько диспетчеров аварийных сигналов с одинаковым идентификатором, и каждый из них содержит другие день, который запускается каждый день

ответ

1

Зачем нужна эта линия?

calendar.setTimeInMillis(System.currentTimeMillis()); 

Кроме того, андроид развития documentation рекомендует использовать

setInexactRepeating(int type, long triggerAtMillis, long intervalMillis, PendingIntent operation); 

EDIT: Я подозреваю, что намерение не установлен для создания сигналов тревоги, так что это не создает аварийные сигналы правильно. Может быть, это будет работать:

Intent intent = new Intent(this, AlarmReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, 
intent, PendingIntent.FLAG_ONE_SHOT); 

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
//set repeating alarm here 

Я надеюсь, что ответы на этот вопрос.

+0

он оленья кожа я установить день сигнала тревоги 3 и число на сегодняшний день составляет 1, и это как раз срабатывает. я изменил вещи, как вы сказали – uplnypan

+0

@uplnypan Вы нашли решение? – ItamarG3

+0

Нет, им грустно ... я понятия не имею, что не так, я просто хочу повторить тревогу в указанное время и день недели навсегда, пока будильник не будет удален. – uplnypan

0

Так хорошо, я решил это, для всех, кто хочет создать приложение для сигнализации, подобное этому, вы устанавливаете время и час и дни недели, чтобы вызвать будильник, он работает следующим образом: если сегодня день, который вы выбрали просто установить будильник с этим:

calendar.set(Calendar.HOUR_OF_DAY, hour); 
calendar.set(Calendar.MINUTE, minute); 

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

это единственный способ заставить его работать

Смежные вопросы