用于串口的Android蓝牙UUID导致异常

时间:2011-04-25 03:51:00

标签: android bluetooth uuid

我正在使用Android开发示例项目BluetoothChat http://developer.android.com/resources/samples/BluetoothChat/index.html 我在Archos 43上运行它并尝试与串口连接到蓝牙适配器。 要与适配器通信,我需要使用UUID 00001101-0000-1000-8000-00805F9B34FB。 但是,当我这样做时,我在这一行得到一个Null Pointer Exception: socket = mmServerSocket.accept();

如果我使用不同的UUID我没有这个问题,但我无法连接到串行适配器。 如果我使用摩托罗拉Droid而不是Archos 43,我没有这个问题。

从一些错误消息中,我认为Archos正在使用bluez堆栈。

在调用accept()函数时,为什么这个UUID和堆栈的组合会导致异常的任何想法?

这是周围的代码(您可以从上面的链接获取整个源代码)

    public void run() {
        if (D) Log.d(TAG, "BEGIN mAcceptThread" + this);
        setName("AcceptThread");
        BluetoothSocket socket = null;

        // Listen to the server socket if we're not connected
        while (mState != STATE_CONNECTED) {
            try {
                // This is a blocking call and will only return on a
                // successful connection or an exception
                socket = mmServerSocket.accept();
            } catch (IOException e) {
                Log.e(TAG, "accept() failed", e);
                break;
            }

日志中的一些错误消息:

04-25 21:05:33.278:ERROR / BluetoothChatService(3321):listen()失败

04-25 21:05:33.278:ERROR / BluetoothChatService(3321):java.io.IOException:无法为BluetoothChat注册SDP记录

04-25 21:05:33.278:ERROR / BluetoothChatService(3321):在android.bluetooth.BluetoothAdapter.listenUsingRfcommWithServiceRecord(BluetoothAdapter.java:778)

2 个答案:

答案 0 :(得分:0)

您是否更改了“class AcceptThread”的构造函数,您使用此函数“listenUsingRfcommWithServiceRecord()”?

我在archos 70上使用相同的UUID而且我没有得到任何蓝牙连接错误。(尝试重新启动archos,如果它的间歇性。)我想添加这个作为评论由于某些原因我没有看到评论!

答案 1 :(得分:0)

最终问题通过Archos的固件更新解决了。