1

このデバイスに接続したい: http://www.rhydolabz.com/index.php?main_page=product_info&products_id=479

BluetoothChatサンプルのクラスを使ってみました。しかし、うまくいきませんでした。それは言いunable to connect deviceます。

次に、try catch 内で次のコードを使用しようとしました

        // Create a Socket connection: need the server's UUID number
Method m = d.getClass().getMethod("createRfcommSocketToServiceRecord", new Class[] { int.class });
socket = (BluetoothSocket) m.invoke(d, 1);
socket.connect();
Log.d("WCAM", ">>Client connectted");
inputStream = socket.getInputStream();
outputStream = socket.getOutputStream();
socket.close();
Toast.makeText(this, "Bluetooth is Connected", Toast.LENGTH_LONG).show();

次のエラーが表示されます

04-18 20:45:01.660: W/System.err(6780): java.lang.NoSuchMethodException: createRfcommSocketToServiceRecord [int]
04-18 20:45:01.660: W/System.err(6780):     at java.lang.Class.getConstructorOrMethod(Class.java:460)
04-18 20:45:01.660: W/System.err(6780):     at java.lang.Class.getMethod(Class.java:915)
04-18 20:45:01.660: W/System.err(6780):     at com.xpleria.wirelesscontroller.Login.onStart(Login.java:90)
04-18 20:45:01.660: W/System.err(6780):     at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1133)
04-18 20:45:01.670: W/System.err(6780):     at android.app.Activity.performStart(Activity.java:4475)
04-18 20:45:01.670: W/System.err(6780):     at android.app.Activity.performRestart(Activity.java:4526)
04-18 20:45:01.670: W/System.err(6780):     at android.app.Activity.performResume(Activity.java:4531)
04-18 20:45:01.670: W/System.err(6780):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2434)
04-18 20:45:01.670: W/System.err(6780):     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2472)
04-18 20:45:01.670: W/System.err(6780):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1173)
04-18 20:45:01.670: W/System.err(6780):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-18 20:45:01.680: W/System.err(6780):     at android.os.Looper.loop(Looper.java:137)
04-18 20:45:01.680: W/System.err(6780):     at android.app.ActivityThread.main(ActivityThread.java:4424)
04-18 20:45:01.680: W/System.err(6780):     at java.lang.reflect.Method.invokeNative(Native Method)
04-18 20:45:01.680: W/System.err(6780):     at java.lang.reflect.Method.invoke(Method.java:511)
04-18 20:45:01.680: W/System.err(6780):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
04-18 20:45:01.680: W/System.err(6780):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
04-18 20:45:01.680: W/System.err(6780):     at dalvik.system.NativeStart.main(Native Method)

どうすればコードを変更できますか..?

4

1 に答える 1

6

いくつかのメモ:

a) 変数 d のクラスが何であるかは明らかではありません。BluetoothDeviceだと思います

b) 1) の仮定が正しければ、メソッド createRfcommSocketToServiceRecord(int) が見つかりません。実際のメソッドはcreateRfcommSocketToServiceRecord(UUID) であるためです。

c) なぜこのメソッドに到達するためにリフレクションを使用するのですか? オブジェクトで直接呼び出すことができます。

d) 「ヒント: Bluetooth シリアル ボードに接続している場合は、既知の SPP UUID 00001101-0000-1000-8000-00805F9B34FB を使用してみてください。ただし、Android ピアに接続している場合は、次に、独自の一意の UUID を生成してください。」あなたにも当てはまると思います。

更新 1

直接使用について。

あなたのコードは

 d.createRfcommSocketToServiceRecord(someUUID);

createRfcommSocketToServiceRecord は BluetoothDevice のメソッドであるためです。

UUIDについては、これを見てください:

Android: Bluetooth デバイスの uuid を取得する

Android: Bluetooth UUID はどのように機能しますか?

于 2013-04-18T15:33:43.507 に答える