我正在使用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)
答案 0 :(得分:0)
您是否更改了“class AcceptThread”的构造函数,您使用此函数“listenUsingRfcommWithServiceRecord()”?
我在archos 70上使用相同的UUID而且我没有得到任何蓝牙连接错误。(尝试重新启动archos,如果它的间歇性。)我想添加这个作为评论由于某些原因我没有看到评论!
答案 1 :(得分:0)
最终问题通过Archos的固件更新解决了。