使用聲網(wǎng)進行的視頻聊天,但是vivo手機在鎖屏的情況下彈不出來視頻來電界面,點HOME鍵退到后臺時可以彈出來點界面;然而OPPO手機在鎖屏和后臺兩種情況下都彈不出來電界面,經(jīng)過多次測試發(fā)現(xiàn)vivo手機和OPPO不彈來電界面還不相同,需要分別處理。
首先判斷此應(yīng)用和手機所處狀態(tài):a應(yīng)用在前臺;b應(yīng)用在后臺;c應(yīng)用被殺死;d手機解鎖狀態(tài),e手機鎖屏狀態(tài),f手機亮屏狀態(tài)(鎖屏)
vivo的處理方式:
vivo在鎖屏的情況下來電時回亮屏幕并彈出這個權(quán)限提醒,在不動這個權(quán)限的情況下,如何彈出來電界面呢?

1.獲取狀態(tài)


然后來電時根據(jù)狀態(tài)做不同處理:
2.vivo在鎖屏下,VideoInviteActivity進入后立刻調(diào)Destroy,所以我判斷用戶在非前臺且鎖屏的情況下將來電用戶信息傳給MainActivity,在MainActivity中做處理。此時開始響鈴Util.playMp3();

3.在圖B中判斷何時解鎖,解鎖后,發(fā)送消息給MainActivity,然后根據(jù)傳的來電信息再次彈出VideoInviteActivity。

OPPO的來電處理:
oppo來電在后臺和鎖屏兩張情況下都不彈出來電界面,進過很多次測試進入VideoInviteActivity后立馬出來,好像連生命周期都沒有走,不知道什么原因。它的處理相對復(fù)雜一點。
首先同上一樣發(fā)送來電消息給MainActivity:首先判斷應(yīng)用的最前面的界面時Launcher界面也就是桌面,鎖屏情況下顯示也是Launcher。

之后在MainActivity下處理:處理方式就是多次輪訓(xùn)進入VideoInviteActivity,根據(jù)最前進程是否時VideoInviteActivity停止輪訓(xùn)。

