2016-05-19 1 views
0

Моя проблема заключается в том, что я хочу подключиться к устройствам BLE с их логикой в ​​библиотеках .jar из службы (которая выполняется как отдельный процесс). В настоящее время я столкнулся со следующей ошибкой. LogCat сообщение:Android подключается к устройству BLE из службы (начинается с загрузки)

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 нити или нити с обработчиком, но не должна быть никакой прямой связью между приложением и удаленным обслуживанием (вид API вызовов для обслуживания и получения результата). Спасибо

ответ

0

Это, вероятно, не имеет отношения к BLE. Вы можете выполнять операции GATT из любого потока. Если библиотеку необходимо запустить в потоке с петлевым механизмом, но вы не хотите запускать основной поток, возможно, вы можете создать новый поток, который выполняет Looper.prepare(), а затем вызовет библиотеку, и когда это будет сделано , вызовите Looper.loop() для обработки событий из библиотеки.

+0

Благодарим за ответ. Вот что я пробовал: 'if (Looper.myLooper() == null) { Looper.prepare(); } handler = new Handler(); Runnable task = new Runnable() { @Override public void run() { // Делаем здесь какую-то работу new Thread (task) .start(); Looper.loop(); ' Но это все еще не работает. Извините, может быть, мне не хватает чего-то действительно простого, я новичок в Android –

+0

Материал петлителя должен быть выполнен во внутренней резьбе. – Emil

+0

это не помогает. –