当前位置: 首页 > article >正文

Android -- 双屏异显之方法二

Android – 双屏异显之方法二: DisplayManager

PS:
1. 使用改方法主板需连接至少两个输出显示屏;
2. 副屏内部实现与MediaRouter下一样;

使用方法

# 主屏activity内:
private SecondDisplay secondDisplay;
    
private void dualScreen3288() {
    DisplayManager displayManager = (DisplayManager) getApplicationContext().getSystemService(DISPLAY_SERVICE);
    if (displayManager != null) {
        Display[] presentationDisplays = displayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION);
        //检测到主屏外显示屏数
        if (presentationDisplays.length > 0) {
       // If there is more than one suitable presentation display, then we could consider giving the user a choice.  For this example, we simply choose the first display which is the one the system recommends as the preferred presentation display.
            //多个附加屏时可自由选择,这里选第一个
            secondDisplay = new SecondDisplay(this, presentationDisplays[0]);
            try {
                secondDisplay.show();
            } catch (Throwable e) {
                e.printStackTrace();
            }
        } else {
            logError("showDualScreen: 未找到副屏!");
        }
    }
}
    
//关闭副屏
private void closeSecondScreen() {
    if (secondDisplay != null) {
        secondDisplay.release();
        secondDisplay.dismiss();
        secondDisplay = null;
    }
}

SecondDisplay.java (副屏类)

//主要继承Presentation类
public class SecondDisplay extends Presentation {
    private static final String TAG = "SecondDisplay";

    private Context mContext;

    //构造函数
    public SecondDisplay(Context outerContext, Display display) {
        super(outerContext, display);
        this.mContext = outerContext;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //副屏布局,与activity内一样
        setContentView(R.layout.layout_second);

        initUI();
    }

    private void initUI() {
        //绑定控件
    }

    public void release() {
        //关闭页面前注销资源
    }
}

http://www.kler.cn/a/446911.html

相关文章:

  • CUDA编程 | 6.2 并发内核执行
  • gitee给DeployKey添加push权限
  • ViEW生命周期
  • SLURM资料
  • C语言经典100例
  • C++ 引用的基本用法
  • 从代币角度介绍solana账户体系
  • leetcode之hot100---54螺旋矩阵(C++)
  • 华为OD --- 流浪地球
  • Golang uint 类型溢出问题
  • LLaMA-Factory 单卡3080*2 deepspeed zero3 微调Qwen2.5-7B-Instruct
  • 2023年西南大学数学建模C题天气预报解题全过程文档及程序
  • 多态中虚函数调用问题
  • jvm栈帧结构
  • 前端关于pptxgen.js个人使用介绍
  • Linux setfacl 命令详解
  • STM32 高级 物联网通信之CAN通讯
  • 华为笔记本之糟糕的体验
  • 鸿蒙项目云捐助第十四讲云函数的初步使用
  • MFC/C++学习系列之简单记录5
  • c++数据结构算法复习基础--12--排序算法-常见笔试面试问题
  • go 适配windows和linux获取文件创建时间的方法(跨平台的方法不一致的解决问题)
  • RabbitMQ如何构建集群?
  • 华为云检查服务器状态
  • 遇见物联网
  • day4:tomcat—maven-jdk