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

319 天前
 think2011

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

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

6233 次点击
所在节点    Android
15 条回复
CyJaySong
319 天前
画中画
olbb
319 天前
就是悬浮窗吧, 跟小窗播放视频一个原理
gaifanking
319 天前
ysy950803
319 天前
可能是应用自己用悬浮窗口开发的,也可能是系统的小窗模式(国内那些 ROM 基本都有这个功能,不需要应用本身怎么适配),不算什么新鲜东西了。
ebushicao
319 天前
很多是车企找高德合作的(付费给高德合作),所以很多车机里的高德更新的很慢。
ofnh
318 天前
你在 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
318 天前
fix:真假->增加

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

另外画中画还有一种实现方式,就是反射 android.app.ActivityView ,门槛比较高,需要 root 或者有系统级签名
think2011
318 天前
@ofnh 没想到大佬也在这

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


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


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

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

我上面说的嘟嘟桌面,其实是嘟嘟桌面定制版,比如比亚迪定制版之类的,他们的画中画其实就是悬浮窗
shuianqingfeng
317 天前
难怪更新慢 现在明白原理了
think2011
317 天前
@ofnh 还有一个关键的问题忘记问了

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

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

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

另外......一个.net 路过.....
think2011
317 天前
@ofnh 咦,那人家的悬浮版高德是怎么做的。 官方的高德悬浮窗记得不能直接操作,点击后就放大了

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

谢大佬,我折腾看看
ofnh
317 天前
@think2011
悬浮版高德也是经过修改的,但是有现成的,你可以直接用,就不需要你再经一手修改了

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

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

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

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

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

© 2021 V2EX