android唤起app并点亮屏幕、覆盖锁屏显示

2018-09-03  本文已影响0人  pandaneko

项目中需要实现视频通话功能,效果参考微信视频聊天:在有屏幕锁且黑屏状态下收到呼叫时,唤起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);
}

注意:覆盖锁屏显示这个功能在小米手机上需要“锁屏显示”权限,目前只能用户自己开启,无法通过代码申请。

上一篇 下一篇

猜你喜欢

热点阅读