我试过示例代码google如下所示检测连接的蓝牙设备
BluetoothHeadset mBluetoothHeadset;
// Get the default adapter
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
// Establish connection to the proxy.
mBluetoothAdapter.getProfileProxy(context, mProfileListener, BluetoothProfile.HEADSET);
private BluetoothProfile.ServiceListener mProfileListener = new BluetoothProfile.ServiceListener() {
public void onServiceConnected(int profile, BluetoothProfile proxy) {
if (profile == BluetoothProfile.HEADSET) {
mBluetoothHeadset = (BluetoothHeadset) proxy;
}
}
public void onServiceDisconnected(int profile) {
if (profile == BluetoothProfile.HEADSET) {
mBluetoothHeadset = null;
}
}
};
// ... call functions on mBluetoothHeadset
但是我遇到了以下问题:
mBluetoothHeadset仅在onServiceConnected内可用。我使用getConnectedDevices来检测实时蓝牙耳机。但如果我把代码放在下面 List ConnectedDevices = mBluetoothHeadset.getConnectedDevices(); 在onServiceConnected之外,运行程序导致总是崩溃。这有什么不对? 是否有可能在onServiceConnected之外使用mBluetoothHeadset值?像示例秀?或者我可以将一些参数/值从onServiceConnected传输到外部吗?
实际上示例代码不起作用。我必须在mProfileListener之后添加其他代码: if(mBluetoothAdapter.getProfileProxy(this,mProfileListener,BluetoothProfile.HEADSET)== false){.... 什么原因?或者我的代码有什么问题?
从系统日志开始,代码似乎有效,但是当我运行代码时,程序保持在onServiceConnected,永远不会转到onServiceDisconnected,如果用户没有执行其他操作(例如按下确认按钮),则转到外部。怎么了?