当前位置: 首页 > 知识库问答 >
问题:

基于Android蓝牙聊天示例的应用程序发现服务失败

锺离穆冉
2023-03-14

我正在写一个蓝牙游戏与蓝牙部分基于Android蓝牙聊天样本。我有两部手机要测试。问题在这里,当我将一部手机连接到另一部手机时,它有时会显示“无法连接设备”捆绑包,但当我运行蓝牙聊天示例时,它从未显示这一点,所以我认为这不是设备的问题。有没有人研究过蓝牙聊天样本,有同样的问题,会给我一些帮助?

我尝试打印异常,它就像“java.io.IOExc0019:服务发现失败”。这是导致异常的代码。

private class ConnectThread extends Thread {
    private final BluetoothSocket mmSocket;
    private final BluetoothDevice mmDevice;

    public ConnectThread(BluetoothDevice device) {
        mmDevice = device;
        BluetoothSocket tmp = null;

        // Get a BluetoothSocket for a connection with the
        // given BluetoothDevice
        try {
            tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
        } catch (IOException e) {
            Log.e(TAG, "create() failed", e);
        }
        mmSocket = tmp;
    }

    public void run() {
        Log.i(TAG, "BEGIN mConnectThread");
        setName("ConnectThread");

        // Always cancel discovery because it will slow down a connection
        mAdapter.cancelDiscovery();

        // Make a connection to the BluetoothSocket
        try {
            // This is a blocking call and will only return on a
            // successful connection or an exception
            mmSocket.connect();
        } catch (IOException e) {
            Log.e("error", e.toString());
            connectionFailed();
            // Close the socket
            try {
                mmSocket.close();
            } catch (IOException e2) {
                Log.e(TAG, "unable to close() socket during connection failure", e2);
            }
            // Start the service over to restart listening mode
            BluetoothChatService.this.start();
            return;
        }

        // Reset the ConnectThread because we're done
        synchronized (BluetoothChatService.this) {
            mConnectThread = null;
        }

        // Start the connected thread
        connected(mmSocket, mmDevice);
    }

    public void cancel() {
        try {
            mmSocket.close();
        } catch (IOException e) {
            Log.e(TAG, "close() of connect socket failed", e);
        }
    }
} 

确切位置是
mmSocket。连接()


共有1个答案

施季
2023-03-14

我知道你会觉得答案很奇怪,说实话,我不太擅长UUID。但我也遇到了同样的问题,用这个解决了。

回答
我想你正在使用在Bluetoothchat应用程序中硬编码的UUID。当我将这些UUID更改为众所周知的UUID即00001105-0000-1000-8000-00805F9B34FB时,它解决了我的问题,我不再得到IOException--Service Discovery失败

所以,我建议你改变:

来自:

private static final UUID MY_UUID_SECURE =
    UUID.fromString("ea87c0d0-afac-11de-8a39-0800200c9a66");
private static final UUID MY_UUID_INSECURE =
    UUID.fromString("7ce255c0-200a-11e0-ac64-0800200c9a66");


private static final UUID MY_UUID_SECURE = 
    UUID.fromString("00001105-0000-1000-8000-00805F9B34FB");
private static final UUID MY_UUID_INSECURE = 
    UUID.fromString("00001105-0000-1000-8000-00805F9B34FB");

这个答案的来源。

 类似资料:
  • 这是我收到的错误消息: 08-02 11:36:06.470 311 88-31188/uk.ac.york.androidtoiosble d/BluetoothAdapter:startLeScan():null 08-02 11:36:06.470 311 88-31188/uk.ac.york.androidtoiosble e/BluetoothAdapter:startLeScan:n

  • 问题内容: 我正在尝试创建一个用于测试设备的基本蓝牙应用程序。 我从developer.android获得了代码。这是链接:http : //developer.android.com/guide/topics/connectivity/bluetooth.html#ConnectingDevices 这是我的线程代码的运行部分: 无论我尝试了什么,都行不通。总是抛出IOException,我从l

  • 我正在尝试创建一个基本的蓝牙应用程序,用于测试设备。 我从开发者那里得到了代码。Android以下是链接:http://developer.android.com/guide/topics/connectivity/bluetooth.html#ConnectingDevices 这里是运行我的线程代码的一部分: 无论我尝试了什么

  • 本文向大家介绍Android实现蓝牙聊天功能,包括了Android实现蓝牙聊天功能的使用技巧和注意事项,需要的朋友参考一下 蓝牙,时下最流行的智能设备传输数据的方式之一,通过手机app和智能设备进行连接,获取设备上的测量数据,我们生活中随处可见的比如蓝牙智能手环,蓝牙电子秤,蓝牙心电测量设备等等。 本篇我将紧接着上篇结尾所写,一起来看下手机之间如何通过蓝牙实现文字聊天。 先贴出上篇的一些demo;

  • 本文向大家介绍Android在类微信程序中实现蓝牙聊天功能的示例代码,包括了Android在类微信程序中实现蓝牙聊天功能的示例代码的使用技巧和注意事项,需要的朋友参考一下 项目要求 1.初次打开程序时右上角标题栏显示“无连接”,点击旁边的按钮选择“我的好友”,进入配对界面; 2.选择好友之后,返回主界面,标题栏会显示已连接的手机型号; 3.两部手机间可通过蓝牙聊天 效果展示 项目结构 主要代码 1

  • 8.10. 示例: 聊天服务 我们用一个聊天服务器来终结本章节的内容,这个程序可以让一些用户通过服务器向其它所有用户广播文本消息。这个程序中有四种goroutine。main和broadcaster各自是一个goroutine实例,每一个客户端的连接都会有一个handleConn和clientWriter的goroutine。broadcaster是select用法的不错的样例,因为它需要处理三种