V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zckevin
V2EX  ›  硬件

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

  •  1
     
  •   zckevin · 2021-06-03 18:49:36 +08:00 · 6426 次点击
    这是一个创建于 1267 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    本人无任何 Android 开发经验。

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

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

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

    image.png

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

    image.png

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

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

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

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

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

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

    三星的 Dex 已经砍掉不少功能,但是这个功能还是有的,摩托的笔记本式扩展坞销量不好,后面就不知道怎么样了。
    EVJohn
        18
    EVJohn  
       2021-06-04 07:58:15 +08:00
    用着 sound-x 的来乱入下,用的是 Wi-Fi direct,感觉多屏协同的原理应该差不多
    olaloong
        19
    olaloong  
       2021-06-04 09:52:20 +08:00
    感觉各家的协同基本都趋同了
    MIUI+连上电脑后可以在电脑上至多同时打开三个 APP,互不影响,技术上应该类似
    bigggge
        20
    bigggge  
       2023-05-16 19:12:14 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5512 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 03:10 · PVG 11:10 · LAX 19:10 · JFK 22:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.