Android的蓝牙连接 - 服务发现失败(Android Bluetooth Connection

2019-06-27 07:30发布

我试图创建一个基本的蓝牙应用,用于测试设备。

我从developer.android代码。 这里是链接: http://developer.android.com/guide/topics/connectivity/bluetooth.html#ConnectingDevices

下面是我的线程运行的代码部分:

     public void run() {

        mBluetoothAdapter.cancelDiscovery();
        Log.i(TAG, "Discovery Cancel!"); 

        try {
            Log.i(TAG, "Connection Started");
            mmSocket.connect();
            Log.i(TAG, "Connection Ended");
        } catch (IOException e) {
            try {
                Log.e(TAG, "Connection Failed", e);
                mmSocket.close();
            } catch (IOException e2) {
                Log.e(TAG, "Connection Close Failed", e2);
            }
            return;
        }

不管我曾尝试mmSocket.connect(); 永远不会奏效。 始终抛出IOException和我得到的日志从我logcat的:

java.io.IOException: Service discovery failed
at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:403)
at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:213)

我已经看了这些文章,并试图写的东西,它们都没有解决我的问题。

Android的蓝牙:服务发现失败,连接到台式机/笔记本

服务发现在Android上使用蓝牙未能例外

在Android ICS不可能的蓝牙连接

Android的蓝牙产生java.io.IOException:连接被拒绝?

顺便说一句,我的工作在Android 4.0.4的IC。

我知道这是不是设备的问题,因为我已经尝试了不同设备上的这个程序。

Answer 1:

我不知道,我仍然不明白的UUID的东西,但问题是UUID。 我使用这是我从内核日志得到了UUID,它是00001105-0000-1000-8000-00805F9B34FB



Answer 2:

它的工作对我来说

BluetoothSocket socket = device.createInsecureRfcommSocketToServiceRecord(MY_UUID);
Method m = device.getClass().getMethod("createInsecureRfcommSocket", new Class[] {int.class});
socket = (BluetoothSocket) m.invoke(device, 1);
bluetoothAdapter.cancelDiscovery();
socket.connect();


Answer 3:

下面的代码片段对我的作品。 试试吧...

BluetoothDevice mmDevice;
boolean temp = mmDevice.fetchUuidsWithSdp();
UUID uuid = null;
if( temp ){
uuid = mmDevice.getUuids()[0].getUuid();
}
tmp = device.createRfcommSocketToServiceRecord(uuid);


Answer 4:

我经历了类似的学习过程中的工作。 我试图记录了我在一系列的例子教训。

这一条可能会有所帮助:

http://digitalhacksblog.blogspot.com/2012/05/android-example-bluetooth-simple-spp.html

它是用于建立Android装置和通过蓝牙PC之间的简单连接。 这些例子包含了Android文件,以及Java中的SPP服务器和一个在Perl的PC。

希望这可以帮助。



Answer 5:

请确保您的应用程序不尝试连接,而适配器忙于发现:它出现的问题是,之前我打电话

clientSocket.connect()

我需要打电话

btAdapter.cancelDiscovery()

这有助于解决同样的问题,我马茨RECO



Answer 6:

你必须提供的服务发现有效的UUID。

BluetoothSocket sock = bdevice.createRfcommSocketToServiceRecord(VALID_UUID);

有各种标准(默认)蓝牙服务(免提通话,文件传输等)几种常见的UUID。

看这里



Answer 7:

尝试使用的SDK,如果你只是想测试设备的一部分提供的蓝牙聊天示例项目。 你试图使用这些代码,并提供developer.android.com一个都包含在蓝牙聊天的例子。



文章来源: Android Bluetooth Connection - Service Discovery Failed