跳出手机的Dialog---Presentation

2023-10-10 05:40

本文主要是介绍跳出手机的Dialog---Presentation,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

跳出手机的Dialog—Presentation

本文原创,转载请经过本人准许。

写在前面:

Presentation 是 what?
也许你刚看到标题的时候,会默默把这个单词扔到翻译工具里面,就像老大最开始跟我提起这个单词的时候一样。

容我想想

Presentation是说明书?
Presentation是一个颁奖典礼?
Presentation还是某卖药公司UE总监让所有IT人尴尬癌尽犯的PPT Presentation?

公司做的是智能硬件方向,国内有关Presentation资料几乎是空白的,所以我的研究更多参考了Presentation官方文档和一些英文资料。如果各位看官有什么建议,一定要记得补充。

presentation的定义

好吧,既然上面这些都不是,Presentation是一个类,我们翻过太平洋的墙,来看看Presentation的定义。

A presentation is a special kind of dialog whose purpose is to present content on a secondary display.

我们仅仅先来看这一句定义,因为当你对一个东西完全不了解时候,知道的越多,越会影响你的判断。

翻译下:presentation 是一种特殊的 dialog ,目的是为了在辅助屏幕上展示不同的内容。

在这句话上,我收集到了两个关键的信息:

  • presentation 是一个 dialog
    根据生物遗传学的角度,presentation 无论被描述成什么天花乱坠的模样,它也是一个dialog。

  • presentation 目的是显示在辅助屏幕上

进一步思考下,也就是说:

我可以拿着我自己的手机,点击一个按钮,然后在你的电脑上或者手机上,弹出一个自定义的Dialog脑补一下恶作剧场景O(∩_∩)O)?

这与我们之前,通过一些软件,将手机屏幕同步到电脑上,区别又在哪里呢?

相信很多人都能立刻想明白,区别在于:展示不同内容

通过软件同步到电脑,展示的东西始终与我的手机屏幕相同。

而利用 presentation 我可以自由的展示我想展示的内容,因为它是一个Dialog,是局部可控的。

寻找并投影到辅助屏幕

产品经理找到我,向我提出了以下几个疑问:

现在手里有一部Android手机

能否连接以下几种设备

  • 另一部Android手机

  • 笔记本电脑

  • 智能电视

  • 小米盒子等

并且连接之后,利用presentation展示不同内容。

我乍一看这几个设备,感觉都没问题呀。可是当我拿着手机挨个尝试,几次失败,并且耐心分析之后,发现了问题。

首先Presentation是Android 4.2引出的,与之同时Android 4.2 还支持 Miracast 影像传输协议。所以它俩一定是有联系的。

Miracast

Miracast简介

Miracast是一种基于WIFI的传输协议,Android 4.2以上的手机、Win8电脑、智能电视、盒子几乎都是支持它的。

不过Miracast它将设备分为发送端和接收端
发送端有手机、电脑。
接收端有智能电视、电视盒子。

所以,手机连手机或电脑展示Presentation,是行不通的。手机作为发射端,去寻找智能电视和盒子才是正解。

Presentation

终于弄明白了要寻找的设备是怎样的,建立连接之前,参考官方文档的样例,我们先把Presentation给搭建好。

Presentation类

可以看到,和Activity一样,可以通过setContentView来给Presentation设置一个布局。自然布局里可以有各种各样的组件,还可以有像GLSurfaceView、SurfaceView 这种重量级的组件,来显示炫酷的动画。这里我们就仅仅写一个TextView,展示一行“show a Presentation”文字。

值得一提的是,在Presentation中的getContext得到的context与它依附的Activity的context是不同的,Presentation的context是目标屏幕属性的context,包含着辅助屏幕的属性信息。

获取辅助屏幕

获取辅助屏幕有两种方式

  • MediaRouter

  • DisplayManager

MediaRouter

利用MediaRouter的API寻找周围设备是一种最简单的方式了,它会直接绑定周围最合适的设备。就相当于你用谷歌搜索直接点击“手气不错

代码如下:

点击按钮,展示Presentation

可以看到在Presentation的构造中,传入了一个display,这就是搜索到的那个设备

先来测试一下,Android 4.2的手机在开发中选项中,都有模拟辅助屏幕的功能,我们选择一个分辨率,打开它,模拟一个外部的屏幕。

打开模拟辅助屏幕

默认辅助屏幕是同步手机屏幕的,打开之后,进入测试app,点击按钮:

这里写图片描述

注意这可不是一个Dialog,而是我们把内容展示在了一个模拟的辅助屏幕上,回头看看标题,是不是就实现了呢?

DisplayManager

第二种搜索设备的方法是DisplayManager,他可以搜索周围所有可用的display,产生一个display数组,然后你就可以选择合适的设备进行展示了。

代码如下:

DisplayManager

代码还是挺简单的,搜索到周围所有可用设备之后,展示到ListView上,点击条目,在APP上和Presentataion上分别跑一个秒表,看看延时性如何,截图如下。

DisplayManager

可以看到,搜索到的设备名称是 叠加视图#1 ,点击条目之后两个秒表也分别跑了起来。

总结:

上面对Presentation进行了一个简略的介绍,因为相信大家如果做的不是智能硬件方向,基本上不会遇到这个需求。关于Activity对Presentation的管理方式,官方文档的有两个Demo可以参考,需要时可以去查看。

写在后面:

