Reputation: 5843
I want to connect to this device: http://www.rhydolabz.com/index.php?main_page=product_info&products_id=479
I tried using the BluetoothChat
class from the samples. But it did not work. It says unable to connect device
.
Then I tried to use the following code within 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();
and I get the following error
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)
Any way how I can modify my code..?
Upvotes: 1
Views: 3007
Reputation: 23268
Couple of notes:
a) It's not obvious what is the class of variable d. I assume it's BluetoothDevice
b) If my assumption from 1) is correct, it can't find a method createRfcommSocketToServiceRecord(int), because actualy method is createRfcommSocketToServiceRecord(UUID).
c) It's not clear to me, why do you use reflection to get to this method. You can call it on your object directly.
d) There was a piece documentation which says: "Hint: If you are connecting to a Bluetooth serial board then try using the well-known SPP UUID 00001101-0000-1000-8000-00805F9B34FB. However if you are connecting to an Android peer then please generate your own unique UUID.". I think it could be applicable to you.
Update 1
Regarding using directly.
You code should be
d.createRfcommSocketToServiceRecord(someUUID);
since createRfcommSocketToServiceRecord is a method of BluetoothDevice.
Regarding UUID.Take a look at this:
Android: obtaining uuid of a bluetooth device
Android: How do bluetooth UUIDs work?
Upvotes: 6