很好奇悬浮版的车机高德是怎么样实现的?

2023-06-27 03:43:25 +08:00
 think2011

看到居然可以将高德地图窗口化,所以某些车机桌面可以类似 carplay 那样,左侧高德,右侧音乐,并且可以直接在窗口上操作高德

这是怎么样实现的? 似乎也不需要 root ,感觉挺厉害的

11009 次点击
所在节点    Android
15 条回复
CyJaySong
2023-06-27 08:22:43 +08:00
画中画
olbb
2023-06-27 08:41:52 +08:00
就是悬浮窗吧, 跟小窗播放视频一个原理
gaifanking
2023-06-27 09:31:15 +08:00
ysy950803
2023-06-27 11:14:07 +08:00
可能是应用自己用悬浮窗口开发的,也可能是系统的小窗模式(国内那些 ROM 基本都有这个功能,不需要应用本身怎么适配),不算什么新鲜东西了。
ebushicao
2023-06-27 14:37:25 +08:00
很多是车企找高德合作的(付费给高德合作),所以很多车机里的高德更新的很慢。
ofnh
2023-06-27 17:21:32 +08:00
你在 B 站问了我,我在这回你一下

首先,高德是二次修改过的,真假了一些代码以及删除了一些代码,具体的话可以对比一下官方包和修改包的区别

关于如何启动悬浮窗 /画中画,看下面代码

```
private void showMap() {
Intent intent = new Intent();
intent.setAction("com.autonavi.plus.showmap");
intent.putExtra("x", 0);
intent.putExtra("y", 0);
intent.putExtra("w", 0);
intent.putExtra("h", 0);

sendBroadcast(intent);
}

private void hideMap() {
Intent intent = new Intent();
intent.setAction("com.autonavi.plus.closemap");
sendBroadcast(intent);
}
```

其中你需要替换具体的值

发送具体的广播就可以让高德悬浮起来了(请注意,悬浮窗权限一定要给)
详细效果和下载请看这个文章

[领克 05/领克 01HY3.1 高德地图开启画中画功能] https://www.bilibili.com/video/BV1KM411P7Hu/?share_source=copy_web&vd_source=758d3c51534003ffa4c7c8489ce795cf
ofnh
2023-06-27 17:24:18 +08:00
fix:真假->增加

以上代码对某些桌面的高德有效(嘟嘟桌面等)

另外画中画还有一种实现方式,就是反射 android.app.ActivityView ,门槛比较高,需要 root 或者有系统级签名
think2011
2023-06-27 19:10:13 +08:00
@ofnh 没想到大佬也在这

我的车机估计比较特殊,似乎删减了很多权限,甚至悬浮窗功能都要通过 adb 手动启动才行,app 无法主动申请悬浮窗权限


嘟嘟桌面的话也安装了,由于打开不了里面的系统插件功能(文案为开启 android 系统插件),所以也无法使用画中画,奇怪的是我安装了另一款名为 ATV 的桌面,能正常的调用系统插件


目前无法 root (没有 usb 调试权限和任何系统界面可开启,但有无线 adb 调试),所以也无法搞定 carplay ,就想到了自己开发一个 左侧高德,右侧音乐的 app 自用
wavever
2023-06-28 02:51:23 +08:00
有可能是 suface reparent 到 Taskview 这种
ofnh
2023-06-28 08:42:36 +08:00
@think2011
权限问题的话,只能是你就自己解决了,车机和手机不一样,车机相对封闭,无法完全像手机一样

你说的 android 系统插件应该是 widget 吧,你可以自己用 AppWidgetHost 去调用具体的组件,但是实际效果并不好

我上面说的嘟嘟桌面,其实是嘟嘟桌面定制版,比如比亚迪定制版之类的,他们的画中画其实就是悬浮窗
shuianqingfeng
2023-06-28 15:09:38 +08:00
难怪更新慢 现在明白原理了
think2011
2023-06-28 16:58:57 +08:00
@ofnh 还有一个关键的问题忘记问了

android 是可以直接嵌入例如高德的 apk 吗? 如果不行的话,是怎么做到将高德嵌入到的 app ,实现画中画的,还是反编译,或者是官方、第三方的 api ,我搜索了一圈、github 也找了,好像并没有公开的地方可以拿到我能嵌入到我的 app 的高德

我并不是做 android 开发的,如果问题太愚蠢的哈,见谅哈
ofnh
2023-06-28 17:45:05 +08:00
@think2011
无法嵌入 apk 的
画中画实现方式有几种
1 、伪画中画:使用悬浮窗版的高德,配合程序页面进行切换覆盖,可以达到肉眼画中画的效果,这也是门槛最低的方式
2 、系统底层实现:如方易通的 rom ,在底层就已经提供对应的 api 了,可以直接调用
3 、ActivityView:如上所说,门槛比较高,需要 root 或者系统级签名,这种实现方式在网上可以查到对应的代码
4 、修改高德:难度比较大,对高德的修改也比较多

所以综上所述,建议你使用方式 1 ,门槛相对比较低,也符合你的需求

另外......一个.net 路过.....
think2011
2023-06-28 19:45:17 +08:00
@ofnh 咦,那人家的悬浮版高德是怎么做的。 官方的高德悬浮窗记得不能直接操作,点击后就放大了

😯 噢,难道说悬浮版高德其实就是难度比较高的 4 ,可能反编译或者怎么样的修改了高德

谢大佬,我折腾看看
ofnh
2023-06-29 08:49:48 +08:00
@think2011
悬浮版高德也是经过修改的,但是有现成的,你可以直接用,就不需要你再经一手修改了

有可能你说的悬浮版是大插件版本?

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

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

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

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

© 2021 V2EX