powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Будильник странно опаздывает
25 сообщений из 30, страница 1 из 2
Будильник странно опаздывает
    #38918372
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день! пытаюсь написать свою напоминалку. Устанавливаю будильник следующим образом:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
 Calendar cal = null;
		        try {

		            // преобразование строки в дату
		              SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");
		              
		              String datestr = date+" "+time;
		              //Log.d(LOG_TAG, "дата_____ "+datestr);
		              //Date date3 = dateFormat.parse("26/01/2015 07:26");
		              Date date3 = dateFormat.parse(datestr);
		              //Log.d(LOG_TAG, "дата_____ "+date3);
		              cal = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault());
		              cal.setTime(date3);

		          } catch (ParseException ex) {

		          } 
			    
		        Calendar cal2 = null;
		        cal2 = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault()); 
		        cal2.set(cal.get(cal.YEAR), cal.get(cal.MONTH), cal.get(cal.DAY_OF_MONTH), cal.get(cal.HOUR_OF_DAY), cal.get(cal.MINUTE), 0);
		        
		        Log.d(LOG_TAG, "получаем календарь "+cal2);
		        
 
			    // Устанавливаем будильник
			    am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
			    Intent intent = new Intent(this, MyService.class);
			    Log.d(LOG_TAG, "напоминание "+note1);
			    intent.putExtra("myNote",note1);
			    intent.putExtra("myAlarmID", inidAlarm);
			    PendingIntent pIntent = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
			    // Напоминание
			    Log.d(LOG_TAG, "тип "+stTypeNotif);
			    if (stTypeNotif.equals("Напоминание")) {
			    	if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) // Используется для работы в разных версиях
			    	{
			    		am.set(AlarmManager.RTC_WAKEUP, cal2.getTimeInMillis(), pIntent);
			    	}
			    	else
			    	{
			    		am.setExact(AlarmManager.RTC_WAKEUP, cal2.getTimeInMillis(), pIntent);
			    	}
			    }



Если устанавливаю будильник на короткий срок, все срабатывает отлично. Когда ставлю часов на 6-12 будильник звенит на несколько минут позже.
Сначала думал что он не может пробудить телефон из спячки, добавил разрешения в манифест android.permission.WAKE_LOCK - не помогло, потом подумал, что может это связано как-то с версией АПИ, добавил проверку Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT - не помогло. Что можете посоветовать, в какую сторону копать? или может это глюк?
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918383
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут есть уже пара подобных тем http://www.sql.ru/forum/afsearch.aspx?s=?????????&submit=?????&bid=76

Могу еще добавить, что можно поковыряться в исходниках встроенного будильника.
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918395
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman, спасибо за ссылки, у меня ситуация очень похожа на http://www.sql.ru/forum/1123172/setexact?hl=?????????
но к сожаления в приведенной теме не понятно чем все решилось.
Код: java
1.
2.
final WakeLock wl = AlarmAlertWakeLock.createPartialWakeLock(context);
wl.acquire();


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

wadmanМогу еще добавить, что можно поковыряться в исходниках встроенного будильника.


а где их достать?
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918398
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikompа где их достать?
Тут есть закрепленная тема: с чего начать. Там много интересного, на мой взгляд. :)
http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android/android-apps/
nikompно к сожаления в приведенной теме не понятно чем все решилось.
Это у автора темы нужно уточнять.
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918406
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,
а можете прокомментировать код
Код: java
1.
2.
final WakeLock wl = AlarmAlertWakeLock.createPartialWakeLock(context);
wl.acquire();


все таки вы его его привели в указанной выше теме :)

wadmanТам много интересного, на мой взгляд.


отлично, постараюсь изучить, но сейчас еще я являюсь новичком, много что остается непонятно
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918460
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите пожалуйста решить проблему!
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918469
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikompа можете прокомментировать код
Могу. Добавить только разрешение:
nikompдобавил разрешения в манифест android.permission.WAKE_LOCK
это еще не значит, что оно само по себе начнет работать. Именно тот код и задействует полученное право.
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918506
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,
а где его конкретно нужно использовать, в сервисе, в активити или где-то еще?
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918547
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при попытки использовать AlarmAlertWakeLock в onCreate() моего сервиса, выдается ошибка Невозможно разрешить AlarmAlertWakeLock

Код: java
1.
2.
3.
4.
5.
6.
@Override
  public void onCreate() {
	AlarmAlertWakeLock.acquire(this);  
    super.onCreate();
    nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
  }
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918568
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918593
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman, ага, спасибо!
ввел в свое приложение класс AlarmAlertWakeLock, только опять непонятка у AlarmAlertWakeLock нет простого метода acquire, пришлось использовать тот который есть

Код: java
1.
2.
3.
4.
5.
6.
@Override
  public void onCreate() {
	AlarmAlertWakeLock.acquireCpuWakeLock(this);  
    super.onCreate();
    nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
  }



как тогда работает этот код

Код: java
1.
2.
final WakeLock wl = AlarmAlertWakeLock.createPartialWakeLock(context);
wl.acquire();



откуда метод acquire() ?
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918620
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правильно я понимаю, что метод acquireCpuWakeLock будит процессор когда срабатывает сервис
метод acquireScreenCpuWakeLock зажигает экран
метод releaseCpuLock() возвращает все как было

