AlarmManager не ставиться на длительный период

Ответить
yarik7751
Сообщения: 21
Зарегистрирован: 25 сен 2014, 12:59

AlarmManager не ставиться на длительный период

Сообщение yarik7751 » 14 янв 2015, 14:39

Здравствуйте.
Делаю будильник на Андроид. В общем сохраняю будильники в БД. При каждом запуске будильника нахожу самый ранний и ставлю его. Intent из PendingIntent падает в Receiver и там вызывает Activity. Проблема в том, что будильник успешно ставиться на 5, 10, 15, 30 минут, а на час если поставить, то вылетает ошибка. Логи ошибок я в таком случае посмотреть не могу. Подскажите, в чём тут может быть дело? В какую сторону копать?
Телефон не перезагружаю.

Код метода постановки будильника:

Код: Выделить всё

public static void setAlarm(Context ctx) {
		DB db = new DB(ctx);
		db.open();
		if (db.isRunningClock()) {
			ClockEvent event = db.getNextClock(); //получение самого раннего будильника
			Log.d(LOG, "setAlarm id = " + event.getId());
			//if (event == null) return;
			
			AlarmManager am = (AlarmManager) ctx.getSystemService(ALARM_SERVICE);
			
			Intent intent = new Intent(ctx, Receiver.class);
			intent.setAction("" + event.getTime());
			intent.putExtra("HOUR", event.getHour());
			intent.putExtra("MINUTE", event.getMinute());
			intent.putExtra("TIME", event.getRingTime());
			int[] massRepeat = new int[event.getRepeat().size()]; 
			for (int i = 0; i <massRepeat.length; i++) {
				massRepeat[i] = event.getRepeat().get(i);
			}
			intent.putExtra("REPEAT", massRepeat);
			intent.putExtra("ID", event.getId());
			
			PendingIntent pIntent = PendingIntent.getBroadcast(ctx, 0, intent, 
					PendingIntent.FLAG_CANCEL_CURRENT);
			
			Calendar nowTime = new GregorianCalendar();
			Calendar clockTime = new GregorianCalendar();
			clockTime.set(Calendar.HOUR_OF_DAY, event.getHour());
			clockTime.set(Calendar.MINUTE, event.getMinute());
			clockTime.set(Calendar.SECOND, 0);
			
			if (clockTime.getTimeInMillis() < nowTime.getTimeInMillis()) {
				clockTime.add(Calendar.DAY_OF_YEAR, 1);
			}
			
			Log.d(LOG, 
					clockTime.get(Calendar.HOUR_OF_DAY) + ":" 
							+ clockTime.get(Calendar.MINUTE) + " " + 
							clockTime.get(Calendar.DAY_OF_YEAR) + "/" + 
							clockTime.get(Calendar.MONTH) + "/" + 
							clockTime.get(Calendar.YEAR));
			
				am.set(AlarmManager.RTC_WAKEUP, 
						clockTime.getTimeInMillis(), 
						pIntent);
			
		} else {
			db.close();
			return;
		}
		db.close();
	}

razmus
Сообщения: 82
Зарегистрирован: 26 мар 2013, 10:47

Re: AlarmManager не ставиться на длительный период

Сообщение razmus » 14 янв 2015, 16:27

Подключите телефон, в режиме отладки и смотрите лог, а лучше если позволяет ситуация, переведите время на телефоне после установки будильника и он "крешанет" зазвонит через сколько нужно.
З.Ы.
К тому же можно встроить метрику а в приложение, и данные о ошибках сохранятся.

Ответить