Android9 双屏异显实现方式思路

 更新时间:2023年06月12日 09:49:59   作者:vivian310  
这篇文章主要为大家介绍了Android9 双屏异显实现方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

双屏异显的三种方式

1、通过adb命令将app启动在指定的屏幕

adb shell am start -n com.android.demo/com.android.demo.MainActivity --display 1
adb shell am start -n com.android.demo/com.android.demo.MainActivity --user 0 --display 1

参数--display指定屏幕, display 0,表示第一块屏幕; display 1,表示第2块屏幕。

参数--user可以启动指定的用户,在多用户下有效,系统默认是--user 0。

2、通过Presentation

Presentation是一个特殊的dialog,它的目的是显示内容到第二屏幕。在Presentation创建的时候关联一个目标设备,确定Presentation要显示在哪个设备上,根据这个设备的信息来配置Presentation的context和resources信息。

获取辅助屏幕有两种方式:MediaRouter或者DisplayManager

MediaRouter mediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute();---先获取RouteInfo,再获取Display
//MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute(ROUTE_TYPE_USER)
if(route != null) {
     Display presentationDisplay = route.getPresentationDisplay();
     if (presentationDisplay != null) {
           Presentation presentation = new MyPresentation(context, presentationDisplay);
           presentation.show();
     }
}
DisplayManager mDisplayManager = getSystemService(Context.DISPLAY_SERVICE);
Display displays = mDisplayManager.getDisplay(1);

3. 通过startActivity

ActivityOptions options = ActivityOptions.makeBasic();
options.setLaunchDisplayId(1); //这里一直display0是第一块屏;display1是第二块屏
Intent secondIntent = new Intent();
ComponentName cn= new ComponentName("com.android.demo","com.android.demo.SecondActivity");
secondIntent .setComponent(cn);
//该句很重要,不添加则无法推送到副屏
secondIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(secondIntent, options.toBundle());
使用ActivityOptions指定显示屏幕
为Intent增加标志Intent.FLAG_ACTIVITY_MULTIPLE_TASK|Intent.FLAG_ACTIVITY_NEW_TASK

备注:通过Activity的方式显示在副屏上会带来一些问题

1、SoftInputWindow,Toast只显示在主屏

当在副屏的Activity中调用上面控件时,控件会显示到主屏上

PopupWindow、Dialog可以正常显示

但是传入的Context必须是当前Activity的

以上问题需要修改Framwork适配控件,更多关于Android9 双屏异显的资料请关注脚本之家其它相关文章!

相关文章

  • Android编程判断当前指定App是否在前台的方法

    Android编程判断当前指定App是否在前台的方法

    这篇文章主要介绍了Android编程判断当前指定App是否在前台的方法,涉及Android针对进程操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • Flutter RSA加密解密的示例代码

    Flutter RSA加密解密的示例代码

    数据加密有对称加密(对称密钥方案) 和非对称加密(公钥加密) 两种加密方式,本文主要介绍了Flutter RSA加密解密的示例代码,感兴趣的可以了解一下
    2022-04-04
  • Flutter实现用视频背景的登录页的示例代码

    Flutter实现用视频背景的登录页的示例代码

    这篇文章主要介绍了Flutter实现用视频背景的登录页的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Android编程加密算法小结(AES、Base64、RAS加密算法)

    Android编程加密算法小结(AES、Base64、RAS加密算法)

    这篇文章主要介绍了Android编程加密算法,结合实例分析了AES、Base64及RAS加密算法,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • 浅谈Android studio 生成apk文件时的 key store path 的问题

    浅谈Android studio 生成apk文件时的 key store path 的问题

    这篇文章主要介绍了浅谈Android studio 生成apk文件时的 key store path 的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Flutter的键值存储数据库使用示例详解

    Flutter的键值存储数据库使用示例详解

    这篇文章主要为大家介绍了Flutter的键值存储数据库使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Android学习之介绍Binder的简单使用

    Android学习之介绍Binder的简单使用

    BInder方面的资料虽然感觉看的比较多,但是真正用的时候才发现有很多地方模棱两棵的,所以,打算用一个实例再来巩固一下binder的使用方法。这篇文章主要介绍了Android中Binder的简单使用,文中给出详细的示例代码,需要的朋友可以参考下
    2016-12-12
  • Action获取请求参数的三种方式

    Action获取请求参数的三种方式

    这篇文章主要介绍了Action获取请求参数的三种方式的,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • android tv列表焦点记忆实现的方法

    android tv列表焦点记忆实现的方法

    本篇文章主要介绍了android tv列表焦点记忆实现的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Android Studio+Servlet+MySql实现登录注册

    Android Studio+Servlet+MySql实现登录注册

    对于大多数的APP都有登录注册这个功能,本文就来介绍一下Android Studio+Servlet+MySql实现登录注册,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05

最新评论