前台服务中的Android webRTC调用

前台服务中的Android webRTC调用,android,service,webrtc,foreground-service,webrtc-android,Android,Service,Webrtc,Foreground Service,Webrtc Android,我正在创建一个具有音频通话功能的Android应用程序(Java代码)。 我设法使用webRTC框架使其工作。 我想让我的音频通话表现得像WhatsApp和Messenger一样,即使用户从应用程序历史记录中停止应用程序或开始使用另一个应用程序,这些应用程序也会保持音频通话的运行 因此,我决定将webRTC代码从活动迁移到前台服务。 我的音频通话活动处理用户界面,显示朋友照片、姓名、通话计时器。。。 所以我必须通过绑定和发送android.os.Message对象在我的活动和前台服务之间进行通信

我正在创建一个具有音频通话功能的Android应用程序(Java代码)。 我设法使用webRTC框架使其工作。 我想让我的音频通话表现得像WhatsApp和Messenger一样,即使用户从应用程序历史记录中停止应用程序或开始使用另一个应用程序,这些应用程序也会保持音频通话的运行

因此,我决定将webRTC代码从活动迁移到前台服务。 我的音频通话活动处理用户界面,显示朋友照片、姓名、通话计时器。。。 所以我必须通过绑定和发送android.os.Message对象在我的活动和前台服务之间进行通信

使用三星设备时一切正常,如果我关闭应用程序,我可以通过单击前台服务的通知返回呼叫活动,音频呼叫一直工作到我挂断为止

我的问题出现在我使用小米设备(redmi note7)时,如果我关闭应用程序,音频呼叫将停止,因为我的前台服务将重新启动。 即使从设置中启用“自动启动”

我在这里搜索了一个解决方案,但我找到的所有答案都不能满足我的需要,因为我不能接受重新启动我的服务。 如果我想恢复音频通话,我必须重新给朋友打电话

因此,问题是: 如何预防小米、华为、Oppo。。。重新启动前台服务的设备


WhatsAPP、Messenger、Instagram和其他应用程序就是这样。

这是一个棘手的问题,因为它实际上取决于供应商。有一个网站,根据供应商处理服务和流程的“糟糕程度”对供应商进行记录和排名。从:

…通过安卓6(棉花糖),谷歌在基础安卓系统中引入了打盹模式,试图统一各种安卓手机的电池节省。不幸的是,供应商(如小米、华为、OnePlus甚至三星等)似乎没有抓住这个球,他们都有自己的电池节省器,通常写得非常糟糕,只在表面上节省了电池,但有副作用

解决方案因供应商和ROM版本而异。
例如,对于华为,您可以通过电话设置>电池>应用程序启动来克服华为P20、华为P20 Lite、华为Mate 10中的问题,然后将您的应用程序设置为“手动管理”,并确保一切都已打开。此外,对于可靠的后台进程,您可能需要卸载PowerGenie(华为的电源管理应用程序)。另一方面,对于EMUI 9+设备,您必须通过adb卸载PowerGenie

检查此项。它解释了如何在每个供应商上保持您的服务。谢谢您的回答。然后,您共享的链接提供了很好的信息,更好地为开发人员所了解。不幸的是,我找不到解决问题的办法。我开始想暂时放弃。这些供应商将WhatsApp、Messenger、Viber和其他著名应用程序列入白名单。但对于我们的应用程序来说,这是不可能的。很高兴知道。张贴作为答复。