如何找到合适的UUID? [英] How do I find the proper UUID?

查看:83
本文介绍了如何找到合适的UUID?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从有人在这里一个星期左右前得到了帮助,但似乎仍然与我的code的一个问题。我运行的是Android 2.0,所以我不能使用的方法来获取用户界面,而不是我需要反思调用的方法。下面是我的code

 公共ConnectThread(BluetoothDevice类设备,布尔收费){
        Log.d(TAG,here5);
        mmDevice =设备;
        的BluetoothSocket TMP = NULL;
        mSocketType =安全的? 安全:不安全;
        Log.d(TAG,here6);
        //获取的BluetoothSocket用于与连接
        //给BluetoothDevice类

        ParcelUuid []的UUID = servicesFromDevice(mmDevice);
        Log.d(Integer.toString(uuids.length),here7);
        尝试 {
            如果(安全){
                TMP = device.createRfcommSocketToServiceRecord(
                        的UUID [0] .getUuid());
            } 其他 {
                TMP = device.createInsecureRfcommSocketToServiceRecord(
                        的UUID [0] .getUuid());
            }
 

我收到了code以上最后一行一个NullPointerException异常。我假设它是在谈论我的UUID [0] .getUuid()调用。该servicesFromDevice功能是低于...

 公共ParcelUuid [] servicesFromDevice(BluetoothDevice类设备){
    尝试 {
        类的cl =的Class.forName(android.bluetooth.BluetoothDevice);
        类[]面值= {};
        方法方法= cl.getMethod(getUuids,标准杆);
        [对象]的args = {};
        ParcelUuid [] RETVAL =(ParcelUuid [])method.invoke(设备参数);
        返回RETVAL;
    }赶上(例外五){
        e.printStackTrace();
        返回null;
    }
}
 

下面是我的LogCat中

  06-19 13:11:07.002:D / MainMenu的(13137):onActivityResult -1
06-19 13:11:07.002:D / BluetoothService(13137):连接到:00:06:66:00:A2:11
06-19 13:11:07.002:D / BluetoothService(13137):here1
06-19 13:11:07.002:D / BluetoothService(13137):here2
06-19 13:11:07.002:D / BluetoothService(13137):here5
06-19 13:11:07.010:D / BluetoothService(13137):here6
06-19 13:11:07.017:D / AndroidRuntime(13137):关闭虚拟机
06-19 13:11:07.017:W / dalvikvm(13137):主题ID = 1:螺纹退出与未捕获的异常(组= 0x40015560)
06-19 13:11:07.025:E / AndroidRuntime(13137):致命异常:主要
06-19 13:11:07.025:E / AndroidRuntime(13137):java.lang.RuntimeException的:不提供结果ResultInfo {谁= NULL,请求= 1,结果= -1,数据= {意向(有临时演员)}}到活动{my.eti.commander / my.eti.commander.MainMenu}:显示java.lang.NullPointerException
06-19 13:11:07.025:E / AndroidRuntime(13137):在android.app.ActivityThread.deliverResults(ActivityThread.java:2532)
06-19 13:11:07.025:E / AndroidRuntime(13137):在android.app.ActivityThread.handleSendResult(ActivityThread.java:2574)
06-19 13:11:07.025:E / AndroidRuntime(13137):在android.app.ActivityThread.access $ 2000(ActivityThread.java:117)
06-19 13:11:07.025:E / AndroidRuntime(13137):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:961)
06-19 13:11:07.025:E / AndroidRuntime(13137):在android.os.Handler.dispatchMessage(Handler.java:99)
06-19 13:11:07.025:E / AndroidRuntime(13137):在android.os.Looper.loop(Looper.java:130)
06-19 13:11:07.025:E / AndroidRuntime(13137):在android.app.ActivityThread.main(ActivityThread.java:3683)
06-19 13:11:07.025:E / AndroidRuntime(13137):在java.lang.reflect.Method.invokeNative(本机方法)
06-19 13:11:07.025:E / AndroidRuntime(13137):在java.lang.reflect.Method.invoke(Method.java:507)
06-19 13:11:07.025:E / AndroidRuntime(13137):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
06-19 13:11:07.025:E / AndroidRuntime(13137):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-19 13:11:07.025:E / AndroidRuntime(13137):在dalvik.system.NativeStart.main(本机方法)
06-19 13:11:07.025:E / AndroidRuntime(13137):由:显示java.lang.NullPointerException
。06-19 13:11:07.025:E / AndroidRuntime(13137):在my.eti.commander.BluetoothService $ ConnectThread< INIT>(BluetoothService.java:409)
06-19 13:11:07.025:E / AndroidRuntime(13137):在my.eti.commander.BluetoothService.connect(BluetoothService.java:180)
06-19 13:11:07.025:E / AndroidRuntime(13137):在my.eti.commander.MainMenu.onActivityResult(MainMenu.java:238)
06-19 13:11:07.025:E / AndroidRuntime(13137):在android.app.Activity.dispatchActivityResult(Activity.java:3908)
06-19 13:11:07.025:E / AndroidRuntime(13137):在android.app.ActivityThread.deliverResults(ActivityThread.java:2528)
06-19 13:11:07.025:E / AndroidRuntime(13137):11 ...更多
 

解决方案

从@Devunwired在上面的注释部分......

你有没有使用常见SPP ID试图,许多嵌入式设备使用,而不是试图查询设备?

您可能只是运气了,并有嵌入的芯片,使用该服务ID之一:

  UUID MY_UUID = UUID.fromString(00001101-0000-1000-8000-00805F9B34FB)
 

设置我的 UUID 此服务ID为我工作。

I received help from someone here a week or so ago, but there seems to still be a problem with my code. I am running Android 2.0 so I cannot use the methods to get the UI, instead I need to call the methods reflectively. Below is my code

            public ConnectThread(BluetoothDevice device, boolean secure) {
        Log.d(TAG,"here5");
        mmDevice = device;
        BluetoothSocket tmp = null;
        mSocketType = secure ? "Secure" : "Insecure";
        Log.d(TAG,"here6");
        // Get a BluetoothSocket for a connection with the
        // given BluetoothDevice

        ParcelUuid[] uuids = servicesFromDevice( mmDevice );
        Log.d( Integer.toString( uuids.length ),"here7");
        try {
            if (secure) {
                tmp = device.createRfcommSocketToServiceRecord(
                        uuids[0].getUuid());
            } else {
                tmp = device.createInsecureRfcommSocketToServiceRecord(
                        uuids[0].getUuid());
            }

I receive a NullPointerException in the very last line of code above. I'm assuming it is talking about my uuids[0].getUuid() call. The servicesFromDevice function is below...

    public ParcelUuid[] servicesFromDevice(BluetoothDevice device) {
    try {
        Class cl = Class.forName("android.bluetooth.BluetoothDevice");
        Class[] par = {};
        Method method = cl.getMethod("getUuids", par);
        Object[] args = {};
        ParcelUuid[] retval = (ParcelUuid[]) method.invoke(device, args);
        return retval;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

Here is my LogCat

06-19 13:11:07.002: D/MainMenu(13137): onActivityResult -1
06-19 13:11:07.002: D/BluetoothService(13137): connect to: 00:06:66:00:A2:11
06-19 13:11:07.002: D/BluetoothService(13137): here1
06-19 13:11:07.002: D/BluetoothService(13137): here2
06-19 13:11:07.002: D/BluetoothService(13137): here5
06-19 13:11:07.010: D/BluetoothService(13137): here6
06-19 13:11:07.017: D/AndroidRuntime(13137): Shutting down VM
06-19 13:11:07.017: W/dalvikvm(13137): threadid=1: thread exiting with uncaught exception (group=0x40015560)
06-19 13:11:07.025: E/AndroidRuntime(13137): FATAL EXCEPTION: main
06-19 13:11:07.025: E/AndroidRuntime(13137): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {my.eti.commander/my.eti.commander.MainMenu}: java.lang.NullPointerException
06-19 13:11:07.025: E/AndroidRuntime(13137):    at android.app.ActivityThread.deliverResults(ActivityThread.java:2532)
06-19 13:11:07.025: E/AndroidRuntime(13137):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:2574)
06-19 13:11:07.025: E/AndroidRuntime(13137):    at android.app.ActivityThread.access$2000(ActivityThread.java:117)
06-19 13:11:07.025: E/AndroidRuntime(13137):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:961)
06-19 13:11:07.025: E/AndroidRuntime(13137):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-19 13:11:07.025: E/AndroidRuntime(13137):    at android.os.Looper.loop(Looper.java:130)
06-19 13:11:07.025: E/AndroidRuntime(13137):    at android.app.ActivityThread.main(ActivityThread.java:3683)
06-19 13:11:07.025: E/AndroidRuntime(13137):    at java.lang.reflect.Method.invokeNative(Native Method)
06-19 13:11:07.025: E/AndroidRuntime(13137):    at java.lang.reflect.Method.invoke(Method.java:507)
06-19 13:11:07.025: E/AndroidRuntime(13137):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-19 13:11:07.025: E/AndroidRuntime(13137):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-19 13:11:07.025: E/AndroidRuntime(13137):    at dalvik.system.NativeStart.main(Native Method)
06-19 13:11:07.025: E/AndroidRuntime(13137): Caused by: java.lang.NullPointerException
06-19 13:11:07.025: E/AndroidRuntime(13137):    at my.eti.commander.BluetoothService$ConnectThread.<init>(BluetoothService.java:409)
06-19 13:11:07.025: E/AndroidRuntime(13137):    at my.eti.commander.BluetoothService.connect(BluetoothService.java:180)
06-19 13:11:07.025: E/AndroidRuntime(13137):    at my.eti.commander.MainMenu.onActivityResult(MainMenu.java:238)
06-19 13:11:07.025: E/AndroidRuntime(13137):    at android.app.Activity.dispatchActivityResult(Activity.java:3908)
06-19 13:11:07.025: E/AndroidRuntime(13137):    at android.app.ActivityThread.deliverResults(ActivityThread.java:2528)
06-19 13:11:07.025: E/AndroidRuntime(13137):    ... 11 more

解决方案

From @Devunwired in the comment section above......

Have you tried using the common SPP ID that many embedded devices use, rather than trying to query the device?

You might just luck out and have one of the embedded chips that uses this service ID:

UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")

Setting my UUID to this service ID worked for me.

这篇关于如何找到合适的UUID?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