我正在开发一款控制自定义设备的应用。此自定义设备具有双模蓝牙功能,可在双模式功能下接受Android和iOS连接。
使用Android我需要使用经典连接。我用几款智能手机和平板电脑做了一些测试。但是,对于某些平板电脑型号,我有连接问题。
我有来自MediaTek的MT6572 SOC的平板电脑,它有4.4.2安卓。我还有来自展讯的SC8830 SOC的SAMSUNG Galaxy Tab E,它有4.4.4 android。两种平板电脑都具有API级别19。
我以这种方式获得适配器:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
if (mBluetoothManager == null) {
mBluetoothManager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE);
if (mBluetoothManager == null) {
return false;
}
}
mBluetoothAdapter = mBluetoothManager.getAdapter();
}
以这种方式连接我的代码:
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(myUUID);
socket.connect()
套接字已成功创建,但是当我尝试连接时,收到以下错误/消息:
java.io.IOException:读取失败,socket可能关闭或超时,读取ret:-1
当我从具有双模蓝牙的自定义设备观察日志时,我看到来自低能量连接的事件。似乎Android不尊重我创建套接字和经典蓝牙连接的尝试。
行为正常吗?可以是android中的错误吗?
由于
答案 0 :(得分:0)
使用mBluetoothAdapter.startDiscovery()
,javadoc
检查您是否将自定义设备与Android设备配对。您也可以手动执行此操作。 How to pair bluetooth devices programmatically?
在许多情况下,这种方法适用于我。