2013-04-18 70 views
1

我想連接到此設備:http://www.rhydolabz.com/index.php?main_page=product_info&products_id=479如何在android中進行藍牙連接?

我嘗試使用樣本中的BluetoothChat類。但它沒有奏效。它說unable to connect device

然後我試圖嘗試捕捉

 // 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) 

無論如何,我怎麼能修改我的代碼..?

回答

5

夫婦的注意事項:

一)這不是很明顯的是類變量d的。我想這是BluetoothDevice類

b)若從1我的假設)是正確的,它無法找到一個方法createRfcommSocketToServiceRecord(INT),因爲actualy方法是createRfcommSocketToServiceRecord(UUID).

C)這我不清楚,爲什麼做你使用反射來達到這個方法。你可以直接在你的對象上調用它。

d)有一個文件說:「提示:如果你連接到藍牙串行板,然後嘗試使用衆所周知的SPP UUID 00001101-0000-1000-8000-00805F9B34FB。但是,如果你連接到Android對等方,請生成您自己的唯一UUID。「。我認爲這可能適用於你。

更新1

直接使用關於。

你的代碼應該是

d.createRfcommSocketToServiceRecord(someUUID); 

因爲createRfcommSocketToServiceRecord是BluetoothDevice類的方法。

關於UUID.Take看看這個:

Android: obtaining uuid of a bluetooth device

Android: How do bluetooth UUIDs work?

+0

是'D'是BluetoothDevice類。我不確定這個UUID的含義。我應該使用什麼設備? 實際上,我從其他項目中取出部分代碼。這就是它們的原因。如果我必須直接使用它,我該如何使用它? –

+0

如果我直接使用'socket = createRfcommSocketToServiceRecord(MY_UUID);',它給了我一個錯誤,說'方法createRfcommSocketToServiceRecord(UUID)未定義爲類型Login \t Login.java' –

+0

@NeilMartin:我更新了答案。 –