Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Будильник странно опаздывает / 25 сообщений из 30, страница 1 из 2
27.03.2015, 08:21
    #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
27.03.2015, 08:42
    #38918383
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будильник странно опаздывает
Тут есть уже пара подобных тем http://www.sql.ru/forum/afsearch.aspx?s=?????????&submit=?????&bid=76

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


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

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


отлично, постараюсь изучить, но сейчас еще я являюсь новичком, много что остается непонятно
...
Рейтинг: 0 / 0
27.03.2015, 09:44
    #38918460
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будильник странно опаздывает
Помогите пожалуйста решить проблему!
...
Рейтинг: 0 / 0
27.03.2015, 09:50
    #38918469
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будильник странно опаздывает
nikompа можете прокомментировать код
Могу. Добавить только разрешение:
nikompдобавил разрешения в манифест android.permission.WAKE_LOCK
это еще не значит, что оно само по себе начнет работать. Именно тот код и задействует полученное право.
...
Рейтинг: 0 / 0
27.03.2015, 10:15
    #38918506
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будильник странно опаздывает
wadman,
а где его конкретно нужно использовать, в сервисе, в активити или где-то еще?
...
Рейтинг: 0 / 0
27.03.2015, 10:34
    #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
27.03.2015, 10:44
    #38918568
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будильник странно опаздывает
...
Рейтинг: 0 / 0
27.03.2015, 10:57
    #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
27.03.2015, 11:04
    #38918620
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будильник странно опаздывает
правильно я понимаю, что метод acquireCpuWakeLock будит процессор когда срабатывает сервис
метод acquireScreenCpuWakeLock зажигает экран
метод releaseCpuLock() возвращает все как было

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

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

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

прокомментируйте пожалуйста.
...
Рейтинг: 0 / 0
27.03.2015, 13:10
    #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
27.03.2015, 13:26
    #38918969
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будильник странно опаздывает
nikomp, это (захватывать экран и процессор) нужно делать в том месте, где происходит срабатывание будильника/напоминалки.
...
Рейтинг: 0 / 0
27.03.2015, 13:35
    #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
27.03.2015, 14:27
    #38919090
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будильник странно опаздывает
я правильно понимаю? разжуйте пожалуйста, а то я честно говоря немного запутался
...
Рейтинг: 0 / 0
30.03.2015, 08:22
    #38920623
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будильник странно опаздывает
Использование

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

в OnStartCommand не принесло никаких результатов, буду копать дальше, если кто что-то может подсказать, пожалуйста помогите.
...
Рейтинг: 0 / 0
30.03.2015, 09:16
    #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
30.03.2015, 09:49
    #38920719
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Будильник странно опаздывает
wadman,

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


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