Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 18 окт 2018, 17:04

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 78 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
СообщениеДобавлено: 25 авг 2015, 23:40 

Зарегистрирован: 02 апр 2013, 22:44
Сообщений: 16
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Всем привет, может вопрос не по теме. Но я не нашёл темы , где могу его задать, а данная тема более менее подходит по теме. Итак.
Каким способом можно добавить будильники в системное приложение будильника?Как программно менять звук системного будильника?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 26 авг 2015, 02:27 
Аватар пользователя

Зарегистрирован: 23 ноя 2013, 16:08
Сообщений: 1107
Откуда: Ukraine
Благодарил (а): 31 раз.
Поблагодарили: 175 раз.
В одной строке 4 слова "тема", однако здравствуйте. Насколько я знаю такие приложения на разных девайсах могут отличаться http://stackoverflow.com/a/4281243. Лучше напиши свой.

_________________
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 26 авг 2015, 11:33 

Зарегистрирован: 02 апр 2013, 22:44
Сообщений: 16
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
doter.ua писал(а):
В одной строке 4 слова "тема", однако здравствуйте. Насколько я знаю такие приложения на разных девайсах могут отличаться http://stackoverflow.com/a/4281243. Лучше напиши свой.

Ночью писал) не заметил) по вашему ответу) пример приведённый по ссылке запускает intent будильника , а не добавляет новый будильник ) Ну может и правда лучше свой написать)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 26 авг 2015, 19:17 

Зарегистрирован: 02 апр 2013, 22:44
Сообщений: 16
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
В общем если кому то интересно решение моего вопроса то я разобрался. Ниже приведён кусок кода , который ставит будильник на 22:00.
Код: [ Загрузить ] [ Скрыть ]
  1. Integer hour = 22; 
  2.         Integer minute = 00; 
  3.         Intent NewAlarm = new Intent(AlarmClock.ACTION_SET_ALARM); 
  4.        NewAlarm.putExtra(AlarmClock.EXTRA_HOUR, hour); 
  5.         NewAlarm.putExtra(AlarmClock.EXTRA_MINUTES, minute); 
  6.         NewAlarm.putExtra(AlarmClock.EXTRA_SKIP_UI, true); 
  7.         startActivity(NewAlarm); 

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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 28 авг 2015, 11:21 
Аватар пользователя

Зарегистрирован: 25 авг 2015, 10:54
Сообщений: 51
Благодарил (а): 2 раз.
Поблагодарили: 10 раз.
Добрый день. Урок 119 становится делать сложнее, потому что метод
Код: [ Загрузить ] [ Скрыть ]
  1. void sendNotif(int id, PendingIntent pIntent) { 
  2.     Notification notif = new Notification(R.drawable.ic_launcher, "Notif " 
  3.         + id, System.currentTimeMillis()); 
  4.     notif.flags |= Notification.FLAG_AUTO_CANCEL; 
  5.     notif.setLatestEventInfo(this, "Title " + id, "Content " + id, pIntent); 
  6.     nm.notify(id, notif); 
  7.   } 

отказывается работать - setLatestEventInfo не просто зачёркивает (устаревший), а вообще выделяет красным.

В связи с чем переписал данный метод так:
Код: [ Загрузить ] [ Скрыть ]
  1. void sendNotif(int id, PendingIntent pIntent) { 
  2.     Notification notification = new Notification.Builder(getApplicationContext()) 
  3.                 .setContentTitle("Title " + id) 
  4.                 .setContentText("Content " + id) 
  5.                 .setSmallIcon(R.mipmap.ic_launcher) 
  6.                 .setAutoCancel(true) 
  7.                 .setContentIntent(pIntent) 
  8.                 .getNotification(); 
  9.  
  10.         notificationManager.notify(id, notification); 
  11.   } 