так или нет?
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918635
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikompкак тогда работает этот код
http://developer.android.com/intl/ru/reference/android/os/PowerManager.WakeLock.html
nikompтак или нет?
Примерно так, я не разбирался до конца, т.к. мне не нужна была высокая точность.
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918662
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,
это как то влияет на сам телефон, нагрузка на батарею? короче, это не опасно? )
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918689
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikompкороче, это не опасно? )
Телефон не взрывается при использовании будильника?
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918709
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,
ну просто, батарея не будет садиться? вообще приходилось иметь дело с такими методами, ...cpu...?
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918738
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikompну просто, батарея не будет садиться?
Видимо намек был не понят... Будильник ведь использует эти методы и как-то я не встречал жалобы на его работу.

Главное сделать возврат в изначальное состояние гарантированным.
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918789
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,
ну вроде как более или менее понятно, осталось только непонятно одно. Правильно ли я его использую в onCreate() моего сервиса? может нужно в onStartCommand использовать?

когда вообще будет вызван метод onCreate() моего сервиса, когда придет время заданное в будильнике? ведь так?
если так, тогда чем мне может помочь WakeLock, если уже сам сервис создается с опозданием.

прокомментируйте пожалуйста.
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918943
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, еще вопрос у меня версия android 4.0.3 должно ли все о чем говорим работать на ней?
попробовал запустить приложение с вызовом

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
  @Override
  public void onCreate() {
	//final WakeLock wl = AlarmAlertWakeLock.createPartialWakeLock(this); 
	//  wl.acquire();
	AlarmAlertWakeLock.acquireCpuWakeLock(this);  
	AlarmAlertWakeLock.acquireScreenCpuWakeLock(this);
    super.onCreate();
    nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
  }



вообще ничего не понял, экран не загорелся, будильник прозвенел, но я ставил его всего на час
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918969
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikomp, это (захватывать экран и процессор) нужно делать в том месте, где происходит срабатывание будильника/напоминалки.
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38918990
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

я так понимаю, что конкретные действия происходят на onStartCommand сервиса вот его код

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
public class MyService extends Service {
  NotificationManager nm;
  DB db;
  
  @Override
  public void onCreate() {
	//final WakeLock wl = AlarmAlertWakeLock.createPartialWakeLock(this); 
	//  wl.acquire();
    super.onCreate();
    nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
  }

  public int onStartCommand(Intent intent, int flags, int startId) {

	AlarmAlertWakeLock.acquireCpuWakeLock(this);  
	AlarmAlertWakeLock.acquireScreenCpuWakeLock(this);
	  
	Log.d("myLogs", "MyService onStartCommand");  
	String note2 = intent.getStringExtra("myNote");  
	int inidAlarm=intent.getIntExtra("myAlarmID", 0);
	
    sendNotif(inidAlarm, note2);
    return super.onStartCommand(intent, flags, startId);
  }
  
  void sendNotif(int id, String note2) {
    // 1-я часть
    Notification notif = new Notification(R.drawable.ic_launcher, "Внимание!", 
      System.currentTimeMillis());
    
    
     // 3-я часть
    Intent intent = new Intent(this, MainActivity.class);
    intent.putExtra(MainActivity.Note, note2);
    intent.putExtra("myAlarmID", id);
    PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    
    // 2-я часть
    notif.setLatestEventInfo(this, "Событие", note2, pIntent);
    
    // ставим флаг, чтобы уведомление пропало после нажатия
    notif.flags |= Notification.FLAG_AUTO_CANCEL;
    notif.flags |= Notification.FLAG_INSISTENT;
    //notif.defaults |= Notification.DEFAULT_SOUND; // звук по-умолчанию, такой же как для смс
    
    Uri ringURI = Uri.parse("android.resource://com.example.myreminder/"+R.raw.notification_25) ;
    notif.sound = ringURI; 
    
    // отправляем
    nm.notify(id, notif);
    
    stopSelf(); // Останавливаем сервис
    AlarmAlertWakeLock.releaseCpuLock();
  }
  
  public IBinder onBind(Intent arg0) {
    return null;
  }
}
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38919090
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я правильно понимаю? разжуйте пожалуйста, а то я честно говоря немного запутался
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38920623
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использование

AlarmAlertWakeLock.acquireCpuWakeLock(this);
AlarmAlertWakeLock.acquireScreenCpuWakeLock(this);

в OnStartCommand не принесло никаких результатов, буду копать дальше, если кто что-то может подсказать, пожалуйста помогите.
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38920676
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Куда-то не туда тебя занесло... Нужен рисивер и работа с ним, а не с сервисом.

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/5.0.2_r1/com/android/deskclock/AlarmInitReceiver.java?av=f
...
Рейтинг: 0 / 0
Будильник странно опаздывает
    #38920719
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

а в чем принципиальная разница, да изучая ссылки понимаю, что большинство примеров с ресивером, хотя вот тут
http://startandroid.ru/ru/uroki/vse-uroki-spiskom/164-urok-99-service-uvedomlenija-notifications.html
показано как сделать уведомление используя сервис, ну, а я запускал этот сервис по будильнику, в чем ошибка?
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Android [игнор отключен] [закрыт для гостей] / Будильник странно опаздывает
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]