周末在连接智能电视测试时,跑秒表发现延时还是很大的,所以目前考虑是否可以用采用HDMI有线连接的方式来减小延时。
关于Presentation资料比较少,欢迎大家一同交流

这篇关于跳出手机的Dialog---Presentation的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/178338

相关文章

cell phone teardown 手机拆卸

tweezer 镊子 screwdriver 螺丝刀 opening tool 开口工具 repair 修理 battery 电池 rear panel 后盖 front and rear cameras 前后摄像头 volume button board 音量键线路板 headphone jack 耳机孔 a cracked screen 破裂屏 otherwise non-functiona

想要从OPPO手机恢复数据?免费OPPO照片视频恢复软件

此实用程序可帮助那些寻找以下内容的用户: 在OPPO手机中格式化存储卡后可以恢复图片吗?我删除了 OPPO上的视频和图片,我感觉很糟糕,因为里面有我在拉斯维加斯拍摄的视频和照片 免费OPPO照片视频恢复软件 您能恢复OPPO上已删除的照片吗?我不小心格式化了OPPO SD 卡,有希望恢复已删除的照片吗? 救命!我在清理时删除了我的照片,我的问题是是否有任何免费软件可以从OPPO中恢复已

P11019 「LAOI-6」[太阳]] 请使用最新版手机 QQ 体验新功能

English statement. You must submit your code at the Chinese version of the statement. 题目描述 你的 QQ 收到了一条新消息!但是你很生气,因为你看不到别人在手机 QQ 上发送的超级表情。 消息形如一个字符串 S,包含且仅包含一个超级表情。具体地,我们将 S 的拼音采用驼峰命名法,可以化为如下形

手机扬声器音量总是不够大?试试“扬声器助推器”吧

手机的扬声器音量总是不够大,尤其是在嘈杂的环境中,音乐和视频的声音总是不太清晰。直到我发现了这款“扬声器助推器”,我的手机音质瞬间提升了好几个档次。 软件简介: “扬声器助推器”利用先进的音频处理技术,能够提高手机扬声器的音量,让声音更加清晰响亮。此外,还可以设置最大允许增强量,避免音量过大损坏扬声器。 版本特点: 提升音量效果显著,音质清晰。可以自定义最大增强量,保护扬声器。 使用体

用手机做抢答器 低预算知识竞赛活动的选择

使用手机作为抢答器是低预算竞赛活动的一个理想选择。随着智能手机的普及,传统抢答器已经被手机抢答器所替代,这种转变不仅降低了成本,而且提供了更大的灵活性和便利性。通过手机扫码登录竞赛软件,参赛者可以直接在手机上进行抢答和答题,这种方式无需购买软件,只需要一台能上网的电脑连接大屏即可。知识竞赛在线租用系统通常包括后台管理、大屏展示、选手客户端三部分,通过租用方式使用系统,用户无需准备服务器硬件、相

Anroid BLE蓝牙(手机分别作为中心设备和外围设备)

蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之前的BR/EDR蓝牙称为传统蓝牙,而将蓝牙4.0规范下的LE蓝牙称为低功耗蓝牙。  BLE蓝牙模块主要应用领域     1、移动扩展设备     2、汽车电子设备     3、健康医疗用品:心跳带、血压计等     4、定位应用:室内定位、井下定位等     5、近距离数据采集:无线

使用Charles对安卓手机进行抓包

写在前面的话 Charles 介绍 Charles 的主要功能 网络请求拦截与分析 Charles 通过将自己配置成系统的代理服务器,拦截所有通过它的 HTTP 和 HTTPS 请求与响应。开发者可以查看每个网络请求的详细信息,包括请求的 URL、请求头、请求体、响应头、响应体、状态码等,便于调试和分析网络通信问题。 SSL 抓包 Charles 支持 HTTPS 协议的抓包。通过安装

怎样将手机屏幕(远程)投屏到家里的大电视上?

我不住家里,前几次回去都会替老爸老妈清理手机。这两个星期没空回去,老爸吐槽手机用几天就又卡了,其实就是清理一些手机缓存的问题。 我说我远程控制他的手机,给他清理一下。他一听“控制”就不喜欢,说我大了,不尊重他,然后又把几件陈年小事又唠叨一遍。我只能顺着他意,不再提远程控制手机的方法。其实我也不懂,他愿意直接把手机给我操作,但不愿意被远程控制。我也只能说服自己,别人总是有些介意的奇奇怪怪的要点。但

vue el-dialog嵌套解决无法点击问题

产生原因: 当你在 el-dialog 上嵌套另一个 el-dialog 窗口时,可能会遇到内部对话框无法点击的问题。这通常是由于嵌套对话框的遮罩层(overlay)或其他样式问题造成的。 解决方案: 如果你的 el-dialog 组件支持 append-to-body 属性,你可以将对话框附加到 body 元素上,以避免 z-index 问题。 <template><el-dialo

小米9 从后台回到前台后 Dialog不显示 只有半透明的背景

最近用自定义Dialog 展示一些提示语,用小米测试时发现在弹出DialogAPP恰好在后台时,再次打开APP,界面上没有 DIalog 的弹框,但是有半透明的背景,点击返回也关不掉,只有关闭页面才会恢复正常,这个情况暂时只在小米上出现,最后找到了问题记录一下。 自定义Dialog原代码有一段是这样 dialog.getWindow().setGravity(Gravity.CENTER