为什么在Android> 2.2中保留蓝牙SPP UUID?

时间:2011-04-05 14:56:11

标签: java android bluetooth

我正在开发一款Android应用程序 通过蓝牙与其他设备通信。

打开蓝牙服务器插槽 用于SPP通信的着名标准UUID: (00001101-0000-1000-8000-00805F9B34FB)。

但是,由于我的Archos Tablet上的Android 2.2更新失败,但有例外, 说这个UUID是保留的。

在Android 2.1的里程碑上,相同的代码可以正常运行。

为什么要保留此UUID? 在Android Source中,我可以看到保留的UUID数组,但不包括SPP ID。

请参阅:http://grepcode.com/file/repository....RESERVED_UUIDS

是否有人知道可以使用给定的UUID打开蓝牙套接字的解决方法?

日志中的异常堆栈跟踪:

W/BluetoothService( 1290): Attempted to register a reserved UUID: 00001101-0000-1000-8000-00805f9b34fb
E/BluetoothService(20201): Socket listen() failed
E/BluetoothService(20201): java.io.IOException: Not able to register SDP record for GlucoTel SPP
E/BluetoothService(20201): at android.bluetooth.BluetoothAdapter.listenUsingRfco mmWithServiceRecord(BluetoothAdapter.java:778)
E/BluetoothService(20201): at com.bodytel.android.BluetoothService$AcceptThread. <init>(BluetoothService.java:285)
E/BluetoothService(20201): at com.bodytel.android.BluetoothService.start(Bluetoo thService.java:156)
E/BluetoothService(20201): at com.bodytel.android.BodytelAndroidClient.onResume( BodytelAndroidClient.java:246)
E/BluetoothService(20201): at android.app.Instrumentation.callActivityOnResume(I nstrumentation.java:1149)
E/BluetoothService(20201): at android.app.Activity.performResume(Activity.java:3 823)
E/BluetoothService(20201): at android.app.ActivityThread.performResumeActivity(A ctivityThread.java:3118)
E/BluetoothService(20201): at android.app.ActivityThread.handleResumeActivity(Ac tivityThread.java:3143)
E/BluetoothService(20201): at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:2684)
E/BluetoothService(20201): at android.app.ActivityThread.access$2300(ActivityThr ead.java:125)
E/BluetoothService(20201): at android.app.ActivityThread$H.handleMessage(Activit yThread.java:2033)
E/BluetoothService(20201): at android.os.Handler.dispatchMessage(Handler.java:99 )
E/BluetoothService(20201): at android.os.Looper.loop(Looper.java:123)
E/BluetoothService(20201): at android.app.ActivityThread.main(ActivityThread.jav a:4627)
E/BluetoothService(20201): at java.lang.reflect.Method.invokeNative(Native Method)
E/BluetoothService(20201): at java.lang.reflect.Method.invoke(Method.java:521)
E/BluetoothService(20201): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:868)
E/BluetoothService(20201): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:626)
E/BluetoothService(20201): at dalvik.system.NativeStart.main(Native Method)

我们用来打开蓝牙插座的Android Java Code Snippet:

private static final String BT_NAME = "GlucoTel SPP";
private static final UUID BT_ID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
.....
BluetoothAdapter mAdapter = BluetoothAdapter.getDefaultAdapter();
BluetoothServerSocket socket = mAdapter.listenUsingRfcommWithServiceRecord(BT_NAM E, BT_ID);
.....
socket = mmServerSocket.accept();

我们在以下设备上发现了此问题:

测试设备1:
- Archos 32
- 固件2.1.8(Android 2.2.1)
- 电路板版本:A32-V5

测试设备2:
- Archos 101
- 固件2.0.54(Android 2.2.1)
- 电路板版本A101IT-V6

感谢您的任何想法或反馈!

0 个答案:

没有答案