Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以仅显示已配对、已打开且在范围内的蓝牙设备的活动列表,而不是显示以前所有已配对的设备?_Java_Android_Bluetooth_Arduino_Android Bluetooth - Fatal编程技术网

Java 是否可以仅显示已配对、已打开且在范围内的蓝牙设备的活动列表,而不是显示以前所有已配对的设备?

Java 是否可以仅显示已配对、已打开且在范围内的蓝牙设备的活动列表,而不是显示以前所有已配对的设备?,java,android,bluetooth,arduino,android-bluetooth,Java,Android,Bluetooth,Arduino,Android Bluetooth,我目前正在开发一款android应用程序,该应用程序连接到具有蓝牙SPP功能的arduino微处理器。我的应用程序显示所有以前配对的蓝牙设备,但我想知道是否可以只显示当前已打开的配对设备?我到处都在寻找答案,但还没有找到答案,希望这是可能的。您需要创建一个BluetoothAdapter,并将BroadcastReceiver注册到BluetoothDevice。找到的操作。将找到的设备存储在某种列表中 BluetoothAdapter bluetoothAdapter = BluetoothA

我目前正在开发一款android应用程序,该应用程序连接到具有蓝牙SPP功能的arduino微处理器。我的应用程序显示所有以前配对的蓝牙设备,但我想知道是否可以只显示当前已打开的配对设备?我到处都在寻找答案,但还没有找到答案,希望这是可能的。

您需要创建一个
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()中的这项功能是否最有效?请参阅文档:谢谢,是,因此所有已连接设备的列表都会正确显示,但仅显示正在传输/处于打开状态的设备不会发生。