Java 是否可以仅显示已配对、已打开且在范围内的蓝牙设备的活动列表,而不是显示以前所有已配对的设备?
我目前正在开发一款android应用程序,该应用程序连接到具有蓝牙SPP功能的arduino微处理器。我的应用程序显示所有以前配对的蓝牙设备,但我想知道是否可以只显示当前已打开的配对设备?我到处都在寻找答案,但还没有找到答案,希望这是可能的。您需要创建一个Java 是否可以仅显示已配对、已打开且在范围内的蓝牙设备的活动列表,而不是显示以前所有已配对的设备?,java,android,bluetooth,arduino,android-bluetooth,Java,Android,Bluetooth,Arduino,Android Bluetooth,我目前正在开发一款android应用程序,该应用程序连接到具有蓝牙SPP功能的arduino微处理器。我的应用程序显示所有以前配对的蓝牙设备,但我想知道是否可以只显示当前已打开的配对设备?我到处都在寻找答案,但还没有找到答案,希望这是可能的。您需要创建一个BluetoothAdapter,并将BroadcastReceiver注册到BluetoothDevice。找到的操作。将找到的设备存储在某种列表中 BluetoothAdapter bluetoothAdapter = BluetoothA
BluetoothAdapter,
并将BroadcastReceiver
注册到BluetoothDevice。找到的操作。
将找到的设备存储在某种列表中
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BluetoothDevice.ACTION_FOUND);
registerReceiver(receiver, intentFilter);
bluetoothAdapter.startDiscovery();
...
private ArrayList<BluetoothDevice> devices = new ArrayList<>();
private final BroadcastReceiver receiver = new BroadcastReceiver(){
public void onReceive(Context context, Intent intent){
String action = intent.getAction();
if(action.equals(BluetoothAdapter.ACTION_FOUND)){
BluetoothDevice bluetoothDevice = (BluetoothDevice) intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
devices.add(bluetoothDevice);
}
}
};
BluetoothAdapter BluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
IntentFilter IntentFilter=新的IntentFilter();
intentFilter.addAction(找到BluetoothDevice.ACTION);
注册接收者(接收者、意图过滤器);
bluetoothAdapter.startDiscovery();
...
私有ArrayList设备=新建ArrayList();
专用最终BroadcastReceiver=新的BroadcastReceiver(){
公共void onReceive(上下文、意图){
String action=intent.getAction();
if(action.equals(BluetoothAdapter.action_-FOUND)){
BluetoothDevice BluetoothDevice=(BluetoothDevice)intent.getParcelableExtra(BluetoothDevice.EXTRA\u设备);
添加(蓝牙设备);
}
}
};
您还可以将接收器注册到BluetoothDevice.ACTION\u DISCOVERY\u启动
和BluetoothDevice.ACTION\u DISCOVERY\u完成
,并相应地处理它们
注意:不要忘记在清单中注册广播接收器,并包括必要的权限。您需要创建一个
BluetoothAdapter,
并将BroadcastReceiver
注册到BluetoothDevice。找到操作。
将找到的设备存储在某种列表中
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BluetoothDevice.ACTION_FOUND);
registerReceiver(receiver, intentFilter);
bluetoothAdapter.startDiscovery();
...
private ArrayList<BluetoothDevice> devices = new ArrayList<>();
private final BroadcastReceiver receiver = new BroadcastReceiver(){
public void onReceive(Context context, Intent intent){
String action = intent.getAction();
if(action.equals(BluetoothAdapter.ACTION_FOUND)){
BluetoothDevice bluetoothDevice = (BluetoothDevice) intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
devices.add(bluetoothDevice);
}
}
};
BluetoothAdapter BluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
IntentFilter IntentFilter=新的IntentFilter();
intentFilter.addAction(找到BluetoothDevice.ACTION);
注册接收者(接收者、意图过滤器);
bluetoothAdapter.startDiscovery();
...
私有ArrayList设备=新建ArrayList();
专用最终BroadcastReceiver=新的BroadcastReceiver(){
公共void onReceive(上下文、意图){
String action=intent.getAction();
if(action.equals(BluetoothAdapter.action_-FOUND)){
BluetoothDevice BluetoothDevice=(BluetoothDevice)intent.getParcelableExtra(BluetoothDevice.EXTRA\u设备);
添加(蓝牙设备);
}
}
};
您还可以将接收器注册到BluetoothDevice.ACTION\u DISCOVERY\u启动
和BluetoothDevice.ACTION\u DISCOVERY\u完成
,并相应地处理它们
注意:不要忘记在清单中注册广播接收器,并包括必要的权限。因此,我目前拥有的是bluetooth.getBondedDevices();对象,然后将其添加到for循环内的数组适配器中。是否有可能在该循环中实现BroadcastReceiver,以便它能够对打开的设备进行分类?从您的代码来看,它似乎添加了任何试图被发现的设备,但没有添加已经配对的设备。如果我错了,请纠正我。此代码位于与主活动分离的DeviceList.java中。您可以使用
getBondedDevices()
初始化数组,然后通过BroadcastReceiver添加更多设备。
以确保不添加重复的设备,首先检查ArrayAdapter
是否已包含具有相同地址的Bluetooth设备
。在BroadcastReceive()中实现onReceive()时,仍然存在一个错误,即BroadcastReceiver()必须实现onReceive()。有什么想法吗?在初始化列表时,onCreate()是否最有效?请参阅文档:谢谢,是的,因此所有已连接设备的列表都会正确显示,但仅显示正在传输/打开的设备仍然不会发生。因此,我目前拥有的是bluetooth.getBondedDevices();对象,然后将其添加到for循环内的数组适配器中。是否有可能在该循环中实现BroadcastReceiver,以便它能够对打开的设备进行分类?从您的代码来看,它似乎添加了任何试图被发现的设备,但没有添加已经配对的设备。如果我错了,请纠正我。此代码位于与主活动分离的DeviceList.java中。您可以使用getBondedDevices()
初始化数组,然后通过BroadcastReceiver添加更多设备。
以确保不添加重复的设备,首先检查ArrayAdapter
是否已包含具有相同地址的Bluetooth设备
。在BroadcastReceive()中实现onReceive()时,仍然存在一个错误,即BroadcastReceiver()必须实现onReceive()。有什么想法吗?在初始化列表时,onCreate()中的这项功能是否最有效?请参阅文档:谢谢,是,因此所有已连接设备的列表都会正确显示,但仅显示正在传输/处于打开状态的设备不会发生。