纯技术层面探讨,鸿蒙 os 这个多屏协同的功能是如何实现的?

2021-06-03 18:49:36 +08:00
 zckevin

前提:技术讨论,不论鸿蒙究竟是一个掏空 AOSP 的操作系统,还是一个包罗一切的商业概念,说实话对于用户而言这真的不是特别重要。但仅就功能上看,鸿蒙 2.0 比 MIUI 12 在功能上亮眼太多。

本人无任何 Android 开发经验。

《鸿蒙全家桶体验分享:华为 Mate40 、MatePad Pro 、MateView……这就是超级终端的魅力吗?》 https://www.bilibili.com/video/BV1VB4y1g7AR

多屏协同,简单来说,就是可以将手机上的 app 直接拽到平板上运行。最常用的实现方式就是屏幕共享,把图像帧抓下来传输到另外一端进行回放,拿 scrcpy 来改的团队应该不少。

鸿蒙多屏协同连接完成后,暂时使用的是屏幕共享的模式。

鸿蒙一个亮眼的功能是:在平板上的 bilibili 全屏播放,手机无须和平板的屏幕保持 mirroring 而可以去刷微博,平板成为一块副屏。

我的困惑在于,此时平板上运行的全屏 bilibili,是在平板系统上通过 URL scheme 拉起的一个本地原生 Activity (假设鸿蒙还有这个概念),还是手机操作系统对屏幕进行了屏幕扩展,虚拟出了一块副屏(分辨率为平板屏幕尺寸),渲染后将帧传送到平板进行回放。

前者要求待投屏的 app 在两台设备上都已安装,状态数据复杂的 app 也不支持这样的 URL scheme 跳转打开。基于华为对硬件、系统的掌控能力底层渲染技术的研究储备( GPU Turbo ),后者看上去实现可行性更强?也更有一些软总线的意味了。

6516 次点击
所在节点    硬件
20 条回复
quzard
2021-06-03 18:59:18 +08:00
我也好奇。有大佬研究过吗
quzard
2021-06-03 18:59:50 +08:00
但感觉和苹果的 iPad 随航差不多的技术?
also24
2021-06-03 19:05:38 +08:00
我觉得这个技术应该可以溯源到华为平板上之前加入的『平行视界』功能。

https://www.bilibili.com/video/BV1bp4y1s73M
paradoxs
2021-06-03 19:08:44 +08:00
软总线,很好,词很好。
zckevin
2021-06-03 19:11:37 +08:00
@quzard 不怎么用得起苹果设备,也才刚刚知道苹果有 sidecar 这个功能...看上去原理应该是相似的,华为玩得花样似乎更多一些。
zckevin
2021-06-03 19:13:53 +08:00
@also24 感谢提供!这个功能看着也很有意思....
dallaslu
2021-06-03 19:14:31 +08:00
和视频投屏(智能电视、苹果设备)的体验很像啊
zckevin
2021-06-03 19:18:15 +08:00
@also24 看上去应该是两个 Activity 并排,不像是特别底层但肯定魔改 Android 了
zckevin
2021-06-03 19:20:30 +08:00
@dallaslu 投屏的问题在于当两个设备分辨率不同(手机 v.s 电视),直接帧回放几乎是没法看的,所以肯定还是得屏幕拓展
also24
2021-06-03 19:22:05 +08:00
恩,我觉得参照 『平行视界』的思路来想的话。

平行视界本身就是对 Activity 的生命周期做了魔改接管,我觉得大致思路就是欺骗两个 Activity,让它们都认为自己在前台(当然,还要解决一大堆逻辑问题)。

那么按照这个思路,将其中一个 Activity 的显示,完全迁移到另一台(虚拟)设备上,再通过这个设备投屏出去,应该就可以做到类似的效果。
Yadomin
2021-06-03 19:26:47 +08:00
在 MIUI+ 上见过类似的操作,MIUI+ 的 PC 端上有小米笔记,但是并不是做了 PC 端应用,而是把手机端投屏,也不影响手机前台应用运行
quzard
2021-06-03 19:32:36 +08:00
@Yadomin 感觉和小窗有点类似
zckevin
2021-06-03 19:36:01 +08:00
@also24 是啊,没做过 Android 底层开发的表示很难想象这种魔改的工作量和追新版的难度,索性自己做得了。
zckevin
2021-06-03 19:40:23 +08:00
@Yadomin 感谢告知!搜了下感觉大致的实现原理应该是类似的,看来多屏协同应该是大势所趋了
Semidio
2021-06-03 20:16:40 +08:00
原理上来说应该和原本 PC 模式没啥区别
felixlong
2021-06-03 22:04:11 +08:00
这就是屏幕镜像吧。Android 底层本来就支持镜像的时候当成扩展屏幕的( https://developer.android.com/reference/android/hardware/display/VirtualDisplay )。
billccn
2021-06-04 05:13:31 +08:00
多少年前三星和摩托罗拉的"桌面体验"实现就支持在投屏里运行另外一个 Android 程序和手机屏幕上的互不干扰。

三星的 Dex 已经砍掉不少功能,但是这个功能还是有的,摩托的笔记本式扩展坞销量不好,后面就不知道怎么样了。
EVJohn
2021-06-04 07:58:15 +08:00
用着 sound-x 的来乱入下,用的是 Wi-Fi direct,感觉多屏协同的原理应该差不多
olaloong
2021-06-04 09:52:20 +08:00
感觉各家的协同基本都趋同了
MIUI+连上电脑后可以在电脑上至多同时打开三个 APP,互不影响,技术上应该类似
bigggge
2023-05-16 19:12:14 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/781193

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX