当发现其他蓝牙设备时,我会为找到的每个设备发送2个广播。第一个是在扫描期间发送的,当完成扫描时,会立即为所有找到的设备发送广播。我正在调整SDK中的BluetoothChat示例。
这是我的'BroadcastReceiver':
private final BroadcastReceiver foundRec = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(BluetoothDevice.ACTION_FOUND)) {
Log.e(TAG, "--- device found ---");
BluetoothDevice dev = intent
.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if (dev.getBondState() == BluetoothDevice.BOND_BONDED) {
availableDevices.add(dev.getName() + " (paired)");
} else {
availableDevices.add(dev.getName());
}
} else if (action.equals(BluetoothAdapter.ACTION_DISCOVERY_STARTED)){
Log.d(TAG, "DISCOVERY STARTED");
findViewById(R.id.lookup).setVisibility(View.VISIBLE);
}
}
};
谢谢!
答案 0 :(得分:1)
我保留了一系列设备。每次收到ACTION_FOUND时,我都会通过设备阵列检查它是否存在。我的语法可能不对,在浏览器中键入...但希望你明白了。
我不知道你使用的可用数据是什么,但是如果你使用BluetoothDevice数组而不是String数组可能会更有用。您始终可以获取名称并检查onReceive之外的绑定状态。
private final BroadcastReceiver foundRec = new BroadcastReceiver() {
List<BluetoothDevice> BtDevices = new ArrayList<BluetoothDevice>();
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(BluetoothDevice.ACTION_FOUND)) {
Log.e(TAG, "--- device found ---");
BluetoothDevice dev = intent
.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if(!IsBtDevPresent(dev)) {
BtDevices.add(dev);
if (dev.getBondState() == BluetoothDevice.BOND_BONDED) {
availableDevices.add(dev.getName() + " (paired)");
} else {
availableDevices.add(dev.getName());
}
}
} else if (action.equals(BluetoothAdapter.ACTION_DISCOVERY_STARTED)){
Log.d(TAG, "DISCOVERY STARTED");
findViewById(R.id.lookup).setVisibility(View.VISIBLE);
}
}
private boolean IsBtDevPresent(BluetoothDevice dev) {
int size = BtDevices.size();
for(int i = 0; i<size; i++) {
if( BtDevices.get(i).equals(dev)) {
return true;
}
}
return false;
}
};
答案 1 :(得分:0)
实际上,ICS和更多设备发送两个广播,一个用于查询扫描,另一个用于页面扫描。这就是为什么我们收到两次!!
但我在2.3.5设备中测试了相同的代码,其中我只收到一个广播接收!!它怎么管理? 我们需要,个人广播查询和页面或单个广播!任何人都可以谈论这个!!