美文网首页
Android 检测用户是否投屏方案

Android 检测用户是否投屏方案

作者: 辅助上分 | 来源:发表于2023-03-06 16:48 被阅读0次

    通用方法

    当前系统投屏监控使用 DisplayManager.registerDisplayListener方案来获取投屏回调,并且通过判断屏幕数量来观察用户是否投屏,如果lenth>1则认为是投屏成功,如果lenth<=1 则认为是未投屏。
    回调注册:

    
        private void registerDisplayChange() {
            dm = (DisplayManager)
                    getSystemService(Context.DISPLAY_SERVICE);
            dm.registerDisplayListener(new DisplayManager.DisplayListener() {       //屏幕添加
                @Override
                public void onDisplayAdded(int displayId) {
                    
                }
            //屏幕删除
                @Override
                public void onDisplayRemoved(int displayId) {
    
                }
    
                @Override
                public void onDisplayChanged(int displayId) {
    
                }
            }, null);
        }
        
    

    获取屏幕数量方法:

                Display[] displays = displayManager.getDisplays();
            length为屏幕数量 
    
    

    兼容

    这种方案主要会有兼容问题,主要有以下几点:

    • 第三方投屏可能再结束投屏后,不会回收虚拟屏幕,这个时候判断lenth会失败,可以根据第三方投屏虚拟屏幕的名称做判断。
    • 有些特殊设备,一开始就可能有两个屏幕,这种情况,需要配置白名单来过滤特殊设备的额外屏幕,同样也是根据名字。
    • 特殊设备屏幕录制,也可能触发以上回调,你也需要知道屏幕录制的虚拟屏幕名称做过滤。

    相关文章

      网友评论

          本文标题:Android 检测用户是否投屏方案

          本文链接:https://www.haomeiwen.com/subject/qeexpxtx.html