10. 本地音乐控制功能
原名: ID3信息控制功能。 用于控制手机第三方播放器。
Important
接口需要设备处于【蓝牙模式】才能生效
判断设备是否支持【蓝牙模式】
public boolean isSupportLightMode() {
//获取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.isBtEnable();
}
判断设备是否处于【蓝牙模式】
public boolean isDeviceInLightMode() {
//获取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_BT;
}
10.1. 控制ID3信息流推送
JL_BluetoothManager方式
命令构造
boolean isOpenSteam = false;
CommandBase command;
if(isOpenSteam){ //打开ID3信息流推送
command = CommandBuilder.buildSetDeviceNotifyADVInfoCmd(1);
}else{ //关闭ID3信息流推送
command = CommandBuilder.buildStopDeviceNotifyADVInfoCmd();
}
代码示例参考 通用命令处理示例
Note
ID3信息流推送开启后, 如果设备接收到ID3音乐信息, 将会在 1.3 蓝牙事件监听器 #onDeviceCommand方法回调
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//注册蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onID3MusicInfo(BluetoothDevice device, ID3MusicInfo id3MusicInfo) {
//此处将会回调ID3音乐信息
}
});
//enable - true : 开启, false : 关闭
//执行控制ID3信息流推送功能并等待结果回调
controller.controlAdvBroadcast(controller.getUsingDevice(), enable, new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//enable = true, 开启ID3信息流推送,ID3信息将会在BTRcspEventCallback#onID3MusicInfo回调
//enable = false, 关闭ID3信息流推送
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
10.2. 获取ID3所有信息
JL_BluetoothManager方式
命令构造
CommandBase getID3MusicInfoCmd = CommandBuilder.buildGetBtSysInfoCmd(0x1ff);
代码示例参考 通用命令处理示例
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//注册蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onID3MusicInfo(BluetoothDevice device, ID3MusicInfo id3MusicInfo) {
//此处将会回调ID3音乐信息
}
});
//执行获取ID3所有信息功能并等待结果回调
controller.getID3MusicInfo(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//结果将会在BTRcspEventCallback#onID3MusicInfo回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
Note
10.2.1. ID3音乐信息
public class ID3MusicInfo implements Parcelable {
// 歌曲名
private String title;
// 作曲家
private String artist;
// 专辑
private String album;
// 序号
private int number = -1;
// 歌单总长度
private int total;
// 总时长
private int totalTime;
// 类型
private String genre;
// 当前时间
private int currentTime = -1;
// 播放状态
private boolean playStatus;
}
10.3. ID3音乐播放或暂停
JL_BluetoothManager方式
function :
AttrAndFunCode.SYS_INFO_FUNCTION_BT – 蓝牙功能功能type :
AttrAndFunCode.FUNCTION_BT_CMD_ID3_PLAY_OR_PAUSE – ID3音乐播放或暂停value : NULL
命令构造
CommandBase ID3PlayOrPauseCmd = CommandBuilder.buildID3PlayOrPauseCmd();
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//执行id3音乐播放或暂停功能并等待结果回调
controller.iD3MusicPlayOrPause(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
10.4. ID3音乐播放上一曲
JL_BluetoothManager方式
function :
AttrAndFunCode.SYS_INFO_FUNCTION_BT – 蓝牙功能功能type :
AttrAndFunCode.FUNCTION_BT_CMD_ID3_PLAY_PREV – ID3音乐播放上一曲value : NULL
命令构造
CommandBase ID3PlayPrevCmd = CommandBuilder.buildID3PlayPrevCmd();
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//执行id3音乐播放上一曲功能并等待结果回调
controller.iD3MusicPlayPrev(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
10.5. ID3音乐播放下一曲
JL_BluetoothManager方式
function :
AttrAndFunCode.SYS_INFO_FUNCTION_BT – 蓝牙功能功能type :
AttrAndFunCode.FUNCTION_BT_CMD_ID3_PLAY_NEXT – ID3音乐播放下一曲value : NULL
命令构造
CommandBase ID3PlayNextCmd = CommandBuilder.buildID3PlayNextCmd();
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//执行id3音乐播放下一曲功能并等待结果回调
controller.iD3MusicPlayNext(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});