Android从服务连接到BLE设备(启动时启动)

时间:2016-05-19 15:24:56

标签: android service ipc bluetooth-lowenergy

我的问题是我想用服务中的.jar库中的逻辑连接到BLE设备(它作为单独的进程运行)。目前我正面临下一个错误。 LogCat消息:

05-19 17:46:45.107 14191-14203/com.<name>.rnd.erservice E/JavaBinder: *** Uncaught remote exception!  (Exceptions are not yet supported across processes.)
                                                                     java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
                                                                         at android.os.Handler.<init>(Handler.java:200)
                                                                         at android.os.Handler.<init>(Handler.java:114)
                                                                         at com.slsi.<name>.<name>.<init>(<name>.java:94)
                                                                         at com.<name>.rnd.erservice.device.<name>.<init>(<name>.java:28)
                                                                         at com.<name>.rnd.erservice.AppService$2.connectToDevices(AppService.java:184)
                                                                         at com.<name>.rnd.servicelibrary.IRemoteProductService$Stub.onTransact(IRemoteProductService.java:67)
                                                                         at android.os.Binder.execTransact(Binder.java:461)

似乎我需要从UI线程或使用Handler的线程启动此连接,但是应用程序和远程服务之间必须没有直接连接(对服务和获取结果的API调用类型)。感谢

1 个答案:

答案 0 :(得分:0)

这可能与BLE无关。您可以从任何线程执行GATT操作。如果库需要在具有looper的线程上运行但你不想在主线程上运行,你可以创建一个执行Looper.prepare()的新线程,然后调用库并在完成时,调用Looper.loop()来处理来自库的事件。