gpt4 book ai didi

Android BluetoothSocket.isConnected 总是返回 false

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:53:13 24 4
gpt4 key购买 nike

我正在尝试检测蓝牙设备当前是否连接到使用 API 14 或更高版本的 Android 设备。似乎我应该能够使用 BluetoothSocket.isConnected() 方法,但无论我做了什么,到目前为止,无论是否连接,我都得到错误的反馈。

AndroidManifest 包括这些行:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

<!-- Locale 4.x supports API 14 or greater. -->
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" />

<uses-feature android:name="android.hardware.bluetooth" />

有问题的代码:

protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();

for (BluetoothDevice device : pairedDevices) {
Log.i(Constants.LOG_TAG, String.format(Locale.US, "Device: %s connected: %b", device.getName(), isConnected(device))); //$NON-NLS-1$z
}
}

private boolean isConnected(BluetoothDevice device) {
BluetoothSocket socket = null;

// Get a BluetoothSocket for a connection with the given BluetoothDevice
UUID SPP_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
try {
socket = device.createRfcommSocketToServiceRecord(SPP_UUID);
} catch (IOException e) {
Log.e(Constants.LOG_TAG, e.getMessage()); //$NON-NLS-1$z
return false;
}

Log.i(Constants.LOG_TAG, socket.toString()); //$NON-NLS-1$z

return socket.isConnected();
}

不会抛出任何错误,它只会在 100% 的时间内返回“false”。有什么地方我做得不对吗?

最佳答案

我相信 jkane001 已经解决了他的问题,所以我希望这个答案能帮助到其他人。

首先在套接字创建之后

socket = device.createRfcommSocketToServiceRecord(SPP_UUID);

你应该通过以下方式初始化连接

socket.connect();

之后,您将能够使用 socket.isConnected()

检查连接状态

因为 connect() 方法不是阻塞的,所以在 socket 之后可能还没有连接。我建议使用这样的东西

while(!socket.isConnected() && trial++ < 3){
try {
Thread.sleep(300);
} catch (Exception e) {}
}

顺便说一下,我发现在一些安卓设备上 isConnected() 总是返回 false。在这种情况下,只需尝试向套接字写入一些内容并检查是否没有异常。

关于Android BluetoothSocket.isConnected 总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14792040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com