1.1. 修订记录

版本 日期 修改记录 修改人
V1.2.48 20171224 初始版本 randychen
V1.2.52 20180326 语义理解与语音合成 randychen
V1.2.60 20190313 为2.0版语音增加热词功能 Luke
V1.2.74 20231010 更新jdbase版本,新增分区设置,语音设置 yin

1.2. 概述

SDK包含以下功能模块

  1. 获取主机推荐歌单
  2. 获取主机本地音乐和扫描本地场景文件夹
  3. 语音合成和拦截语义自行处理
  4. 获取主机接受的485数据与主机发送485数据
  5. 主机模式切换
  6. 双音源机器支持分区设置

集成可以根据自己的需求选择功能

1.3. 交互图

JdPlayOpenSdk

1.4. 公共接入配置

1.4.1. 下载demo

百度网盘下载链接: 链接: https://pan.baidu.com/s/179xcJ6HirWoDVofAcsJN5A 密码: 3vix
路径:JdRelease/jd_music_and_voice_open_sdk
demo需安装并运行于背景音乐主机中,安装完成后重启机器。

1.4.2. 导入核心包

将demo内部两个核心包导入:jdbase-release.aar 和 jdmusic-release-X.X.XX.aar 导入项目

repositories{
    flatDir{
        dirs'libs'
    }
}
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile(name: 'jdbase-release', ext: 'aar')
    compile(name: 'jdmusic-release-X.X.XX', ext: 'aar')
}

1.4.3. 添加权限

在AndroidManifest.xml中添加如下权限

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

1.4.4. 初始化

public class App extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
        JdPlayPresenter.getInstance().init(this);
    }
}

1.5. 基于开放SDK接入

1.5.1. 关键类说明

说明
JdRecommendMusicPresenter 获取主机推荐音乐
JdPlayPresenter 播放控制与播放状态监听
JdLocalMusicPresenter 获取主机本地歌曲列表,扫描场景歌曲文件夹
JdVoicePresenter 语音合成和语义识别
TTS 语音合成实体类

1.5.2. 关键类接口使用说明

TTS

public class TTS {
    //不操作
    public static final int TYPE_NONE = 0;
    //进入识别
    public static final int TYPE_ASR = 1;
    //进入唤醒
    public static final int TYPE_WAKE_UP = 2;
    //TTS 内容
    private String tts;
    //是否打断当前播放的
    private boolean canInterrupt;
    //TTS类型
    private int ttsType;
}

JdRecommendMusicPresenter

回调函数
public interface IRecommendCallBack {
    void onQuerySceneMusic(List<JDMusicChannel> var1);
}

void onQuerySceneMusic(List<JDMusicChannel> var1)
参数
* var1 主机推荐音乐集合
主要方法
void querySceneMusic()
 查询主机推荐音乐集合

JdPlayPresenter

回调函数
public interface IPlayCallBack {
    void onProgress(int var1, int var2);
    void onSongChange(EglSong var1);
    void onPlayStatus(int var1);
    void onListModeChange(String var1);
    void onPlaylist(List<JdSong> var1);
    void onPlaylistPosition(int var1);
}
public interface I485DataCallBack {
    void onReceiverData(String var1);
}

void onProgress(int var1, int var2)
参数
* var1 Progress
* var2 Max_Progress

void onSongChange(EglSong var1)
参数
* var1 改变后的歌曲

void onPlayStatus(int var1)
参数
* var1 播放状态

void onListModeChange(String var1)
参数
* var1 改变后的mode

void onPlaylist(List<JdSong> var1)
参数
* var1 歌曲集合

void onPlaylistPosition(int var1)
参数
* var1 播放歌曲在歌曲集合中的位置

void onReceiverData(String var1)
参数
* var1 485收到的数据
主要方法
void queryMediaInfo()
查询当前歌曲状态

void queryPlayList(final JdCallBack var1)
获取播放列表
参数
* var1 获取播放列表成功与失败的回调

void clearPlayList(final JdCallBack var1)
清空播放列表
参数
* var1 清空播放列表成功与失败的回调

void deletePlayListByPos(int var1, final JdCallBack var2)
删除播放列表指定位置的歌曲
参数
* var1 删除播放列表指定位置
* var2 删除播放列表指定位置的歌曲成功与失败的回调

void editPlaylist(final String var1, final JdCallBack var2)
编辑播放列表歌曲
参数
* var1 编辑播放列表歌曲指定位置
* var2 编辑播放列表歌曲成功与失败的回调

void refreshListAndPos(JdPlayList var1)
刷新播放列表和播放位置
参数
* var1 播放列表

void clearMediaData()
清空数据

void updatePlaylistPosition(EglSong var1)
更新播放位置
参数
* var1 歌曲

void togglePlay()
播放状态切换

void play()
播放

void pause()
暂停

void next()
下一首

void prev()
上一首

void switchListMode()
切换播放mode

String queryListMode()
* 查询播放mode

void seekTo(long var1)
改变播放进度
参数
* var1 进度值

void release()
释放资源

void playLocalSceneMusic(int var1, int var2)
根据位置编号播放
参数
* var1 编号位置
* var2 歌曲位置

void playLocalSceneMusic(String var1, String var2)
根据文件标识码播放 md5
参数
* var1 文件标识码
* var2 歌曲md5

