纯技术层面探讨,鸿蒙 os 这个多屏协同的功能是如何实现的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zckevin
V2EX    硬件

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

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

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

    本人无任何 Android 开发经验。

    《鸿蒙全家桶体验分享:华为 Mate40 、MatePd 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     Solana     5583 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 05:55 PVG 13:55 LAX 22:55 JFK 01:55
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86