# X5musicsdk **Repository Path**: wisesdk/X5Musicsdk ## Basic Information - **Project Name**: X5musicsdk - **Description**: No description available - **Primary Language**: Java - **License**: WTFPL - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-03-05 - **Last Updated**: 2024-10-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 对接场景 客户设备端接入华尔思背景音乐功能,复用华尔思现有的音乐界面。 ### 对接方式 1. 华尔思提供sdk接口,现成音乐模块UI输出 2. 客户使用华尔思屏或者自己家屏,自己开发应用集成华尔思背景音乐sdk ### 适用产品 | 尺寸 | 分辨率 | 分区 |部分产品系列|density| | --- | --- | --- |--- |--| | 4寸 | 480*480 | 单分区 |X5Android|160| ### Demo地址 [Gitee Demo地址](https://gitee.com/delingkeji/X5Musicsdk) ### 音乐sdk下载地址 Demo中 app/lib/wfourth_music_sdk_1.0.6.aar ### 接入说明 ##### 1.初始化 `WiseSdk.getInstance().init(this,"**");` | 上下文 | deviceKey | | --- | --- | | Application | 产品唯一id【客户找华尔思申请】 | ##### 2.设置回调 `MusicPrenter.getInstance().setISearchResponseView(this); //音乐搜索相关回调 MusicPrenter.getInstance().setMusicImpl(this); //音乐状态相关回调 ` ##### 3.界面跳转 sdk提供部分已有功能界面,如音乐、设置、更多应用、智能对讲等界面。客户可以根据自身需求,使用或者不使用。 ###### 3.1跳转音乐界面 `MusicPrenter.getInstance().startActivityMusic();` ###### 3.2跳转设置界面 `MusicPrenter.getInstance().startSetting();` ###### 3.4跳转更多应用界面 ` MusicPrenter.getInstance().startMoreACtivity();` ###### 3.4跳转智能对讲界面 `MusicPrenter.getInstance().goIntergentInroom();` ###### 3.5下拉框跳转已有功能入口 `开:MusicPrenter.getInstance().setControlCenterDialog(true); 关:MusicPrenter.getInstance().setControlCenterDialog(false); ` 备注:是否直接应用已有的下拉框功能,打开后屏幕上沿下滑操作即可跳出。 部分效果图如: [下拉框功能展示](https://gitee.com/delingkeji/X5Musicsdk/raw/master/pic/%E4%B8%8B%E6%8B%89%E6%A1%86%E5%8A%9F%E8%83%BD.png) [音乐模块展示](https://gitee.com/delingkeji/X5Musicsdk/blob/master/pic/%E9%9F%B3%E4%B9%90_%E6%8E%92%E8%A1%8C%E6%A6%9C.png) [音乐播放展示](https://gitee.com/delingkeji/X5Musicsdk/raw/master/pic/%E9%9F%B3%E4%B9%90_%E6%92%AD%E6%94%BE.png) [设置展示](https://gitee.com/delingkeji/X5Musicsdk/raw/master/pic/%E8%AE%BE%E7%BD%AE.png) [更多应用展示](https://gitee.com/delingkeji/X5Musicsdk/raw/master/pic/%E6%9B%B4%E5%A4%9A%E5%BA%94%E7%94%A8.png) [我的音乐模块展示](https://gitee.com/delingkeji/X5Musicsdk/raw/master/pic/%E9%9F%B3%E4%B9%90_%E6%88%91%E7%9A%84.png) ##### 4.回调接口如下 音乐状态回调 ``` void musicList(List musicInfoList); //本地音乐回调 void puseMusic(boolean isp); //是否暂停 void playMusic(boolean isp); //是否播放 void addMusicCollection(); //音乐收藏回调 void cancelMusicCollection(); //音乐取消收藏回调 void error(String msg); //音乐删除 失败回调 void startCollectMusic(); //开始收藏 void onMusicCollection(List result); //收藏列表回调 void err(String msg); //失败收藏 void finishMusicCollection(); //收藏完成回调 void onProgress(AudioProgressEvent event); //进度回调 void musicError(String msg); //音乐错误回调 void onPlayMode(PlayMode msg); //音乐播放模式回调 void onMusic(MusicInfo musicInfo); //当前播放音乐回调 ``` 搜索接口回调: ``` void showSearchWaitingDialog(); void dissSearchWitingDialog(boolean isLoadMore, boolean isCompleted); void updateSearchInfo(T response, boolean isLoadMore, boolean isCompleted); //搜索结果回调 void showSearchErrorInfo(String error); //搜索错误回调 ``` ##### 5.控制接口说明 ###### 5.1设置播放队列 `MusicPrenter.getInstance().setMusicList(List list,int posion); ` | 字段 |必填 | 类型 | 说明 | | --- | --- | --- | --- | | list |是 |List | 音乐列表 | | posion | 否 | int | 播放index | ###### 5.2 播放音乐 `MusicPrenter.getInstance().playMusic();` ###### 5.3暂停音乐 `MusicPrenter.getInstance().puseMusic();` ###### 5.4 上一曲 `MusicPrenter.getInstance().previous();` ###### 5.5下一曲 ` MusicPrenter.getInstance().next();` ###### 5.6 设置播放模式 ` MusicPrenter.getInstance().setPlayMode(PlayMode.RANDOM);` | 模式 | 值 | | --- | --- | | 随机 | PlayMode.RANDOM | | 单曲 | PlayMode.REPEAT | | 循环 | PlayMode.LOOP | ###### 5.7通过歌手搜索歌曲 `MusicPrenter.getInstance().findeMusicInfo(singer,1,10,true);` | 字段 | 说明 | | --- | --- | | singer | 歌手名称 | ###### 5.8 通过歌曲名称搜索 `MusicPrenter.getInstance().findeMusicInfo(musicName,1,10,true);` | 字段 | 说明 | | --- | --- | | musicName | 歌曲名称 | ###### 5.9通过歌手+歌曲名称搜索 ` MusicPrenter.getInstance().findeMusicInfo(singer,musicName,1,10,true);` | 字段 | 说明 | | --- | --- | | singer | 歌手名称 | | musicName | 歌曲名称 | ###### 5.10 设置播放进度 `MusicPrenter.getInstance().seekTo(int seekto);` | 字段 | 必填 | 类型 | 说明 | | --- | --- | --- | --- | | seekto | 是 | int | 音乐进度 单位为毫秒 | ###### 5.11 获取音乐当前播放总时长 返回值为int 单位为毫秒 ` MusicPrenter.getInstance().getTotalPlayTime();` ###### 5.12 获取音乐当前播放进度 返回值为int 单位为毫秒 ` MusicPrenter.getInstance().getNowPlayTime();` ###### 5.13 获取当前音量 返回值为int 最小值为0,最大值为20 ` MusicPrenter.getInstance().getTotalVolume();` ###### 5.14 设置当前音量 音量 最小值为0,最大值为20 ` MusicPrenter.getInstance().getTotalVolume();` ###### 5.15 获取本地音乐列表 `MusicPrenter.getInstance().getMusic();` ###### 5.16 添加音乐收藏 `MusicPrenter.getInstance().addMusicCollection(List songIds, String sheetId);` | 字段 | 必填 | 类型 | 说明 | | --- | --- | --- | --- | | songIds| 是 |String | 歌曲ID列表 | | sheetId | 是 | String| 收藏ID 默认为0 | ###### 5.17 删除音乐收藏 `MusicPrenter.getInstance().loadCollectMusicData(String sheetId,boolean isLoadMore); ` ###### 5.18 获取音乐收藏 `MusicPrenter.getInstance().loadCollectMusicData(String sheetId,boolean isLoadMore); ` | 字段 | 必填 | 类型 | 说明 | | --- | --- | --- | --- | | songIds| 是 |String | 歌曲ID列表 | | isLoadMore | 是 | boolean| 是否继续加载 | ###### 5.19 实体类 MusicInfo | 字段 | 类型 | 说明 | | --- | --- | --- | | code | int | 错误码 | | msg | String | 错误信息 | |ocalPath| String| 歌曲路径| |isLocal| boolean| 是否为本地歌曲| |musicId| String |歌曲唯一标识| |musicName| String |歌曲名称| |singerName |String| 歌手名称| |picUrl |String |歌曲图片路径| |lrcUrl |String |歌词路径| |listenUrl| String |试听url| |isCollection| String| 收藏状态| |isCpAuth |String |是否有权限播放| |songAuthorName |String |曲作者| |lyricAuthorName| String| 词作者| |length |String| 歌曲时长| |language |String| 语言| |albumNames| String[]| 专辑名称| #### 6.硬件接口相关控制 ##### 6.1继电器控制 `MusicPrenter.getInstance().controlElectricRelayEnable(ElectricType electricType,boolean switFlag)` | 继电器类型 |开关状态 | | --- | --- | | ElectricType.LEFT:继电器一 | 开:true | | ElectricType.RIGHT:继电器二 | 关:false | 备注:硬件标配2路继电器 ##### 6.2继电器状态查询 `boolean[] electricResult = MusicPrenter.getInstance().getElectricRelayEnable();` 返回两路继电器开关状态 ##### 6.3 喇叭控制 `MusicPrenter.getInstance().controlSpeaker(SpeakerType speakerType,boolean switFlag);` | 喇叭类型 |喇叭状态值 | | --- | --- | | SpeakerType.INNER:内置喇叭 | 开:true | | SpeakerType.OUTER:外置喇叭 | 关:false | ##### 6.4 自定义接收屏幕下拉事件 客户如果不使用 功能列表中3.5下拉框跳转已有功能入口,自定义自己的下拉弹框,可以通过事件接收来处理 原理:通过广播实现屏幕下拉反馈回调给应用上层,通过 Action注册和接收事件 | 事件类型 |广播 |属性| | --- | --- |--| | 屏幕下拉 | rk.android.MotionEvent |swipe: int 类型 ,值为1| 具体可参考测试demo 代码实现 ### 7.注意问题 * sdk适用于4寸Android产品开发,需要系统签名,需要和华尔思确认 * 每家客户对接,需要申请单独的项目deviceKey,用于项目初始化。如果没有对应的deviceKey,不分功能不可用。 * sdk为通用版本,部分功能删减和新增需要客户和华尔思沟通进行版本定制 demo部分使用截图: [测试截图1](https://gitee.com/delingkeji/X5Musicsdk/raw/master/pic/%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7%E8%B0%83%E8%AF%95.png)