Вызов Android webRTC в службе переднего плана

Я создаю приложение для Android (код Java) с функцией аудиовызова. Мне удалось заставить его работать с помощью фреймворка webRTC. Я хотел, чтобы мой звуковой вызов вел себя как WhatsApp и Messenger, где эти приложения продолжают звуковой вызов, даже если пользователь останавливает приложение из истории приложений или начинает использовать другое приложение.

Итак, я решил перенести код webRTC из Activity в Foreground Service. My Audio Call Activity обрабатывает пользовательский интерфейс, отображая фотографию друга, имя, таймер вызова ... Поэтому мне пришлось установить связь между моей Activity и моей службой Foreground через привязку и отправку объекта android.os.Message.

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

Моя проблема возникла, когда я использовал устройство Xiaomi (redmi note7), если я убью приложение, аудиовызов прекратится, потому что моя служба переднего плана будет перезапущена. Даже после включения "Автозапуска" в настройках.

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

Итак, вопрос: как предотвратить перезапуск Foreground Service на устройствах Xiaomi, Huawei, Oppo ...?

Как и в случае с WhatsAPP, Messenger, Instagram и другими.


person OussaMah    schedule 29.10.2019    source источник
comment
Просмотрите эту ссылку. В нем объясняется, что делать, чтобы поддерживать работу вашего сервиса у каждого поставщика.   -  person Tomer Petel    schedule 29.10.2019
comment
Спасибо за ваш ответ. Тогда ссылка, которой вы поделились, предоставляет отличную информацию, которая будет лучше известна разработчикам. К сожалению, я не смог найти решение своей проблемы. Я начал думать, что сейчас нужно сдаться. Эти поставщики вносят в белый список WhatsApp, Messenger, Viber и другие известные приложения. Но для наших приложений это невозможно.   -  person OussaMah    schedule 29.10.2019
comment
Хорошо знать. Размещение в качестве ответа.   -  person Tomer Petel    schedule 29.10.2019


Ответы (1)


Это сложный вопрос, поскольку он действительно зависит от производителя. Есть сайт, который документирует и ранжирует поставщиков в зависимости от того, «насколько плохо» они обрабатывают услуги и процессы. С сайта :

... В Android 6 (Marshmallow) Google представил режим Doze для базового Android, пытаясь унифицировать экономию заряда батареи на различных телефонах Android. К сожалению, производители (например, Xiaomi, Huawei, OnePlus или даже Samsung ..), похоже, не поймали этого мяча, и у всех есть свои собственные устройства для экономии заряда батареи, обычно очень плохо написанные, экономящие батарею только на поверхности с побочными эффектами.

Решения различаются от поставщика к поставщику и от версии ROM к другой. Например, для Huawei вы можете решить проблему в Huawei P20, Huawei P20 Lite, Huawei Mate 10 с помощью телефона настройки> Батарея> Запуск приложения, а затем установите для своего приложения «Управление вручную» и убедитесь, что все работает. включенный. Также для надежных фоновых процессов вам может потребоваться удалить PowerGenie (приложение для управления питанием от Huawei). С другой стороны, для устройств EMUI 9+ вам придется удалить PowerGenie через adb

person Tomer Petel    schedule 29.10.2019