void playSceneMusic(List<JDMusicChannel> var1, String var2)
播放场景推荐列表指定歌曲
参数
* var1 场景推荐列表集合
* var2 场景id

void playSceneMusic(JDMusicChannel var1)
播放推荐歌单
参数
* var1 推荐歌单

void playMusic(EglSong var1)
播放单首音乐
参数
* var1 歌曲

void playMusicByIndex(List<EglSong> var1, int var2)
播放播放列表指定位置歌曲
参数
* var1 播放列表
* var2 播放列表指定位置

void playOnlineMusic(BCategory var1)
播放在线音乐
参数
* var1 播放歌曲类型

void playSongByIndex(int var1)
播放指定位置歌曲
参数
* var1 指定位置

void playTTS(String var1, boolean var2)  此方法已过时
播放TTS 
参数
* var1 播放文本
* var2 是否打断当前播放的TTS

void playTTS(String var1) 此方法已过时
播放TTS 
参数
* var1 播放文本

void playTTS(TTS var1)
播放TTS
参数
* var1 播放TTS 类型数据

void send485Data(String var1)
发送485控制指令
参数
* var1 485控制指令

void set485ReceiverListener(I485DataCallBack callBack) 
设置485数据接受回调
参数
* callBack I485DataCallBack  回调接口

void enableSmartDeviceGrammar(boolean var1)
禁用本地语法
参数
* var1是否禁用

void switchDeviceMode(String var1)
切换模式接口
参数
* var1模式

void setChannelSync(String var1)
设置同播分区
参数
* var1  "1":同播,"0":分区

void setChannel(String var1)
切换分区
参数
* var1  "1":1分区,"2":2分区

void getChannelSync()
获取当前状态是同播还是分区
结果:"1":同播,"0":分区

void getChannel()
获取当前分区
结果:"1":1分区,"2":2分区

void setChannelVolume(String var1, boolean var2)  
设置分区音量 
参数
* var1 分区  "1":1分区,"2":2分区
* var2 音量  范围"0-10"

void getChannelOneVolume()
获取1分区音量
结果:音量  范围"0-10"

void getChannelOneVolume()
获取2分区音量
结果:音量  范围"0-10"

public interface IChannelVolumeCallBack {
    void onChannelVolume(String channel,String volume);
}
音量回调 


void wakeUp(String wakeUpTip)
主动唤醒
调用后,屏主机会处于唤醒状态,可以直接进行语控。
* wakeUpTip 传入播报文本,调用后会先播报,在处于唤醒状态

void setSpeed(String speed)
设置TTS播报语速
* speed 取值0.5-2.0,0.5语速最快,2.0语速最慢

JdLocalMusicPresenter

回调函数
public interface ILocalMusicCallBack {
    void onGetSdSongsSuccess(List<EglSong> var1);
    void onQueryLocalSceneMusic(List<LocalSceneMusic> var1);
}

void onGetSdSongsSuccess(List<EglSong> var1)
参数
* var1 Sd歌曲集合


void onQueryLocalSceneMusic(List<LocalSceneMusic> var1)
参数
* var1 本地场景歌曲集合
主要方法
void querySdCardSongs()
查询sdcard歌曲

void queryLocalSceneMusic()
查询本地场景歌曲

JdVoicePresenter

回调函数
public interface IVoiceCallBack {
    boolean onAsrResult(String var1, VoiceExeBack var2);
    void onVoiceState(int var1);
    interface VoiceExeBack{
        @Deprecated
        void onSuccess(String var1);
        @Deprecated
        void onFail(String var1);
        void onSuccess(TTS var1);
        void onFail(TTS var1);
    }
}

boolean onAsrResult(String var1, VoiceExeBack var2)
参数
* var1 识别内容
* var2 拦截语义处理成功或者失败后回调 (处理完成后通过 VoiceExeBack 的onSuccess(TTS tts) 或者 onFail(TTS tts) 返回自行处理需要播放的TTS)
返回值
* true 拦截语义自己处理 
* false 不拦截交给主机处理
注意,有两种情况下背景音乐会处理语义
1. onAsrResult返回false时
2. onAsrResult返回true时, VoiceExeBack最终回调是onFail(TTS tts)

void onVoiceState(int var1)
参数
* var1 voice_state 状态回调 状态对应如下:
    //语音对话开始
    public static final int VOICE_STATE_SESSION_START = 10001;
    //识别开始录音
    public static final int VOICE_STATE_ASR_START_SPEECH = 10003;
    //识别录音结束
    public static final int VOICE_STATE_ASR_END_SPEECH = 10004;
    //开始语义识别
    public static final int VOICE_STATE_ASR_RECOGNITION = 10005;
    //语音对话结束
    public static final int VOICE_STATE_SESSION_END = 10008;
    //TTS 播放开始
    public static final int VOICE_STATE_TTS_START = 10006;
    //TTS 播放结束
    public static final int VOICE_STATE_TTS_FINISH = 10007;
主要方法
void setIVoiceCallBack(IVoiceCallBack callBack)
设置语音处理回调
参数
* callBack 回调方法
热词添加

拦截语音获取语义时,某些不好识别的设备名或场景名,可以设置热词,防止语控时识别不到。具体添加可以查看demo中JdVoiceFragment 注意修改完编译安装到背景主机上时,需要重启下主机

results matching ""

    No results matching ""