我想连接到此设备:http://www.rhydolabz.com/index.php?main_page = product_info&product_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();
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
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)
Run Code Online (Sandbox Code Playgroud)
我怎么能修改我的代码..?
几个笔记:
a)变量d的类是什么并不明显.我认为它是BluetoothDevice
b)如果我的假设是1)是正确的,它找不到方法createRfcommSocketToServiceRecord(int),因为actualy方法是createRfcommSocketToServiceRecord(UUID).
c)我不清楚为什么你用反射来达到这种方法.您可以直接在对象上调用它.
d)有一篇文章说:"提示:如果你要连接到蓝牙串行板,那么尝试使用众所周知的SPP UUID 00001101-0000-1000-8000-00805F9B34FB.但是如果要连接到Android同伴那么请生成你自己独特的UUID." 我认为它可能适用于你.
更新1
关于直接使用.
你的代码应该是
d.createRfcommSocketToServiceRecord(someUUID);
Run Code Online (Sandbox Code Playgroud)
因为createRfcommSocketToServiceRecord是一个BluetoothDevice的方法.
关于UUID.看看这个:
| 归档时间: |
|
| 查看次数: |
2213 次 |
| 最近记录: |