1.首先本文是依据腾讯云音视频的场景demo集成(依赖trtcaudiocalldemo与trtcvideocalldemo)
2.其中最主要的回调是CallService这个服务类
正文开始:
1.一般app运行在后台的情况下,Service很容易就被回收,一旦CallService被回收,任何音视频消息都无法收到, 所以我们需要解决的第一点是保证service长时间的运行在后台,常规的方法是引导用户去给自己的APP添加白名单并使你的应用不被电池优化(https://www.cnblogs.com/Android-Alvin/p/12465949.html(转载) 白名单和电池优化),非常规的方法是采用双进程守护 ,来保证CallService的长时间运行。
2.解决了第一点之后,我们就可以在APP运行在后台的情况下来被用户呼叫,但是此时并不会弹出我们想要的视频接听页,具体的做法是采用Notification的形式,在CallService的onInvited中使用Notification中的setFullScreenIntent 来做一个类似于来电提醒的功能。这样我们就能获得类似来电提醒并且全屏打开被呼叫页面的Activity(对应TRTCAudioCallActivity,与TRTCVideoCallActivity)的功能。
3.锁屏状态下,你需要的仅仅是唤醒屏幕 并且在Activity的Oncreate方法中加上FLAG_SHOW_WHEN_LOCKED 这个标志位,如果你等API大于27 请使用 setShowWhenLocked(true) 来使你的Activity(TRTCAudioCallActivity,TRTCVideoCallActivity)能够在锁屏时显示
。