gpt4 book ai didi

Android 蓝牙不显示配对对话框

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

我正在尝试将我的 HTC myTouch 3G 与蓝牙设备配对,该设备将通过 SPP 将数据流式传输到手机。我查看了 Chat 示例,发现它们缺少我需要的东西,因为我需要高数据速率,而且 Chat 示例确实在 UI 线程上阻塞。但这就是说我的主要问题是当我尝试连接当前未配对的设备时,蓝牙 API 表示如果设备需要配对代码,它将自动弹出一个对话框。这永远不会发生。我如何确保它确实如此?这是我的代码...

BluetoothSocket btSocket;
String macAddress = data.getStringExtra("mac");
Log.d(TAG, "Found Device " + macAddress);

// Get the Bluetooth adapter on the device
BluetoothAdapter bta = ((MyApplication)this.getApplication()).getBtState();
BluetoothDevice btDevice = bta.getRemoteDevice(macAddress);
BluetoothSocket tmp = null;
try {
tmp = btDevice.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
} catch (IOException e) {
e.printStackTrace();
}
if (tmp != null) {
btSocket = tmp;
bta.cancelDiscovery();

try {
btSocket.connect();
} catch (IOException e) {
try {
Log.e(TAG, "------------- Close IOException");
btSocket.close();
} catch (IOException e2) {
Log.e(TAG, "unable to close() socket during connection failure", e2);
}
}
}

这是我也遇到的错误:

ERROR/BluetoothEventLoop.cpp(149): event_filter: Received signal org.bluez.Adapter:DeviceCreated from /org/bluez/14284/hci0
ERROR/BluetoothEventLoop.cpp(149): event_filter: Received signal org.bluez.Adapter:PropertyChanged from /org/bluez/14284/hci0
ERROR/BluetoothEventLoop.cpp(149): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/14284/hci0/dev_00_02_5B_00_A5_0B
ERROR/BluetoothEventLoop.cpp(149): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/14284/hci0/dev_00_02_5B_00_A5_0B
DEBUG/BluetoothService(149): updateDeviceServiceChannelCache(00:02:5B:00:A5:0B)
DEBUG/BluetoothService(149): uuid(application): 00001101-0000-1000-8000-00805f9b34fb 1
DEBUG/BluetoothService(149): Making callback for 00001101-0000-1000-8000-00805f9b34fb with result 1
VERBOSE/BluetoothEventRedirector(13691): Received android.bleutooth.device.action.UUID
ERROR/MainApp(14272): ------------- Close IOException
ERROR/BluetoothService.cpp(149): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session)
ERROR/BluetoothEventLoop.cpp(149): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/14284/hci0/dev_00_02_5B_00_A5_0B
VERBOSE/BluetoothEventRedirector(13691): Received android.bleutooth.device.action.UUID

一件奇怪的事情似乎是一个错误,如果我运行这段代码但它失败了,那么我会关闭蓝牙并将其重新打开设备显示为在堆栈中配对。据我了解,myTouch 上的蓝牙芯片是 2.1,而我们尝试连接的芯片是 1.2

最佳答案

我目前在某些手机上遇到蓝牙(使用 SPP)问题。您可以尝试的一件事是在创建套接字时使用反射。

我在开发蓝牙服务时使用了 Nexus S(我实际上使用的是 listenUsingRfcommWithServiceRecord 方法),它在那部手机上运行良好。在索尼爱立信 Xperia ARC 和索尼爱立信 X10 Mini Pro 上也能正常工作。它不适用于 HTC Wildfire (2.2.1)、HTC Legend (2.2) 或三星 Galaxy S (2.2.1)。

我还应该提到,我从中接收数据的设备也使用蓝牙 1.2,就像你的一样,所以这应该不是问题。

当我尝试使用反射时,我突然在 Wildfire 上成功,不幸的是在 Legend 和 Galaxy S 上仍然没有进展。这就是我卡住的地方。许多论坛声称一些制造商拥有专有的蓝牙堆栈,所以我想这就是导致这些问题的原因。无论如何,祝你好运!

UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");

Method m = mAdapter.getClass().getMethod("createRfcommSocketToServiceRecord", new Class[] { UUID.class });
tmpSocket = (BluetoothServerSocket) m.invoke(mAdapter, new Object[] { MY_UUID });

关于Android 蓝牙不显示配对对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6280743/

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