2023-03-03

## apk安装

安装apk,将附件vwm_sdk解压并push到data目录下,给与vwm_sds目录下所有文件 chmod 777权限

```

adb push wvm_sdk /data/user/10/com.vwm.sds.engine/files/vwm_sdk/

```

## 初始化

### Manifest配置

服务查询权限申请

```

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"

        tools:ignore="QueryAllPackagesPermission" />

```

### 项目中导入vwm_sds.jar包, 引入AppLinkerServiceManager类,并初始化

`AppLinkerServiceManager.getInstance();`

### 服务绑定

`bind(Context context, BindCallback bindCallback)`

### 服务解绑

`unBind(Context context)`

## 数据结构

### RemoteRequest

**数据发送实体类**

| 属性名          | 类型  |  说明  |

| --------          | -----  | ----  |

| callId            | String  |  数据请求id,默认为UUID    |

| actionName  | String  |  请求关键字,会根据此关键字查找订阅者  |

| params        | Bundle |  数据参数,由数据发布者和订阅者共同约定此参数内容  |

### RemoteResult

**数据返回实体类**

| 属性名          | 类型  |  说明  |

| --------          | -----  | ----  |

| callId            | String      |  数据请求id,发送方RemoteRequest请求中的callId    |

| success      | boolean    |  请求是否成功  |

| code          | int            |  请求失败code  |

| errorMessage  | String  |  请求失败详细信息  |

| data          | Bundle      |  请求返回结果,由调用者和被调用者共同约定内容  |

## 监听数据更新

监听数据更新的应用需要向AppLinkerService注册关键字,此关键字由数据提供方来指定。

### 注册关键字监听

`register(String actionName, IRemoteConsumer.Stub consumer)`

| 参数名          | 类型  |  说明  |

| --------          | -----  | ----  |

| actionName  | String      |  订阅关键字,    |

| consumer    | IRemoteConsumer    |  数据更新回调  |

### 注销关键字监听

`unregister(String actionName, IRemoteConsumer.Stub consumer)`

| 参数名          | 类型  |  说明  |

| --------          | -----  | ----  |

| actionName  | String      |  订阅关键字    |

| consumer    | IRemoteConsumer    |  数据更新回调  |

### 发送数据更新

`post(RemoteRequest request)`

| 参数名          | 类型  |  说明  |

| --------          | -----  | ----  |

| actionName  | String      |  订阅关键字    |

| consumer    | IRemoteConsumer    |  数据更新回调  |

## 接口调用

能力提供者需要向AppLinkerService注册关键字actionName,关键字在系统中唯一。

### 注册为能力提供者

`addOnCallObserver(String actionName, IRemoteCallObserver.Stub observer)`

| 参数名          | 类型  |  说明  |

| --------          | -----  | ----  |

| actionName  | String      |  接口能力关键字    |

| observer      | IRemoteCallObserver    |  接口回调  |

### 注销能力

`removeOnCallObserver(String actionName)`

| 参数名          | 类型  |  说明  |

| --------          | -----  | ----  |

| actionName  | String      |  接口能力关键字    |

### 调用服务能力

`call(RemoteRequest request, IRemoteCallback.Stub callback)`

| 参数名          | 类型  |  说明  |

| --------          | -----  | ----  |

| request  | RemoteRequest      |  调用参数    |

| callback    | IRemoteCallback    |  数据回调  |

-----

## SDS Engine 对接

### 接口选择

对接接口主要使用能力提供者接口,服务监听方需要通过`addOnCallObserver(String actionName, IRemoteCallObserver.Stub observer)`接口注册为能力提供者,并通过 `IRmoteCallObserver`监听回调。

## 空调

| 参数名          | 类型  |  值  |

| --------          | -----  | ----  |

| actionName  | String      |  VWM_SDS_AIR_CONTROL    |

#### 键值信息

`RemoteRequest`会返回相同的`actionName`, 具体指信息通过`params(Bundle)`返回,

| 键          | 值  |  说明  |

| --------          | -----  | ----  |

| VWM_SDS_INTENT  | open      |  打开空调    |

|  | close      |  关闭空调    |

|  | fanspeed_up      |  调大风速    |

|  | fanspeed_down      |  调小风速    |

|  | temperature_up      |  调高温度  |

|  | temperature_down      |  调低温度  |

## 系统音量

| 参数名          | 类型  |  值  |

| --------          | -----  | ----  |

| actionName  | String      |  VWM_SDS_VOLUME_CONTROL    |

#### 键值信息

`RemoteRequest`会返回相同的`actionName`, 具体指信息通过`params(Bundle)`返回,

| 键          | 值  |  说明  |

| --------          | -----  | ----  |

