Android WebRTC вызов в службе Foreground - PullRequest
0 голосов
/ 29 октября 2019

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 29 октября 2019

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

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

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

...