8. FM控制功能
Important
public boolean isSupportFMMode() {
//获取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.isFmEnable();
}
判断设备是否处于【FM模式】
public boolean isDeviceInFMMode() {
//获取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_FM;
}
8.1. 获取FM状态信息
JL_BluetoothManager方式
AttrAndFunCode.SYS_INFO_FUNCTION_FM – FM功能0x01 << AttrAndFunCode.SYS_INFO_ATTR_FM_STATU – 播放状态命令构造
CommandBase getFmStatueCmd = CommandBuilder.buildGetFmStatueCmd();
代码示例参考 查询设备系统信息
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//添加蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onFmStatusChange(BluetoothDevice device, FmStatusInfo fmStatusInfo) {
//此处回调FM状态信息
}
});
//执行获取FM状态信息功能并等待结果回调
controller.getFmInfo(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//结果将会在BTRcspEventCallback#onFmStatusChange回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
Note
8.1.1. FmStatusInfo
FM状态信息
public class FmStatusInfo {
private boolean isPlay; //是否正在播放
private int channel; //频点
private float freq; //频率
private int mode; //模式
}
8.2. 向前搜索频道
JL_BluetoothManager方式
AttrAndFunCode.SYS_INFO_FUNCTION_FM – FM功能AttrAndFunCode.FUNCTION_FM_CMD_FREQ_SCAN – 频道搜索命令构造
CommandBase fmForwardSearchChannelsCmd = CommandBuilder.buildFmScanCmd((byte) 0x01);
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//添加蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onFmChannelsChange(BluetoothDevice device, List<ChannelInfo> channels) {
//此处回调已发现的FM频道列表
}
});
//执行向前搜索FM频道功能并等待结果回调
controller.fmForwardSearchChannels(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//结果将会在BTRcspEventCallback#onFmChannelsChange回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
Important
不推荐使用
8.3. 向后搜索频道
JL_BluetoothManager方式
AttrAndFunCode.SYS_INFO_FUNCTION_FM – FM功能AttrAndFunCode.FUNCTION_FM_CMD_FREQ_SCAN – 频道搜索命令构造
CommandBase fmBackwardSearchChannelsCmd = CommandBuilder.buildFmScanCmd((byte) 0x02);
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//添加蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onFmChannelsChange(BluetoothDevice device, List<ChannelInfo> channels) {
//此处回调已发现的FM频道列表
}
});
//执行向后搜索FM频道功能并等待结果回调
controller.fmBackwardSearchChannels(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//结果将会在BTRcspEventCallback#onFmChannelsChange回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
Important
不推荐使用
8.3.1. ChannelInfo
频道信息
public class ChannelInfo {
/**
* 序号
*/
private int index;
/**
* 频点
*/
private float freq;
}
8.4. 搜索FM频道
JL_BluetoothManager方式
AttrAndFunCode.SYS_INFO_FUNCTION_FM – FM功能AttrAndFunCode.FUNCTION_FM_CMD_FREQ_SCAN – 频道搜索命令构造
CommandBase fmScanCmd = CommandBuilder.buildFmScanCmd((byte) 0x00);
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//添加蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onFmChannelsChange(BluetoothDevice device, List<ChannelInfo> channels) {
//此处回调已发现的FM频道列表
}
});
//执行搜索FM频道功能并等待结果回调
controller.fmSearchAllChannels(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//结果将会在BTRcspEventCallback#onFmChannelsChange回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
Important
推荐使用
8.5. 停止搜索频道
JL_BluetoothManager方式
AttrAndFunCode.SYS_INFO_FUNCTION_FM – FM功能AttrAndFunCode.FUNCTION_FM_CMD_FREQ_SCAN – 频道搜索命令构造
CommandBase fmstopScanCmd = CommandBuilder.buildFmScanCmd((byte) 0x03);
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//执行停止搜索FM频道功能并等待结果回调
controller.fmStopSearch(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
8.6. FM播放或暂停
JL_BluetoothManager方式
AttrAndFunCode.SYS_INFO_FUNCTION_FM – FM功能AttrAndFunCode.FUNCTION_FM_CMD_PLAY_OR_PAUSE – 播放或暂停命令构造
CommandBase fmPlayOrPauseCmd = CommandBuilder.buildFmPlayOrPauseCmd();
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//添加蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onFmStatusChange(BluetoothDevice device, FmStatusInfo fmStatusInfo) {
//此处回调FM状态信息
}
});
//执行FM播放或暂停功能并等待结果回调
controller.fmPlayOrPause(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//结果将会在BTRcspEventCallback#onFmStatusChange回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
Note
8.7. 播放上一个频道
JL_BluetoothManager方式
AttrAndFunCode.SYS_INFO_FUNCTION_FM – FM功能AttrAndFunCode.FUNCTION_FM_CMD_PREV_CHANNEL – 播放上一个频道命令构造
CommandBase fmPrevChannelCmd = CommandBuilder.buildFmPrevChannelCmd();
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//添加蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onFmStatusChange(BluetoothDevice device, FmStatusInfo fmStatusInfo) {
//此处回调FM状态信息
}
});
//执行播放上一个频道功能并等待结果回调
controller.fmPlayPrevChannel(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//结果将会在BTRcspEventCallback#onFmStatusChange回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
Note
8.8. 播放下一个频道
JL_BluetoothManager方式
AttrAndFunCode.SYS_INFO_FUNCTION_FM – FM功能AttrAndFunCode.FUNCTION_FM_CMD_NEXT_CHANNEL – 播放下一个频道命令构造
CommandBase fmNextChannelCmd = CommandBuilder.buildFmNextChannelCmd();
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//添加蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onFmStatusChange(BluetoothDevice device, FmStatusInfo fmStatusInfo) {
//此处回调FM状态信息
}
});
//执行播放下一个频道功能并等待结果回调
controller.fmPlayNextChannel(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//结果将会在BTRcspEventCallback#onFmStatusChange回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
Note
8.9. 播放上一个频点
JL_BluetoothManager方式
AttrAndFunCode.SYS_INFO_FUNCTION_FM – FM功能AttrAndFunCode.FUNCTION_FM_CMD_PREV_FREQ – 播放上一个频点命令构造
CommandBase fmPrevFreqCmd = CommandBuilder.buildFmPrevFreqCmd();
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//添加蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onFmStatusChange(BluetoothDevice device, FmStatusInfo fmStatusInfo) {
//此处回调FM状态信息
}
});
//执行播放上一个频点功能并等待结果回调
controller.fmPlayPrevFrequency(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//结果将会在BTRcspEventCallback#onFmStatusChange回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
Note
8.10. 播放下一个频点
JL_BluetoothManager方式
AttrAndFunCode.SYS_INFO_FUNCTION_FM – FM功能AttrAndFunCode.FUNCTION_FM_CMD_NEXT_FREQ – 播放下一个频点命令构造
CommandBase fmNextFreqCmd = CommandBuilder.buildFmNextFreqCmd();
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//添加蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onFmStatusChange(BluetoothDevice device, FmStatusInfo fmStatusInfo) {
//此处回调FM状态信息
}
});
//执行播放下一个频点功能并等待结果回调
controller.fmPlayNextFrequency(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//结果将会在BTRcspEventCallback#onFmStatusChange回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
Note
8.11. 播放指定频点
JL_BluetoothManager方式
AttrAndFunCode.SYS_INFO_FUNCTION_FM – FM功能AttrAndFunCode.FUNCTION_FM_CMD_SELECT_FREQL – 播放指定频点命令构造
float frequency = 87.5f;
CommandBase fmSelectFreqCmd = CommandBuilder.buildFmSelectFreqCmd(frequency);
代码示例参考 设置功能
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//添加蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onFmStatusChange(BluetoothDevice device, FmStatusInfo fmStatusInfo) {
//此处回调FM状态信息
}
});
//执行播放指定的频点功能并等待结果回调
controller.fmPlaySelectedFrequency(controller.getUsingDevice(), freq, new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//结果将会在BTRcspEventCallback#onFmStatusChange回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
Note
8.12. 获取发射频点
JL_BluetoothManager方式
AttrAndFunCode.SYS_INFO_FUNCTION_PUBLIC – 公共属性0x01 << AttrAndFunCode.SYS_INFO_ATTR_FM_TX – 发射频点命令构造
CommandBase getFrequencyTxInfoCmd = CommandBuilder.buildGetFrequencyTxInfoCmd();
代码示例参考 查询设备系统信息
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//添加蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onFrequencyTx(BluetoothDevice device, float frequency) {
//此处回调发射频点
}
});
//执行获取发射频点功能并等待结果回调
controller.getFmFrequency(controller.getUsingDevice(), new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//结果将会在BTRcspEventCallback#onFrequencyTx回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});
8.13. 设置发射频点
JL_BluetoothManager方式
AttrAndFunCode.SYS_INFO_FUNCTION_PUBLIC – 公共属性AttrAndFunCode.SYS_INFO_ATTR_FM_TX – 发射频点命令构造
float frequency = 87.5f;
CommandBase setFrequencyTxInfoCmd = CommandBuilder.buildSetFrequencyTxInfoCmd(frequency);
代码示例参考 设置设备系统属性
RCSPController方式
//获取RCSPController对象
RCSPController controller = RCSPController.getInstance();
//添加蓝牙RCSP事件监听器
controller.addBTRcspEventCallback(new BTRcspEventCallback() {
@Override
public void onFrequencyTx(BluetoothDevice device, float frequency) {
//此处回调发射频点
}
});
//执行设置指定发送频点并等待结果回调
controller.setFmFrequency(controller.getUsingDevice(), frequency, new OnRcspActionCallback<Boolean>() {
@Override
public void onSuccess(BluetoothDevice device, Boolean message) {
//成功回调
//结果将会在BTRcspEventCallback#onFrequencyTx回调
}
@Override
public void onError(BluetoothDevice device, BaseError error) {
//失败回调
//error - 错误信息
}
});