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 双屏异显的资料请关注脚本之家其它相关文章!

相关文章

  • 学习使用Material Design控件(一)

    学习使用Material Design控件(一)

    这篇文章主要为大家介绍了学习使用Material Design控件的详细教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Android 判断是否能真正上网的实例详解

    Android 判断是否能真正上网的实例详解

    这篇文章主要介绍了Android 判断是否能真正上网的实例详解相关资料,希望通过本文大家能够掌握判断是否上网的方法,需要的朋友可以参考下
    2017-10-10
  • 利用Kotlin的方式如何处理网络异常详解

    利用Kotlin的方式如何处理网络异常详解

    这篇文章主要 给大家介绍了关于利用Kotlin的方式如何处理网络异常的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • Android开发之HttpClient异步请求数据的方法详解【附demo源码下载】

    Android开发之HttpClient异步请求数据的方法详解【附demo源码下载】

    这篇文章主要介绍了Android开发之HttpClient异步请求数据的方法,结合实例形式较为详细的分析了Android HttpClient异步请求数据的相关操作技巧,并附带完整demo源码供读者下载参考,需要的朋友可以参考下
    2017-11-11
  • Android开关控件Switch的使用案例

    Android开关控件Switch的使用案例

    今天小编就为大家分享一篇关于Android开关控件Switch的使用案例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 非常实用的Android图片工具类

    非常实用的Android图片工具类

    这篇文章主要为大家详细介绍了非常实用的Android图片工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Android开发实现的圆角按钮、文字阴影按钮效果示例

    Android开发实现的圆角按钮、文字阴影按钮效果示例

    这篇文章主要介绍了Android开发实现的圆角按钮、文字阴影按钮效果,涉及Android界面布局与属性设置相关操作技巧,需要的朋友可以参考下
    2019-04-04
  • 如何利用Flutter仿写微信搜索页效果

    如何利用Flutter仿写微信搜索页效果

    这篇文章主要给大家介绍了关于如何利用Flutter仿写微信搜索页效果的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • android控件之WebView控件缩小

    android控件之WebView控件缩小

    发现这个控件挺好用,能自已控制进度条,而且这个控件的功能非常壮大,先上个简单的
    2013-05-05
  • RecyclerView滑动到指定Position的方法

    RecyclerView滑动到指定Position的方法

    这篇文章主要为大家详细介绍了RecyclerView滑动到指定Position的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04

最新评论