3

ここで1週間ほど前に誰かから助けをもらいましたが、まだコードに問題があるようです。Android 2.0を実行しているため、メソッドを使用してUIを取得できません。代わりに、メソッドを反射的に呼び出す必要があります。以下は私のコードです

            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());
            }

上記のコードの最後の行でNullPointerExceptionを受け取ります。私はそれが私のuuids[0].getUuid()呼び出しについて話していると仮定しています。servicesFromDevice関数は以下のとおりです...

    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;
    }
}

これが私の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
4

1 に答える 1

0

上記のコメントセクションの@Devunwiredから......

common SPP IDデバイスにクエリを実行するのではなく、多くの組み込みデバイスが使用するものを使用してみましたか?

運が良ければ、このサービスIDを使用する組み込みチップの1つを手に入れることができます。

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

UUIDこのサービスIDに設定するとうまくいきました。

于 2012-11-28T13:53:11.630 に答える