android5.1蓝牙反向控制(Avrcp协议)流程
2017-06-22 17:15
1146 查看
参考
1.APP
private BluetoothAvrcpController mAvrcpController;
List<BluetoothDevice> devices = mAvrcpController.getConnectedDevices();
for(BluetoothDevice device : devices)
{
mAvrcpController.sendPassThroughCmd(device, 68, BluetoothAvrcp.PASSTHROUGH_STATE_PRESS);
mAvrcpController.sendPassThroughCmd(device, 68, BluetoothAvrcp.PASSTHROUGH_STATE_RELEASE);
}
2.frameworks/base/core/java/android/bluetooth/BluetoothAvrcpController.java
public void sendPassThroughCmd(BluetoothDevice device, int keyCode, int keyState)
{
mService.sendPassThroughCmd(device, keyCode, keyState);
}
3.packages/apps/Bluetooth/src/com/android/bluetooth/avrcp/AvrcpControllerService.java
private native boolean sendPassThroughCommandNative(byte[] address, int keyCode, int keyState);
(1)public void sendPassThroughCmd(BluetoothDevice device, int keyCode, int keyState)
{
Message msg = mHandler.obtainMessage(MESSAGE_SEND_PASS_THROUGH_CMD, keyCode, keyState, device);
mHandler.sendMessage(msg);
}
(2)private final class AvrcpMessageHandler extends Handler
{
public void handleMessage(Message msg)
{
switch (msg.what)
{
case MESSAGE_SEND_PASS_THROUGH_CMD:
if (DBG) Log.v(TAG, "MESSAGE_SEND_PASS_THROUGH_CMD");
BluetoothDevice device = (BluetoothDevice)msg.obj;
sendPassThroughCommandNative(getByteAddress(device), msg.arg1, msg.arg2);
break;
}
}
4.packages/apps/Bluetooth/jni/com_android_bluetooth_avrcp_controller.cpp
static jboolean sendPassThroughCommandNative(JNIEnv *env, jobject object, jbyteArray address, jint key_code, jint key_state)
{
sBluetoothAvrcpInterface->send_pass_through_cmd((bt_bdaddr_t *)addr,uint8_t)key_code, (uint8_t)key_state))!= BT_STATUS_SUCCESS);
}
5.external/bluetooth/bluedroid/btif/src/btif_rc.c
static bt_status_t send_passthrough_cmd(bt_bdaddr_t *bd_addr, uint8_t key_code, uint8_t key_state)
{
bt_status_t tran_status = get_transaction(&p_transaction);
BTA_AvRemoteCmd();
}
1.APP
private BluetoothAvrcpController mAvrcpController;
List<BluetoothDevice> devices = mAvrcpController.getConnectedDevices();
for(BluetoothDevice device : devices)
{
mAvrcpController.sendPassThroughCmd(device, 68, BluetoothAvrcp.PASSTHROUGH_STATE_PRESS);
mAvrcpController.sendPassThroughCmd(device, 68, BluetoothAvrcp.PASSTHROUGH_STATE_RELEASE);
}
2.frameworks/base/core/java/android/bluetooth/BluetoothAvrcpController.java
public void sendPassThroughCmd(BluetoothDevice device, int keyCode, int keyState)
{
mService.sendPassThroughCmd(device, keyCode, keyState);
}
3.packages/apps/Bluetooth/src/com/android/bluetooth/avrcp/AvrcpControllerService.java
private native boolean sendPassThroughCommandNative(byte[] address, int keyCode, int keyState);
(1)public void sendPassThroughCmd(BluetoothDevice device, int keyCode, int keyState)
{
Message msg = mHandler.obtainMessage(MESSAGE_SEND_PASS_THROUGH_CMD, keyCode, keyState, device);
mHandler.sendMessage(msg);
}
(2)private final class AvrcpMessageHandler extends Handler
{
public void handleMessage(Message msg)
{
switch (msg.what)
{
case MESSAGE_SEND_PASS_THROUGH_CMD:
if (DBG) Log.v(TAG, "MESSAGE_SEND_PASS_THROUGH_CMD");
BluetoothDevice device = (BluetoothDevice)msg.obj;
sendPassThroughCommandNative(getByteAddress(device), msg.arg1, msg.arg2);
break;
}
}
4.packages/apps/Bluetooth/jni/com_android_bluetooth_avrcp_controller.cpp
static jboolean sendPassThroughCommandNative(JNIEnv *env, jobject object, jbyteArray address, jint key_code, jint key_state)
{
sBluetoothAvrcpInterface->send_pass_through_cmd((bt_bdaddr_t *)addr,uint8_t)key_code, (uint8_t)key_state))!= BT_STATUS_SUCCESS);
}
5.external/bluetooth/bluedroid/btif/src/btif_rc.c
static bt_status_t send_passthrough_cmd(bt_bdaddr_t *bd_addr, uint8_t key_code, uint8_t key_state)
{
bt_status_t tran_status = get_transaction(&p_transaction);
BTA_AvRemoteCmd();
}
相关文章推荐
- 蓝牙avrcp协议源码分析
- 蓝牙之十一 AVRCP协议
- 蓝牙协议 HFP,HSP,A2DP,AVRCP,OPP,PBAP
- 蓝牙简单配对(Simple Pairing)协议及代码流程简述
- 蓝牙核心技术概述(三): 蓝牙协议规范(射频、基带链路控制、链路管理)
- 蓝牙之十一 AVRCP协议
- 蓝牙简单配对(Simple Pairing)协议及代码流程简述
- A2DP & AVRCP,蓝牙音频协议的兄弟组合(1)
- 蓝牙协议学习整理(二)蓝牙协议规范(射频、基带链路控制、链路管理)
- A2DP和AVRCP蓝牙音频传输协议的应用解释
- 设备联网(蓝牙) 流程及协议
- 蓝牙核心技术概述(三): 蓝牙协议规范(射频、基带链路控制、链路管理)
- A2DP和AVRCP蓝牙音频传输协议的应用解释
- 蓝牙协议规范(射频、基带链路控制、链路管理)
- 蓝牙协议规范(主机控制接口协议 HCI)
- 蓝牙协议规范(射频、基带链路控制、链路管理)
- 蓝牙核心技术概述(三): 蓝牙协议规范(射频、基带链路控制、链路管理)
- Android 系统蓝牙 控制手机端音乐暂停 (AVRCP)
- android5.1 蓝牙上电流程
- 蓝牙协议 HFP,HSP,A2DP,AVRCP,OPP,PBAP