Android屏幕采集MediaProjection,双屏开发(Presentation副屏/客显),Presentation投屏,智能硬件方向与Presentation

> Android屏幕采集MediaProjection和MediaProjectionManager ,Android5.0

-- MediaProjectionManager,MediaProjection,VirtualDisplay录屏:
Intent captureIntent = mMediaProjectionManager.createScreenCaptureIntent();
startActivityForResult(captureIntent, REQUEST_CODE);

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode != PERMISSION_CODE) {
            Log.e(TAG, "Unknown request code: " + requestCode);
            return;
        }
        if (resultCode != RESULT_OK) {
            Toast.makeText(this,
                    "User denied screen sharing permission", Toast.LENGTH_SHORT).show();
            return;
        }
        mMediaProjection = mProjectionManager.getMediaProjection(resultCode, data);
        mMediaProjection.registerCallback(new MediaProjectionCallback(), null);
        mVirtualDisplay = createVirtualDisplay();
    }

android5.0屏幕录制- https://download.csdn.net/download/l00149133/9115543
Android视频录制--MediaProjection- https://blog.csdn.net/l00149133/article/details/48346107

> 双屏开发(Presentation副屏/客显)

  对于双屏异显(lcd 和 hdmi 的双屏异显),android框架已经支持,但是底层接口功能还是要自己去实现,且需要底层驱动支持。使用presentation 去画第二个display就好了。
  android 5.0之后可以使用一个特殊的对话框就是presentation,presentation可以绑定一个display(可以是virtualdisplay或是真的用于显示的display),之后可以将显示的在应用之外内容绘制到presentation上(便可以显示在display之中)。今天看到一个应用做法很好,把自身应用投射到另外一块屏幕,本屏幕显示自身应用时就只显示一个悬浮层,而这位悬浮层就是利用presentation显示在本应用所安装设备的显示屏幕的display上面。
  Google也是不负众望在Android4.2(API17) 版本以后提供了Presentation类,可以轻松实现在两块屏幕上同时显示不同的内容
  Presentation是一个特殊的dialog,它的目的是显示内容到第二屏幕。在Presentation创建的时候关联一个目标设备,确定Presentation要显示在那个设备上,根据这个设备的信息来配置Presentation的context和resources信息。
  Presentation的context与包含它的Activity的context是不相同的,用presentation的上下文来填充一个presentation的layout和加载其它的资源是非常重要的,可以确保我们加载的目标设备正确的尺寸密度assets。
  当Presentation附属的display被移除的话,Presentation就会自动被取消。当创建Presentation的Activity自己处于paused或者resumed,无论Presentation在显示什么内容,该Activity就要关心对Presentation 进行pausing and resuming。

Android Presentation是什么-https://blog.csdn.net/u010144805/article/details/79527005
android presentation- https://blog.csdn.net/u010144805/article/details/79526880
双屏开发 Presentation副屏/客显的使用- https://blog.csdn.net/lovekam/article/details/83653067
android presentation实现双屏异显- https://blog.csdn.net/a_lucky_girl/article/details/53885520
Android Api Demos登顶之路(十二)Presentation-https://blog.csdn.net/fishtosky/article/details/47165573
Android7.1 Presentation双屏异显原理分析- https://blog.csdn.net/fu_kevin0606/article/details/79420621

> 跳出手机的Dialog--Presentation
 presentation的定义:A presentation is a special kind of dialog whose purpose is to present content on a secondary display. presentation 是一种特殊的 dialog ,目的是为了在辅助屏幕上展示不同的内容。

  要为辅助显示屏创建独特的内容:
 1. 您需要扩展Presentation类,并实现onCreate()回调方法。在onCreate()中,调用setContentView()来指定您要在辅助显示屏上显示的UI。
 2. 作为Dialog类的扩展,Presentation类提供了一个区域,在其中,您的应用可以在辅助显示屏上显示不同的UI。

  首先Presentation是Android 4.2引出的,与之同时Android 4.2 还支持 Miracast 影像传输协议。所以它俩一定是有联系的。Miracast是一种基于WIFI的传输协议,Android 4.2以上的手机、Win8电脑、智能电视、盒子几乎都是支持它的。
  在Presentation中的getContext得到的context与它依附的Activity的context是不同的,Presentation的context是目标屏幕属性的context,包含着辅助屏幕的属性信息。

> 获取辅助屏幕有两种方式MediaRouter或者DisplayManager
 1.MediaRouter: 利用MediaRouter的API寻找周围设备是一种最简单的方式了,它会直接绑定周围最合适的设备。
  选择显示presentation的设备最简单的方法就是使用Media Router,media router服务持续追踪在系统中哪个音频视频线路是可用的,当routes被选择或者不被选择,或者更好的显示presentation display的线路发生改变后media router就会发送消息。所以一些应用程序可以自动监视这些消息来在首选设备上显示或取消presentation。
  首选显示presentation的设备是Media Router进行推荐的,如果应用想要显示内容在第二屏幕上就该使用该设备。有时可能没有首选显示presentation的设备,在这种情况下,应用可以在本地显示内容而不使用presentation。

 2.DisplayManager: 第二种搜索设备的方法是DisplayManager,他可以搜索周围所有可用的display,产生一个display数组,然后你就可以选择合适的设备进行展示了。
  display manager:另外一个获取首选display的方法是直接使用display Manager来获取。display manager服务提供方法枚举和描述系统中所有的设备,包括可以显示presentation的设备。display manager持续追踪系统中所有的设备,然而,并不是所有的设备都适合显示presentation,例如,如果一个Activity试图在主屏幕上显示一个presentation,它可能会掩盖自己的内容,这就象在Activity上打开一个dialog一样。

MediaRouter mediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
 MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute();
 if(route != null) {
      Display presentationDisplay = route.getPresentationDisplay();
      if (presentationDisplay != null) {
            Presentation presentation = new MyPresentation(context, presentationDisplay);
            presentation.show();
      }
 }

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!针对您的问题,我可以为您提供一些关于在Android Studio中进行双屏异显的信息首先,确保您的计算机系统支持双屏设置。然后,按照以下步骤操作: 1. 连接第二个显示器:将第二个显示器连接到计算机,并确保它被正确识别。 2. 打开Android Studio:启动Android Studio,并进入“File(文件)”菜单。 3. 进入“Settings(设置)”:在“File(文件)”菜单中,选择“Settings(设置)”。 4. 打开“Appearance & Behavior(外观与行为)”:在设置窗口的左侧面板中,选择“Appearance & Behavior(外观与行为)”选项。 5. 进入“Appearance(外观)”选项卡:在“Appearance & Behavior(外观与行为)”选项卡中,选择“Appearance(外观)”。 6. 启用“Presentation Mode(演示模式)”:在“Appearance(外观)”选项卡中,启用“Presentation Mode(演示模式)”。 7. 配置显示器:在“Presentation Mode(演示模式)”下,您可以配置要在主显示器和辅助显示器上显示的工具窗口。您可以使用拖放或右侧的箭头按钮来移动它们。 8. 应用更改:点击“OK”按钮以应用更改。 现在,您可以在Android Studio中使用双屏异显了。主显示器上将显示主要编辑界面,而辅助显示器上可以显示工具窗口,如项目结构、日志等。 希望这些步骤能帮助到您!如果您还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值