| VWM_SDS_INTENT  | increase_volume      |  调大音量    |

|  | decrease_volume      |  调小音量    |

## 播放控制

| 参数名          | 类型  |  值  |

| --------          | -----  | ----  |

| actionName  | String      |  VWM_SDS_MUSIC_PLAY_CONTROL    |

#### 键值信息

`RemoteRequest`会返回相同的`actionName`, 具体指信息通过`params(Bundle)`返回,

| 键          | 值  |  说明  |

| --------          | -----  | ----  |

| VWM_SDS_INTENT  | previous      |  上一曲  |

|  | next      |  下一曲    |

|  | continue      |  开始播放  |

|  | pause      |  暂停    |

## 歌曲搜索

歌曲搜索需要客户端返回相应的搜索结果进行语音播报,所以需要客户端返回结果并监听tts播报结束然后播放搜索歌曲。

#### 发起搜索

| 参数名          | 类型  |  值  |

| --------          | -----  | ----  |

| actionName  | String      |  VWM_SDS_MUSIC_SEARCH    |

#### 键值信息

`RemoteRequest`会返回相同的`actionName`, 具体指信息通过`params(Bundle)`返回,

| 键          | 说明  |  类型  |

| --------          | -----  | ----  |

| VWM_SDS_SONG  | 歌曲      |  String  |

|  VWM_SDS_ARTIST | 歌手      |  String  |

|  VWM_SDS_ALBUM| 专辑      |  String  |

|  VWM_SDS_FEATURE | 歌曲类别(流行,摇滚...)      |  String    |

|  VWM_SDS_PROVIDER | 酷我音乐      |  String    |

|  VWM_SDS_SPECIAL | 只有(离线\在线)两个值      |  String    |

|  VWM_SDS_STORAGE | U盘      |  String    |

|  VWM_SDS_INTENT | 播放音乐,无以上任何歌曲信息      |  String    |

示例:

* **播放音乐**

> VWM_SDS_INTENT=play

*  **我要听酷我音乐**

> VWM_SDS_PROVIDER=酷我音乐

*  **用在线音乐播放周杰伦的双截棍**

> VWM_SDS_SPECIAL=在线   

VWM_SDS_ARTIST=周杰伦 

VWM_SDS_SONG=双截棍   

## tts播报结束

| 参数名          | 类型  |  值  |

| --------          | -----  | ----  |

| actionName  | String      |  VWM_SDS_TTS_STOP    |

#### 键值信息

  无

## 导航到目的地

| 参数名          | 类型  |  值  |

| --------          | -----  | ----  |

| actionName  | String      |  VWM_SDS_NAVIGATION_TO    |

#### 键值信息

| 键          | 说明  |  类型  | 是否必须|

| --------          | -----  | ----  | ---|

| VWM_SDS_CITY  | 目的地城市或省份,    |  String  | 否|

|  VWM_SDS_DESTINATION | 具体目的地      |  String  | 是 |

## 退出导航

| 参数名          | 类型  |  值  |

| --------          | -----  | ----  |

| actionName  | String      |  VWM_SDS_STOP_NAVI    |

#### 键值信息

| 键          | 值  |  说明  |

| --------          | -----  | ----  |

| VWM_SDS_INTENT  | stop_navigate      |  退出导航  |

## TTS 播报

TTS播报使用`call(RemoteRequest request, IRemoteCallback.Stub callback)`方法,通过在request的bundle传入需要播报的tts文本,来进行tts的播放

| 参数名          | 类型  |  值  |

| --------          | -----  | ----  |

| actionName  | String      |  VWM_SDS_PLAY_TTS    |

#### 键值信息

| 键          | 值  |  类型  |

| --------          | -----  | ----  |

| VWM_SDS_INTENT  |tts文本      |  String  |

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ## apk安装 安装apk,将附件vwm_sdk解压并push到data目录下,给与vwm_sds目录下所有文件...
    波波哈哈阅读 1,436评论 0 0
  • 20230302第一章 02页 书店问题:老板要一个可以调阅兼录入书籍及销售额的程序。 它的元素有: -定义变量 ...
    景2529阅读 1,225评论 0 0
  • Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化、或者说序列化。它很...
    易_9ac1阅读 1,481评论 0 1
  • 西藏特色美食解析 你去西藏旅游过吗?我下面说的这些当地美食一定不要错过哦! 01 牦牛牛肉干。 到了藏区,你会发现...
    茜茜随感日记阅读 1,054评论 0 0
  • 果然,没几天我又来写日记了。 话说,先开心一下,我觉得近些年开心的事之一,就是买了这台二手苹果电脑(笔记本),键盘...
    Sssssuger阅读 1,189评论 0 0

友情链接更多精彩内容