更新记录
1.5.2(2026-09-07)
版本更新问题
1.5.1(2026-09-07)
细节优化
1.5.0(2026-09-07)
- 手机端和仪表端天气弹框改为按设计稿坐标等比缩放,分别使用底部卡片和仪表横向卡片布局。
- 移除旧标题栏和共用位置参数,温度单位及固定两条预警文字改由前端显式传入。
- 两端分别支持装饰背景、关闭按钮、天气、四项指标和两条预警的绝对路径图片配置。
- 删除旧弹性 XML/StackView 布局及内置天气资源,不为无效输入提供默认图片或兼容分支。
平台兼容性
uni-app(4.72)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|---|
| × | × | - | - | - | - | 5.0 | 1.5.2 | 12 | 1.5.2 | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
hl-edrive-auto
亿连手机互联 Android / iOS UTS 插件。它提供 AuthKey 授权、扫码组网、连接状态监听、地图入口、自定义 Marker 和路线坐标提取,并保留 Android SDK 的扫码、投屏、音乐与导航能力。
支持范围
- uni-app Vue 2 / Vue 3
- Android 5.0(API 21)及以上,支持
armeabi-v7a、arm64-v8a - iOS 12.0 及以上
- iPhone 真机 arm64
- Android 亿连 SDK
12.15.0.0807-SNAPSHOT - iOS 亿连 SDK
V12.15_DYSK02_20260821
插件不支持 HarmonyOS、Web 和 iOS 模拟器。
接入前配置
Android:
- 在宿主项目配置与亿连 AuthKey、高德 Key 匹配的应用包名和签名。
- 使用真机运行;授权时传入 Android 对应的高德 Key。
- 插件已声明互联、定位、蓝牙、相机、悬浮窗、前台服务等 Android 权限,运行时扫码和投屏权限由插件按需申请。
iOS:
- 配置与亿连 AuthKey、高德 Key 匹配的 Bundle ID。
- 配置开发证书和描述文件。
- 开启
Hotspot Configuration能力。 - 开启
Access WiFi Information能力。
插件已在 utssdk/app-ios/UTS.entitlements 中声明这两项能力,云端打包时会合并到宿主 App;Apple 开发者后台的 App ID 和描述文件也必须同步开启。
插件已经声明本地网络、定位、蓝牙、相机、运动、Bonjour 和后台模式说明。Bundle ID、签名、Team 与 Capability 不写入插件,由宿主项目统一管理。
快速开始
<script setup>
import { onMounted, onUnmounted } from 'vue'
import * as EDriveAuto from '@/uni_modules/hl-edrive-auto'
const start = (authKey, amapKey) => {
// Key 由业务层在运行时传入,插件原生代码不保存项目 Key。
EDriveAuto.authorize({ authKey, amapKey }, (authResult) => {
if (!authResult.success) return
uni.scanCode({
onlyFromCamera: true,
success: ({ result }) => {
EDriveAuto.connectByQrCode(result, (event) => {
console.log('组网状态', event.code, event.message)
})
}
})
})
}
onMounted(() => {
EDriveAuto.onConnectionStatusChange((event) => {
if (event.connected) {
EDriveAuto.openMapHomePage((result) => console.log('打开地图首页', result.success))
}
})
})
onUnmounted(() => EDriveAuto.offConnectionStatusChange())
</script>
共用 Demo 使用 uni.scanCode() 获取二维码文本,再调用 connectByQrCode()。Android 也可使用插件独有的 scanQrEc() 或 scanConnectEc() 调起华为 Scan Kit。
API
authorize(options, callback)
设置高德 Key,并使用 AuthKey 完成亿连 SDK 授权。调用其他亿连接口前必须先授权。
| 参数 | 类型 | 说明 |
|---|---|---|
options.authKey |
string |
亿连后台 SDK 分发 Key |
options.amapKey |
string |
当前运行平台对应的高德地图 Key |
callback |
(result) => void |
返回授权结果 |
connectByQrCode(qrContent, callback)
将扫码结果交给亿连 SDK,SDK 自动完成 Wi-Fi 或蓝牙组网并启动互联服务。回调可能触发多次,terminal 表示当前流程结束。
onConnectionStatusChange(callback)
监听连接状态。注册后立即返回一次当前状态,后续继续接收 SDK 状态变化。
公开状态包括:
unauthorized:尚未授权ready:授权完成,等待扫码connecting:正在组网互联connected:普通连接成功mirrorConnected:镜像连接成功disconnected:已断开
offConnectionStatusChange()
移除并释放前端连接状态回调。页面卸载时必须调用。
getConnectionStatus()
同步读取插件当前保存的连接状态快照。
disconnect(callback)
断开当前互联,但不关闭亿连互联服务。再次扫码时插件会先调用 SDK 的重新连接接口。
openMapHomePage(callback)
打开亿连地图首页,并将地图返回目标设置为三方来源页。只有普通连接或镜像连接成功后才能调用。
showEDAMapSearch(callback)
打开高德地图位置选点页面。该接口对应亿连 SDK 的 showEDAMapSearch,只有普通连接或镜像连接成功后才能调用。
addCustomMarker(options, callback)
在亿连原生地图中添加或更新 Marker。相同 markerId 会更新已有 Marker;成功时 handle 即为标准化后的 markerId。
const iconPath = plus.io.convertLocalFileSystemURL('_www/static/marker.png')
const selectedIconPath = plus.io.convertLocalFileSystemURL(
'_www/static/marker-selected.png'
)
EDriveAuto.addCustomMarker({
markerId: 'store-1001',
position: { latitude: 30.578679, longitude: 114.463383 },
clickable: true,
iconPath,
selectedIconPath,
extraData: {
temperature: '23',
temperatureUnit: '°C',
weather: '雷阵雨',
pressureLabel: '气压',
pressure: '1010 hpa',
humidityLabel: '湿度',
humidity: '45%',
windSpeedLabel: '风速',
windSpeed: '5.1m/s',
visibilityLabel: '能见度',
visibility: '8507m',
yellowAlertText: '前方有雷阵雨',
redAlertText: '前方有强对流-大风'
}
}, (result) => console.log('添加 Marker', result))
iOS 使用 iconPath 和 selectedIconPath,两者必须是可读取的绝对文件路径。项目内的静态资源使用 _www/static/... 路径,并通过 plus.io.convertLocalFileSystemURL() 转换后传入。
如果图片来自 uni.chooseImage(),同样需要转换其临时路径:
uni.chooseImage({
count: 1,
success(res) {
const iconPath = plus.io.convertLocalFileSystemURL(res.tempFilePaths[0])
EDriveAuto.addCustomMarker({
markerId: 'marker-1',
position: { latitude: 30.578679, longitude: 114.463383 },
iconPath
}, (result) => console.log('添加 Marker', result))
}
})
不要直接向 iOS 传入 /static/marker.png、@/static/marker.png、网络 URL 或 file:// URL。plus.io 仅在 App 运行环境可用。Android 使用 iconName、iconResNameVirtual 指定宿主 drawable/mipmap 资源名称,并可设置 pageFlag、zIndex。
removeCustomMarker(handle, callback)
移除指定 Marker。addCustomMarker 的回调参数是结果对象,必须保存并传入其中的
result.handle 字符串,不能把整个 result 对象作为 handle。
let markerHandle = ''
EDriveAuto.addCustomMarker(options, (result) => {
if (result.success && result.handle) {
markerHandle = result.handle
}
})
EDriveAuto.removeCustomMarker(markerHandle, (result) => {
console.log('移除 Marker', result)
})
clearAllCustomMarkers(callback)
清除当前亿连地图中的全部自定义 Marker。
onCustomMarkerClick(callback) / offCustomMarkerClick()
监听原生地图 Marker 点击。回调返回 handle、markerId、坐标和添加 Marker 时传入的 extraData。该监听只返回点击事件,不会自动创建详情弹框。页面卸载时调用 offCustomMarkerClick() 释放持续回调并使最近点击上下文失效。
showCustomMarkerPopup(options, callback)
使用最近一次 Marker 点击产生的原生上下文,显式在手机端和车机端显示天气详情。Android 使用点击回调提供的 Overlay,iOS 使用 eDriveAutoMapMarkerMixer 的双端透明画布。
本仓库的 pages/index/index.vue 已提供完整可运行示例:13 个可见文字字段直接编辑,手机端与仪表端分别配置等比缩放和背景色。测试 Demo 固定使用 static/edrive-weather-popup 内的 9 张设计资源,页面启动时自动转换成原生绝对路径,不再显示图片路径输入项,也不再使用 logo.png 占位。
EDriveAuto.onCustomMarkerClick((event) => {
if (!event.extraData) return
const rootPath = '_www/static/'
const staticRootPath = plus.io.convertLocalFileSystemURL(rootPath)
const imagePath = (name) => `${staticRootPath}/weather-popup/${name}`
const createStyle = (scale) => ({
scale,
backgroundColor: '#FFFDFDFD',
backgroundImagePath: imagePath('popup-background.png'),
closeIconPath: imagePath('close.png'),
weatherIconPath: imagePath('thunderstorm.png'),
pressureIconPath: imagePath('pressure.png'),
humidityIconPath: imagePath('humidity.png'),
windSpeedIconPath: imagePath('wind-speed.png'),
visibilityIconPath: imagePath('visibility.png'),
yellowAlertIconPath: imagePath('warning-yellow.png'),
redAlertIconPath: imagePath('warning-red.png')
})
EDriveAuto.showCustomMarkerPopup({
handle: event.handle,
data: event.extraData,
phoneStyle: createStyle(1),
vehicleStyle: createStyle(1)
}, (result) => {
console.log('手机端显示', result.phoneShown)
console.log('车机端显示', result.vehicleShown)
})
})
handle 必须来自最近一次点击事件。再次点击、取消监听、删除对应 Marker 或清空 Marker 后,旧句柄会失效。手机端弹框固定在地图画布底部,仪表端固定在设计稿位置,不再接收共用位置参数。
data 是两端共用的文字数据。温度数值和单位、天气描述、四项指标标签和值、黄色预警文字、红色预警文字全部必填且不能为空。插件按 标签: 值 组合指标,不写死任何业务文字。
phoneStyle 和 vehicleStyle 必须分别完整提供。scale 是当前画布自适应比例上的乘数,必须大于 0;卡片尺寸、内部坐标、字号和图标统一等比缩放。背景色仅支持 #RRGGBB 或 Android 顺序的 #AARRGGBB。
九个图片字段必须是可读取、可解码的绝对文件路径,不接受相对路径、网络 URL、file:// URL 或 content:// URI,也不会使用插件内置图片替代无效输入。用户提供的资源对应关系为:组 836.png 是装饰背景,close.png 是关闭图标,滚动组 23.png 至 滚动组 26.png 依次是气压、湿度、风速和能见度图标。天气主图标及两种预警图标由业务侧另外传入。
手机端以 750 × 1448 地图画布和 720 × 788 卡片为参考,底部居中;仪表端以 1500 × 750 画布和 710 × 400 卡片为参考。任一端点击关闭按钮都会同步移除两端弹框。
setRoutePointCallback(count, callback) / offRoutePointCallback()
从当前规划路线中提取 count 个等距坐标点,count 必须为大于 0 的整数。SDK 路线变化后会继续回调;不再需要时调用 offRoutePointCallback()。
Android 独有接口
这些接口直接在 interface.uts 中声明,不使用 APP-ANDROID 条件声明;业务代码只应在 Android 运行环境调用。
| 接口 | 说明 |
|---|---|
getEcVersion、toEcActivity |
获取 SDK 版本、进入亿连原生页面 |
scanQrEc、scanConnectEc |
调起华为 Scan Kit 扫码,或扫码后直接连接 |
reconnectEc |
按指定超时重新连接亿连服务 |
getMirrorProjectionStatus、startMirrorProjection、stopMirrorProjection |
查询和控制镜像投屏;当前 SDK 不支持主动停止投屏,调用停止接口会返回明确错误 |
initMusicControl、getMusicInfo、refreshMusicInfo、controlMusicPlayback、openMusicPage |
音乐状态与播放控制 |
startNavigation、stopNavigation、getNavigationStatus |
导航控制与状态查询 |
dismissOverlay |
关闭亿连地图浮层 |
错误码
| 错误码 | 说明 |
|---|---|
AUTH_INVALID_ARGUMENT |
AuthKey 或高德 Key 为空 |
AUTH_IN_PROGRESS |
已有授权请求进行中 |
AUTH_FAILED |
亿连授权失败 |
CONNECT_NOT_AUTHORIZED |
未完成授权 |
CONNECT_EMPTY_QR |
二维码内容为空 |
CONNECT_IN_PROGRESS |
已有组网流程进行中 |
CONNECT_NOT_CONNECTED |
当前没有可断开的连接 |
CONNECT_UNKNOWN_STATUS |
SDK 返回未识别的组网状态 |
MAP_NOT_CONNECTED |
未连接车机时请求地图 |
MAP_OPEN_FAILED |
亿连地图页面打开失败 |
MARKER_INVALID_ARGUMENT |
Marker 参数或坐标无效 |
MARKER_EXTRA_DATA_INVALID |
extraData 无法序列化为 JSON |
MARKER_ICON_LOAD_FAILED |
Marker 本地图片加载失败 |
POPUP_CONTEXT_UNAVAILABLE |
尚未点击 Marker,或最近点击上下文已经失效 |
POPUP_HANDLE_MISMATCH |
弹框句柄不是最近点击的 Marker |
POPUP_INVALID_DATA |
弹框标题、位置、指标标签或数据格式无效 |
POPUP_INVALID_STYLE |
弹框宽高或背景色无效 |
POPUP_ICON_NOT_FOUND |
图标不是可读取的绝对文件 |
POPUP_ICON_DECODE_FAILED |
图标文件无法被平台图片解码器读取 |
POPUP_SIZE_OUT_OF_BOUNDS |
指定卡片尺寸无法完整放入当前显示端 |
POPUP_RENDER_FAILED |
手机端和车机端弹框均未成功显示 |
ROUTE_POINT_INVALID_COUNT |
路线坐标点数量无效 |
ROUTE_POINT_FAILED |
SDK 路线坐标提取失败 |
组网错误还会返回 nativeCode,对应亿连二维码连接状态码 0...14。

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 360
赞赏 0
下载 12640183
赞赏 1950
赞赏
京公网安备:11010802035340号