我已连接两部Android手机。一个是服务器,另一个是客户端。当他们处于连接状态时,客户端将尝试通过getProfileProxy()获取BluetoothHeadset。但它可以获得0连接的BluetoothDevice。我预计服务器可以是耳机,因为Android支持BluetoothHeadset包括蓝牙耳机和免提(v1.5)配置文件。因此,客户应该通过BluetoothHeadset获得至少1个连接的BluetoothDevice。
private void methodx() { mBluetoothAdapter.getProfileProxy(xx.this, mBluetoothProfileServiceListener, BluetoothProfile.HEADSET); }
private BluetoothHeadset mBluetoothHeadset;
private BluetoothDevice mBluetoothHeadsetDevice;
private BluetoothProfile.ServiceListener mBluetoothProfileServiceListener =
new BluetoothProfile.ServiceListener() {
@Override
public void onServiceConnected(int profile, BluetoothProfile proxy) {
mBluetoothHeadset = (BluetoothHeadset) proxy;
List<BluetoothDevice> deviceList = mBluetoothHeadset.getConnectedDevices();
if (deviceList.size() > 0) {
mBluetoothHeadsetDevice = deviceList.get(0);
} else {
mBluetoothHeadsetDevice = null;
}
}
@Override
public void onServiceDisconnected(int profile) {
if (mBluetoothHeadset != null) {
List<BluetoothDevice> devices = mBluetoothHeadset.getConnectedDevices();
if (devices.size() == 0) {
mBluetoothHeadsetDevice = null;
}
mBluetoothHeadset = null;
}
}
};
经过几天的研究,我发现这不是一件容易的事。目前,Android确实支持HSP&amp; HFP,但它扮演音频门的角色。蓝牙耳机扮演耳机角色。在应用程序级别完成此任务是不可能的,但需要更多地研究Bluedroid(Android BT堆栈)和BT设备驱动程序。基本上,它需要一个定制的ROM。