Возможно, кому-то будет полезна эта информация. Я на неё убил часик-полтора ((

_________________
Изображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 26 окт 2015, 13:18 

Зарегистрирован: 08 фев 2013, 15:06
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Подскажите плиз, как прописать receiver ?
у меня не ловит сообщения с секцией :
Код: [ Загрузить ] [ Скрыть ]
  1.         <receiver android:name=".Receiver" 
  2.             android:enabled="true" 
  3.             android:exported="true" > 
  4.         </receiver> 

Нужен intent filter ? Если можно, приведите секцию, плз, а то запутался - вообще тема манифеста интересует, у Вас она почти не освещена - пару ссылок на визард из эклипса и все (


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 26 окт 2015, 18:48 
Аватар пользователя

Зарегистрирован: 23 ноя 2013, 16:08
Сообщений: 1107
Откуда: Ukraine
Благодарил (а): 31 раз.
Поблагодарили: 175 раз.
si001 писал(а):
Подскажите плиз, как прописать receiver ?
у меня не ловит сообщения с секцией :
Код: [ Загрузить ] [ Скрыть ]
  1.         <receiver android:name=".Receiver" 
  2.             android:enabled="true" 
  3.             android:exported="true" > 
  4.         </receiver> 

Нужен intent filter ? Если можно, приведите секцию, плз, а то запутался - вообще тема манифеста интересует, у Вас она почти не освещена - пару ссылок на визард из эклипса и все (


http://developer.alexanderklimov.ru/and ... estXML.php

_________________
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 ноя 2015, 19:58 

Зарегистрирован: 25 янв 2015, 18:57
Сообщений: 42
Благодарил (а): 9 раз.
Поблагодарили: 2 раз.
An-droid писал(а):
Добрый день. Урок 119 становится делать сложнее, потому что метод
Код: [ Загрузить ] [ Скрыть ]
  1. void sendNotif(int id, PendingIntent pIntent) { 
  2.     Notification notif = new Notification(R.drawable.ic_launcher, "Notif " 
  3.         + id, System.currentTimeMillis()); 
  4.     notif.flags |= Notification.FLAG_AUTO_CANCEL; 
  5.     notif.setLatestEventInfo(this, "Title " + id, "Content " + id, pIntent); 
  6.     nm.notify(id, notif); 
  7.   } 

отказывается работать - setLatestEventInfo не просто зачёркивает (устаревший), а вообще выделяет красным.

В связи с чем переписал данный метод так:
Код: [ Загрузить ] [ Скрыть ]
  1. void sendNotif(int id, PendingIntent pIntent) { 
  2.     Notification notification = new Notification.Builder(getApplicationContext()) 
  3.                 .setContentTitle("Title " + id) 
  4.                 .setContentText("Content " + id) 
  5.                 .setSmallIcon(R.mipmap.ic_launcher) 
  6.                 .setAutoCancel(true) 
  7.                 .setContentIntent(pIntent) 
  8.                 .getNotification(); 
  9.  
  10.         notificationManager.notify(id, notification); 
  11.   } 

Возможно, кому-то будет полезна эта информация. Я на неё убил часик-полтора ((


An-droid, спасибо Вам огромное!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 03 ноя 2015, 12:21 

Зарегистрирован: 03 ноя 2015, 12:13
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Никто так и не поднял главный вопрос будильника, хотя "намёк" проскакивал.

Как поддерживать "бесконечный" жизненный цикл повторяющегося будильника?
Речь идёт о случае, если приложение было "убито" в настройках, в списке приложения или чистильщиками памяти или, что самое главное - осью, допустим при нехватке памяти?

Товарищ тут писал про такое на самсунге, но никто на это внимания не обратил.

У меня задача ежедневно запускать определённый код. Если процесс прибит случайно или намеренно. Все будильники убиваются.
Началась такая канитель кажется с Android 3.0 - будильник не живёт без процесса приложения и все будильники убиваются вместе с процессом.

Я же пока сделал запуск будильника из сервиса, который живёт в отдельном процессе от процесса приложения (чтобы памяти меньше жрать), и который по флагам onStartCommand перезапускается в случае необходимости убийства процесса. При загрузке устройства стартует этот сервис, перезапускающий будильник. Будильник в таком случае привязан к процессу сервиса.

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

Или может быть всё не так страшно?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 09 дек 2015, 06:49 

Зарегистрирован: 08 янв 2015, 14:32
Сообщений: 115
Благодарил (а): 6 раз.
Поблагодарили: 5 раз.
накАнецтА пабедил!!!))) корочь повозился достаточно с этой бедой. изучил глубоко и сам урок и форум)

там выше спрашивали..., в общем я пришёл к такой схеме:

есть класс, который ставит будильники. он дёргает системное время и высчитывает соответственно на когда ставить будильники. при повторяющемся интенте проблем никаких - последний вариант установленного будильника срабатывает

есть boot ресивер, который дёргает класс будильников

и вот самое главное: перечитал кучу статей когда и почему падают будильники. вразумительного объяснения я не нашёл, разве что замечено, будильники отпадают на реальных устройствах когда устройство уходит в спячку-просыпается многократно... пишут про самсунги и htc... но суть не в этом.

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

как пишут при таком подходе будильники живут вечно. реализовал. теперь тесчу на выносливость. попробовал поставить будильник с вейкапом на 10 дней вперёд. посмотрим как отработает)

Цитата:
У меня задача ежедневно запускать определённый код. Если процесс прибит случайно или намеренно. Все будильники убиваются.


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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 12 мар 2016, 22:52 

Зарегистрирован: 16 апр 2013, 14:04
Сообщений: 9
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Всем привет.
Есть приложение, где пользователь устанавливает время сработки Alarm Manager, который в свою очередь из ресивера запускает уведомление. Добавил boot Receiver для сработки после перезагрузки. Теперь вопрос:
- Каким способом лучше сохранить установленное пользователем время для запуска Alarm Manager после ребута?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 20 окт 2016, 18:53 

Зарегистрирован: 20 окт 2016, 18:43
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
метод sendNotif пришлось переписать, система не нашла метол setLatestEventInfo

Код: [ Загрузить ] [ Скрыть ]
  1. void sendNotif(int id, PendingIntent pIntent) { нашел тут //http://stackoverflow.com/questions/1207269/sending-a-notification-from-a-service-in-android 
  2.         Notification notif = new Notification.Builder(this) 
  3.                 .setContentTitle("Title " + id) 
  4.                 .setContentText("Content " + id) 
  5.                 .setSmallIcon(R.mipmap.icon) 
  6.                 .setContentIntent(pIntent) 
  7.                 .setAutoCancel(true) 
  8.                 .setContentIntent(pIntent).build(); //добавляем PendingIntent 
  9.         NotificationManager notificationManager = 
  10.                 (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
  11.  
  12.         notificationManager.notify(id, notif);//id должен быть уникальным, чтобы сообщений было несколько 
  13.     } 


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 29 дек 2016, 11:22 

Зарегистрирован: 13 окт 2016, 20:43
Сообщений: 5
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Люди добрые, как же грамотно с API 19 ставить наступление события по точному времени каждый день?
Код: [ Загрузить ] [ Скрыть ]
  1. alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); 
идеально работает для API 16.
Для новых версий пробовал
Код: [ Загрузить ] [ Скрыть ]
  1. alarmManager.setInexactRepeating 
и
Код: [ Загрузить ] [ Скрыть ]
  1. alarmManager.setExactAndAllowWhileIdle 
. Не работает. Вообще не срабатывает, даже с опозданием.
Задача выполнять кое что в 23:59 каждый день, естественно, для все версий ОС.
Кто как решает проблему?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 15 май 2017, 14:01 
Аватар пользователя

Зарегистрирован: 15 май 2017, 11:55
Сообщений: 2
Откуда: Yekaterinburg
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Коллеги, подскажите, в чём косяк?
При касании системного уведомления в баре в лог должны выводится сообщения. Но не выводятся.
Вот код MainActivity.java:
Код: [ Загрузить ] [ Скрыть ]
  1. package com.example.samsung.p1191_pendingintent; 
  2.  
  3. import android.app.AlarmManager; 
  4. import android.app.Notification; 
  5. import android.app.NotificationManager; 
  6. import android.app.PendingIntent; 
  7. import android.content.Context; 
  8. import android.content.Intent; 
  9. import android.os.Build; 
  10. import android.os.Bundle; 
  11. import android.support.annotation.RequiresApi; 
  12. import android.support.v7.app.AppCompatActivity; 
  13. import android.view.View; 
  14.  
  15. public class MainActivity extends AppCompatActivity { 
  16.  
  17.     private NotificationManager nm; 
  18.     private AlarmManager am; 
  19.     private Intent intent1, intent2; 
  20.     private PendingIntent pendingIntent1, pendingIntent2; 
  21.     private String message; 
  22.  
  23.     @Override 
  24.     protected void onCreate(Bundle savedInstanceState) { 
  25.         super.onCreate(savedInstanceState); 
  26.         setContentView(R.layout.activity_main); 
  27.  
  28.         nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
  29.         am = (AlarmManager) getSystemService(ALARM_SERVICE); 
  30.     } 
  31.  
  32.     public void onClickBtn(View view) { 
  33.  
  34.         switch (view.getId()) { 
  35.  
  36.             case R.id.btn1: 
  37.                 intent1 = createIntent(getString(R.string.action_1), getString(R.string.extra_1)); 
  38.                 pendingIntent1 = PendingIntent.getBroadcast(this, 0, intent1, 0); 
  39.  
  40.                 intent2 = createIntent(getString(R.string.action_2), getString(R.string.extra_2)); 
  41.                 pendingIntent2 = PendingIntent.getBroadcast(this, 0, intent2, 0); 
  42.  
  43.                 compare(view.getContext()); 
  44.                 sendNotif(view.getContext(), 1, pendingIntent1); 
  45.                 sendNotif(view.getContext(), 2, pendingIntent2); 
  46.                 break; 
  47.             default: 
  48.                 break; 
  49.         } 
  50.  
  51.     } 
  52.  
  53.     private Intent createIntent(final String action, final String extra) { 
  54.         Intent intent = new Intent(this, Receiver.class); 
  55.         intent.setAction(action); 
  56.         intent.putExtra(getString(R.string.extra), extra); 
  57.         return intent; 
  58.     } 
  59.  
  60.     private void compare(final Context context) { 
  61.         message = "intent 1 == intent 2: " + intent1.filterEquals(intent2); 
  62.         Messager.sendToAllRecipients(context, message); 
  63.         message = "pendingIntent1 == pendingIntent2: " + pendingIntent1.equals(pendingIntent2); 
  64.         Messager.sendToAllRecipients(context, message); 
  65.     } 
  66.  
  67.     @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) 
  68.     private void sendNotif(final Context context, final int id, final PendingIntent pendingIntent) { 
  69.         //Подготовка уведомления в статус-бар 
  70.         //noinspection deprecation 
  71.         Notification notification = new Notification.Builder(context) 
  72.                 //Установка заголовка 
  73.                 .setContentTitle("Notification's title " + id) 
  74.                 //Установка сообщения для статус-бара 
  75.                 .setContentText("Notification's text " + id) 
  76.                 //Установка стикера 
  77.                 .setTicker("Notification's ticker " + id) 
  78.                 //Установка малой иконки 
  79.                 .setSmallIcon(R.mipmap.ic_launcher_round) 
  80.                 //Подключение активити к записи 
  81.                 .setContentIntent(pendingIntent) 
  82.                 //Установка флага, удаляющего уведомление из списка после нажатия 
  83.                 .setAutoCancel(true) 
  84.                 //Только для API не младше №16 
  85. //              .setSubText("The notification's subtext"); 
  86.                 //Создание строки в разворачивающемся списке уведомлений 
  87.                 //noinspection deprecation 
  88.                 .getNotification(); 
  89.         //Отправка уведомления в статус-бар 
  90.         nm.notify(id, notification); 
  91.     } 

Вот код Receiver.java
Код: [ Загрузить ] [ Скрыть ]
  1. package com.example.samsung.p1191_pendingintent; 
  2.  
  3. import android.content.BroadcastReceiver; 
  4. import android.content.Context; 
  5. import android.content.Intent; 
  6.  
  7. /** 
  8. * Created by samsung on 12.05.2017. 
  9. */ 
  10.  
  11. public class Receiver extends BroadcastReceiver { 
  12.  
  13.     @Override 
  14.     public void onReceive(Context context, Intent intent) { 
  15.         String message = context.getString(R.string.receiver) 
  16.                 + " " + context.getString(R.string.on_receive); 
  17.         Messager.sendToAllRecipients(context, message); 
  18.         message = context.getString(R.string.action_) + " " + intent.getAction(); 
  19.         Messager.sendToAllRecipients(context, message); 
  20.         message = context.getString(R.string.extra_) + " " 
  21.                 + intent.getStringExtra(context.getString(R.string.extra)); 
  22.         Messager.sendToAllRecipients(context, message); 
  23.     } 

Это код класса Messager.java
Код: [ Загрузить ] [ Скрыть ]
  1. package com.example.samsung.p1191_pendingintent; 
  2.  
  3. import android.content.Context; 
  4. import android.util.Log; 
  5. import android.widget.Toast; 
  6.  
  7. /** 
  8. * Created by samsung on 12.05.2017. 
  9. */ 
  10.  
  11. public class Messager { 
  12.  
  13.     private final static String LOG_TAG = "myLogs"; 
  14.  
  15.     public static final void sendToAllRecipients(final Context context, final String message) { 
  16.         Log.d(LOG_TAG, message); 
  17.         Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); 
  18.     } 
  19.  
  20.     public static final void sendToOnlyLog(final String message) { 
  21.         Log.d(LOG_TAG, message); 
  22.     } 

_________________
В чём-то всегда начинающий,
Что-то всегда знающий,
Где-то неуспевающий.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 15 май 2017, 16:02 
Аватар пользователя

Зарегистрирован: 15 май 2017, 11:55
Сообщений: 2
Откуда: Yekaterinburg
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Naidovich писал(а):
метод sendNotif пришлось переписать, система не нашла метол setLatestEventInfo

Код: [ Загрузить ] [ Скрыть ]
  1. void sendNotif(int id, PendingIntent pIntent) { нашел тут //http://stackoverflow.com/questions/1207269/sending-a-notification-from-a-service-in-android 
  2.         Notification notif = new Notification.Builder(this) 
  3.                 .setContentTitle("Title " + id) 
  4.                 .setContentText("Content " + id) 
  5.                 .setSmallIcon(R.mipmap.icon) 
  6.                 .setContentIntent(pIntent) 
  7.                 .setAutoCancel(true) 
  8.                 .setContentIntent(pIntent).build(); //добавляем PendingIntent 
  9.         NotificationManager notificationManager = 
  10.                 (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
  11.  
  12.         notificationManager.notify(id, notif);//id должен быть уникальным, чтобы сообщений было несколько 
  13.     } 

С учётом испльзования библиотеки android.support.v4.app код будет выглядеть так:
Код: [ Загрузить ] [ Скрыть ]
  1.     private void sendNotif(final Context context, final int id, final PendingIntent pendingIntent) { 
  2.         //Подготовка уведомления в статус-бар 
  3.         Notification notification = new NotificationCompat.Builder(context) 
  4.                 //Установка заголовка 
  5.                 .setContentTitle("Notification's title " + id) 
  6.                 //Установка сообщения для статус-бара 
  7.                 .setContentText("Notification's text " + id) 
  8.                 //Установка стикера 
  9.                 .setTicker("Notification's ticker " + id) 
  10.                 //Установка времени сообщения 
  11.                 .setWhen(System.currentTimeMillis()) 
  12.                 //Установка малой иконки 
  13.                 .setSmallIcon(R.mipmap.ic_launcher_round) 
  14.                 //Подключение активити к записи 
  15.                 .setContentIntent(pendingIntent) 
  16.                 //Установка флага, удаляющего уведомление из списка после нажатия 
  17.                 .setAutoCancel(true) 
  18.                 //Только для API не младше №16 
  19. //              .setSubText("The notification's subtext"); 
  20.                 //Создание строки в разворачивающемся списке уведомлений 
  21.                 //noinspection deprecation 
  22.                 .build(); 
  23.         //Отправка уведомления в статус-бар 
  24.         nm.notify(id, notification); 
  25.     } 

_________________
В чём-то всегда начинающий,
Что-то всегда знающий,
Где-то неуспевающий.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 фев 2018, 19:41 

Зарегистрирован: 03 янв 2014, 14:28
Сообщений: 32
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Коллеги подскажите, если я из уведомления вызывают некую активность, по нажатию кнопки выполняю в этой активности некую деятельность и вызываю метод finish(). Активность закрывается, но остается в стеке, установка флагов при создании Intent ни как не влияет на это, как я понимаю, или мне кажется, что вызываемая активность становиться как бы главной корневой активностью приложения и не реагирует на флаги, на которые реагируют дочерние активности вызываемые из главной активности. Но мне надо добиться результата, когда пользователь нажал кнопку и активность ушла навсегда, ему не надо возвращаться потом к этой активности (как пример, диалоговые окна, нажал на ок и в стеке не должно быть ничего).
Возможно, есть флаги которые позволяют открыть активность из уведомления в нужном режиме?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 фев 2018, 20:04 

Зарегистрирован: 03 янв 2014, 14:28
Сообщений: 32
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Сам спросил, сам нашел решение...
Если прописать в манифесте для активити вот такое вот

android:excludeFromRecents="true"

то работает как мне надо


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 27 мар 2018, 16:01 

Зарегистрирован: 17 сен 2013, 19:46
Сообщений: 9
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Ребята не срабатывает будильник SDK >= 23
При старте сервиса делаю
Код: [ Загрузить ] [ Скрыть ]
  1. startForeground(1002, notification); 
  2.         PowerManager.WakeLock wl1; 
  3.             PowerManager pm = (PowerManager)this.getSystemService( 
  4.                 Context.POWER_SERVICE); 
  5.         wl = pm.newWakeLock( 
  6.                 PowerManager.FULL_WAKE_LOCK, "TAG1"); 
  7.         wl.acquire(); 

потом создаю Alarm с проверкой версии SDK

Код: [ Загрузить ] [ Скрыть ]
  1. if (Build.VERSION.SDK_INT >= 23) {// Wakes up the device in Doze Mode 
  2.   alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, t, amPIntent); 
  3. } else if (Build.VERSION.SDK_INT >= 19) {// Wakes up the device in Idle Mode 
  4.   alarmManager.setExact(AlarmManager.RTC_WAKEUP, t, amPIntent); 
  5. } else {// Old APIs 
  6.   alarmManager.set(AlarmManager.RTC_WAKEUP, t, amPIntent); 

Когда Alarm срабатывает опять ставлю на повтор.
Если подключена зарядка все нормально срабатывает, без зарядки Alarm в течении 2-х минут срабатывает, потом останавливает до включения телефона либо когда прилетит уведомление в статус бар от других приложений потом опять перестаёт срабатывать.

В манифест добавил:
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />

При запуске приложения сделал запрос
Код: [ Загрузить ] [ Скрыть ]
  1.         if (Build.VERSION.SDK_INT >= 23) 
  2.             if (!pm.isIgnoringBatteryOptimizations(getPackageName()) ){ 
  3.  
  4.                 Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, 
  5.                         Uri.parse("package:" + getPackageName())); 
  6.                 startActivity(intent);     
  7.             } 

При подтверждении добавлении в список разрешенных приложения в итоге там нет, хотя при повторном запросе разрешения pm.isIgnoringBatteryOptimizations(getPackageName() возвращает true - при этом в списке разрешенных нет. Добавляю приложение в список вручную и все ровно засыпает...


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 78 ]  На страницу Пред.  1, 2, 3, 4

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB