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

相关文章

  • 用原生VideoView进行全屏播放时的问题

    用原生VideoView进行全屏播放时的问题

    本篇文章主要介绍了用原生VideoView进行全屏播放时的问题,具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • Android Bitmap详解及Bitmap的内存优化

    Android Bitmap详解及Bitmap的内存优化

    这篇文章主要介绍了Android Bitmap详解及Bitmap的内存优化的相关资料,Bitmap是Android系统中的图像处理的最重要类之一。用它可以获取图像文件信息,进行图像剪切、旋转、缩放等操作,并可以指定格式保存图像文件,需要的朋友可以参考下
    2017-03-03
  • Android自定义控件之圆形、圆角ImageView

    Android自定义控件之圆形、圆角ImageView

    这篇文章主要为大家详细介绍了Android自定义控件之圆形、圆角ImageView的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Android LayoutTransiton实现简单的录制按钮

    Android LayoutTransiton实现简单的录制按钮

    这篇文章主要介绍了Android LayoutTransiton实现简单的录制按钮,主要实现开始,暂停,停止和显示录制时间长度,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Android 详解沉浸式状态栏的实现流程

    Android 详解沉浸式状态栏的实现流程

    沉浸式就是要给用户提供完全沉浸的体验,使用户有一种置身于虚拟世界之中的感觉。沉浸式模式就是整个屏幕中显示都是应用的内容,没有状态栏也没有导航栏,用户不会被一些系统的界面元素所打扰,让我们来实现下网上传的沸沸扬扬的安卓沉浸式状态栏
    2021-11-11
  • Android开发实现删除联系人通话记录的方法

    Android开发实现删除联系人通话记录的方法

    这篇文章主要介绍了Android开发实现删除联系人通话记录的方法,较为详细的分析了Android删除通话记录的原理、步骤与相关实现技巧,需要的朋友可以参考下
    2016-10-10
  • Android实现图片的裁剪(不调用系统功能)

    Android实现图片的裁剪(不调用系统功能)

    这篇文章主要为大家详细介绍了Android实现图片的裁剪,不调用系统功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • android.graphics.Matrix类用法分析

    android.graphics.Matrix类用法分析

    这篇文章主要介绍了android.graphics.Matrix类,较为详细的分析了Matrix类矩阵与坐标运算的相关函数功能与使用注意事项,并结合实例形式分析了android.graphics.Matrix类具体使用方法,需要的朋友可以参考下
    2017-08-08
  • Android字符串转Ascii码实例代码

    Android字符串转Ascii码实例代码

    这篇文章主要介绍了Android字符串转Ascii码的方法,大家参考使用
    2013-11-11
  • 完美解决android 项目jar包冲突的问题

    完美解决android 项目jar包冲突的问题

    这篇文章主要介绍了完美解决android 项目jar包冲突的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03

最新评论