如何在扫描后获取所有可用蓝牙设备的列表并以特定间隔进行操作?

时间:2017-05-28 09:45:11

标签: android list bluetooth android-bluetooth

我试过了

reciever = new BroadcastReceiver() {     
@Override    
public void onReceive(Context context, final Intent intent) {
if (BluetoothDevice.ACTION_FOUND.equals(intent.getAction())) {
                `Toast.makeText(getApplicationContext(), "Devices Found" ,` `Toast.LENGTH_SHORT).show();`


BluetoothDevice devicex;
 devicex =intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                if(!devicer.contains(devicex))
                {devicer.add(devicex);list.add(devicex.getName());}
            }}};

但这只取一个设备。我需要收集列表中的所有可用设备并将其显示在列表视图中。我还想在一定的时间间隔内重复扫描(使用TimerTask)。我该怎么做

2 个答案:

答案 0 :(得分:0)

您确定智能手机周围有可用的设备吗? 你能为行动添加日志吗?例如,BluetoothAdapter.ACTION_DISCOVERY_STARTEDBluetoothAdapter.ACTION_DISCOVERY_FINISHEDBluetoothDevice.ACTION_FOUND

答案 1 :(得分:0)

BluetoothDevice device1 = intent.getParceableExtra(BluetoothDevice.EXTRA_DEVICE);最好只获取一个可用设备。和 ArrayList<BluetoothDevice> list=intent.getParceableArrayListExtra(BluetoothDevice.EXTRA_DEVICE);投掷"Attempt to invoke Null Object Reference errors" 所以我找到了一个有效的解决方案。

只需输入多行。

BluetoothDevice devicex;
                devicex = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                if(!list.contains(devicex))
                {list.add(devicex);}
                devicex = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                if(!list.contains(devicex))
                {list.add(devicex);}
                devicex = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                if(!list.contains(devicex))
                {list.add(devicex);}

这些语句将获取可用设备并将其添加到列表中(如果它尚未存在),然后再次为其他可用设备执行此操作。开发人员指南中没有其他方法可以执行此操作。 这些语句以线性时间运行。所以他们可能不会引起任何问题。

如果需要,建议更正。