4. 设备音乐控制功能
Important
接口需要设备处于【音乐模式】才能生效
判断设备是否支持【音乐模式】
public boolean isSupportDeviceMusicMode() {
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//获取当前操作设备
BluetoothDevice usingDevice = controller.getUsingDevice();
if (null == usingDevice) return false;
DeviceInfo deviceInfo = controller.getDeviceInfo(usingDevice);
if (null == deviceInfo) return false; //设备未初始化
return deviceInfo.isDevMusicEnable();
}
判断设备是否处于【音乐模式】
public boolean isDeviceInDeviceMusicMode() {
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//获取当前操作设备
BluetoothDevice usingDevice = controller.getUsingDevice();
if (null == usingDevice) return false;
DeviceInfo deviceInfo = controller.getDeviceInfo(usingDevice);
if (null == deviceInfo) return false; //设备未初始化
return deviceInfo.getCurFunction() == AttrAndFunCode.SYS_INFO_FUNCTION_MUSIC;
}
4.1. 获取设备音乐信息
JL_BluetoothManager方式
function :
AttrAndFunCode.SYS_INFO_FUNCTION_MUSIC – 设备音乐模式mask : – 标识功能码
掩码位 |
说明 |
|---|---|
Bit0 |
音乐播放状态 |
Bit1 |
音乐名称信息 |
Bit2 |
EQ信息 |
Bit3 |
文件类型 |
Bit4 |
播放模式 |
命令构造
CommandBase getMusicInfoCmd = CommandBuilder.buildGetMusicSysInfoCmd(0x07);
代码示例参考 查询设备系统信息
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//添加蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onMusicNameChange(BluetoothDevice device, MusicNameInfo nameInfo) {
//此处将回调音乐名信息
}
@Override
public void onMusicStatusChange(BluetoothDevice device, MusicStatusInfo statusInfo) {
//此处将回调音乐播放状态
}
@Override
public void onPlayModeChange(BluetoothDevice device, PlayModeInfo playModeInfo) {
//此处将回调播放模式信息
}
});
//执行获取设备音乐信息功能并等待结果回调
controller.getDeviceMusicInfo(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//结果将会在BTRcspEventCallback#onMusicNameChange、
// BTRcspEventCallback#onMusicStatusChange、BTRcspEventCallback#onPlayModeChange回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
4.1.1. MusicNameInfo
音乐名称信息
public class MusicNameInfo {
private int cluster; //簇号 -- 用于定位文件路径
private String name; //音乐名
}
4.1.2. MusicStatusInfo
音乐状态信息
public class MusicStatusInfo {
private boolean isPlay; //是否播放
private int currentTime; //当前播放时间(单位: 毫秒)
private int totalTime; //时间总长(单位: 毫秒)
private int currentDev; //设备句柄
}
4.1.3. PlayModeInfo
播放模式信息
public class PlayModeInfo {
private int playMode; //播放模式
}
Note
4.1.4. 播放模式对照表
数值 |
模式名称 |
|---|---|
0 |
无效模式 |
1 |
全部循环 |
2 |
设备循环 |
3 |
单曲循环 |
4 |
随机播放 |
5 |
文件夹循环 |
4.2. 获取设备音乐播放状态
JL_BluetoothManager方式
function :
AttrAndFunCode.SYS_INFO_FUNCTION_MUSIC – 设备音乐模式mask :
0x01 << AttrAndFunCode.SYS_INFO_ATTR_MUSIC_STATUS_INFO – 标识音乐播放状态命令构造
CommandBase getMusicPlaybackStatusCmd = CommandBuilder.buildGetMusicStatusInfoCmd();
代码示例参考 查询设备系统信息
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//添加蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onMusicStatusChange(BluetoothDevice device, MusicStatusInfo statusInfo) {
//此处将回调音乐播放状态
}
});
//执行获取设备音乐播放状态功能并等待结果回调
controller.getDeviceMusicStatusInfo(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//结果将会在BTRcspEventCallback#onMusicStatusChange回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
Note
音乐播放状态, MusicStatusInfo
4.3. 获取支持的播放格式
JL_BluetoothManager方式
function :
AttrAndFunCode.SYS_INFO_FUNCTION_PUBLIC – 公共属性mask :
0x01 << AttrAndFunCode.SYS_INFO_ATTR_FILE_TYPE – 标识支持的文件格式命令构造
CommandBase getBrowseFileTypeCmd = CommandBuilder.buildGetBrowseFileTypeCmd();
代码示例参考 查询设备系统信息
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//添加蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onFileFormatChange(BluetoothDevice device, String fileFormat) {
//此处将回调支持播放文件格式
}
});
//执行获取支持播放格式功能并等待结果回调
controller.getPlayFileFormat(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//结果将会在BTRcspEventCallback#onFileFormatChange回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
4.4. 音乐播放或者暂停
JL_BluetoothManager方式
function :
AttrAndFunCode.SYS_INFO_FUNCTION_MUSIC – 音乐模式flag :
AttrAndFunCode.FUNCTION_MUSIC_CMD_PLAY_OR_PAUSEextend : NULL
命令构造
CommandBase musicPlayOrPauseCmd = CommandBuilder.buildPlayOrPauseCmd();
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//执行音乐播放或暂停功能并等待结果回调
controller.musicPlayOrPause(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
4.5. 播放上一曲
JL_BluetoothManager方式
function :
AttrAndFunCode.SYS_INFO_FUNCTION_MUSIC – 音乐模式flag :
AttrAndFunCode.FUNCTION_MUSIC_CMD_PLAY_PREVextend : NULL
命令构造
CommandBase musicPlayPrevCmd = CommandBuilder.buildPlayPrevCmd();
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//执行播放上一曲功能并等待结果回调
controller.musicPlayPrev(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
4.6. 播放下一曲
JL_BluetoothManager方式
function :
AttrAndFunCode.SYS_INFO_FUNCTION_MUSIC – 音乐模式flag :
AttrAndFunCode.FUNCTION_MUSIC_CMD_PLAY_NEXTextend : NULL
命令构造
CommandBase musicPlayNextCmd = CommandBuilder.buildPlayNextCmd();
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//执行播放下一曲功能并等待结果回调
controller.musicPlayNext(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
4.7. 切换下一个播放模式
JL_BluetoothManager方式
function :
AttrAndFunCode.SYS_INFO_FUNCTION_MUSIC – 音乐模式flag :
AttrAndFunCode.FUNCTION_MUSIC_CMD_NEXT_PLAYMODEextend : NULL
命令构造
CommandBase musicNextPlaymodeCmd = CommandBuilder.buildNextPlaymodeCmd();
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//执行切换下一个播放模式功能并等待结果回调
controller.musicSwitchNextPlayMode(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
4.8. 跳转到指定时间
JL_BluetoothManager方式
function :
AttrAndFunCode.SYS_INFO_FUNCTION_MUSIC – 音乐模式flag :
AttrAndFunCode.FUNCTION_MUSIC_CMD_FAST_FORWARD or FUNCTION_MUSIC_CMD_RETREAT_QUICKLYextend : 指定时间(2Bytes)
命令构造
int orientation = Constants.SEEK_ORIENTATION_BACK;//跳转方向
short time = 1234; //跳转时间戳
CommandBase command = orientation == Constants.SEEK_ORIENTATION_BACK ?
CommandBuilder.buildFastForwardCmd(time) : CommandBuilder.buildRetreatQuicklyCmd(time);
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
int orientation = Constants.SEEK_ORIENTATION_FORWARD;
//orientation : Constants.SEEK_ORIENTATION_FORWARD - 往前,Constants.SEEK_ORIENTATION_BACK - 往后
short time = 3000;
//time : 时间戳
//执行跳转到指定时间戳功能并等待结果回调
controller.musicSeekToProgress(controller.getUsingDevice(), orientation, time, new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});