项目中需要实现视频通话功能,效果参考微信视频聊天:在有屏幕锁且黑屏状态下收到呼叫时,唤起app并点亮屏幕。
//ToastUtils.showLong("监测到来电....");
//点亮屏幕
wakeUpAndUnlock(Utils.getContext());
//启动跳转Activity即可唤醒app
Intent intent = new Intent(Utils.getContext(),ReciveCallActivity.class);
startActivity(intent);
wakeUpAndUnlock方法:
public static void wakeUpAndUnlock(Context context){
//屏锁管理器
KeyguardManager km= (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock kl = km.newKeyguardLock("unLock");
//解锁
kl.disableKeyguard();
//获取电源管理器对象
PowerManager pm=(PowerManager) context.getSystemService(Context.POWER_SERVICE);
//获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP |
PowerManager.SCREEN_DIM_WAKE_LOCK,"bright");
//点亮屏幕
wl.acquire();
//释放
wl.release();
}
然后在第二个Activity,即接听页面中操作:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//使该Activity在锁屏界面上面显示,别忘了给视频通话的Activity也加上
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
setContentView(R.layout.activity_call_player);
}
注意:覆盖锁屏显示这个功能在小米手机上需要“锁屏显示”权限,目前只能用户自己开启,无法通过代码申请。
网友评论