我到处看,我觉得这种方法“getBondedDevices()”我的蓝牙适配器。 但是,我有我的平板电脑和其他蓝牙设备就坐在我旁边,我想不出如何实际获得设备展现出来绑定设备的清单上。
Answer 1:
在蓝牙方面,“保税”和“配对”基本上是同义词(正式,配对的过程导致了债券,但大多数人使用它们互换)。 为了让您的设备将被添加到列表中,你必须经过探索的过程,这是一个设备如何搜索和找到另一个,然后对中两个在一起。
实际上,你可以从设备设置为用户做到这一点,但如果你正在寻找这样一个如此应用的范围内,你的进程可能会是这个样子:
- 注册一个
BroadcastReceiver
用于BluetoothDevice.ACTION_FOUND
和BluetoothAdapter. ACTION_DISCOVERY_FINISHED
BluetoothAdapter. ACTION_DISCOVERY_FINISHED
- 通过调用开始发现
BluetoothAdapter.startDiscovery()
- 您的接收器将得到每一个新的设备被发现范围时调用与第一动作,你可以检查它,看它是否是你想要联系的人。 您可以拨打
BluetoothAdapter.cancelDiscovery()
一旦你发现它不浪费电池任何超过必要的。 - 当发现是完整的,如果你还没有取消它,你的接收器将调用与第二个动作; 所以你知道,不要指望任何更多的设备。
- 在手设备实例,打开
BluetoothSocket
和connect()
如果设备尚未粘合,这将启动配对过程,可能会显示一个PIN码某些系统UI。 - 一旦配对,您的设备将在保税区的设备列表中显示,直到用户进入设置和删除。
- 该
connect()
方法实际上也打开插座连接,当它返回,没有抛出异常的两个设备连接。 - 现在连接,可以调用
getInputStream()
和getOutputStream()
从套接字读取和写入数据。
基本上,你可以检查绑定设备,迅速得到访问外部设备的名单,但在大多数应用中,你会做这和真正的发现的组合,以确保您可以随时连接到远程设备无论用户什么确实。 如果一台设备已经粘合,你只是做步骤5-7进行连接和通信。
欲了解更多信息和示例代码,检查了“发现设备”和“连接设备”的各款Android SDK中的蓝牙指南 。
HTH
Answer 2:
在BluetoothDevice类instace API 19级以上就可以调用createBond()到要连接。 你将需要一些权限,以发现并列出可见的设备
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
代码发现并列出的设备:
bluetoothFilter.addAction(BluetoothDevice.ACTION_FOUND);
bluetoothFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
bluetoothFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
registerReceiver(bluetoothReceiver, bluetoothFilter);
private BroadcastReceiver bluetoothReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
Log.e("bluetoothReceiver", "ACTION_FOUND");
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
devicesList.add((device.getName() != null ? device.getName() : device.getAddress()));
bluetoothDevicesAdapter.notifyDataSetChanged();
} else if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {
Log.e("bluetoothReceiver", "ACTION_DISCOVERY_STARTED");
} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
Log.e("bluetoothReceiver", "ACTION_DISCOVERY_FINISHED");
getActivity().unregisterReceiver(bluetoothReceiver);
}
}
};
刚刚选择的设备上调用createBond()。
文章来源: How do I actually BOND a device?