2016-01-06 29 views
6

Zajmuję się tworzeniem aplikacji dla systemu Android, która będzie używać opaski na rękę Myo. Chcę go zaimplementować jako usługę ułatwień dostępu, aby gesty wykryte przez opaskę mogły np. nawigować do domu itpNiezadowolony błąd łącza podczas inicjowania koncentratora Myo w systemie Android

próbuję zainicjować piastę, ale aplikacja zatrzymuje się z powodu następującego błędu stosu:

01-06 23:42:41.222 11979-11979/eu.miko.myoid E/AndroidRuntime: FATAL EXCEPTION: main 
                  Process: eu.miko.myoid, PID: 11979 
                  java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/eu.miko.myoid-1/base.apk"],nativeLibraryDirectories=[/data/app/eu.miko.myoid-1/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libgesture-classifier.so" 
                   at java.lang.Runtime.loadLibrary(Runtime.java:367) 
                   at java.lang.System.loadLibrary(System.java:1076) 
                   at com.thalmic.myo.scanner.Scanner.<clinit>(Scanner.java:31) 
                   at com.thalmic.myo.Hub.init(Hub.java:201) 
                   at eu.miko.myoid.MyoidAccessibilityService.onCreate(MyoidAccessibilityService.java:21) 
                   at android.app.ActivityThread.handleCreateService(ActivityThread.java:2877) 
                   at android.app.ActivityThread.-wrap4(ActivityThread.java) 
                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1427) 
                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                   at android.os.Looper.loop(Looper.java:148) 
                   at android.app.ActivityThread.main(ActivityThread.java:5417) 
                   at java.lang.reflect.Method.invoke(Native Method) 
                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Jest to kod używać do inicjowania piasty, zgodnie z dokumentacją Myo. Próbowałem umieścić go zarówno na metody onCreate i onServiceConnected usługi dostępności, błąd pojawia się w każdym razie.

Hub hub = Hub.getInstance(); 
    if (hub.init(this, getPackageName())) { 
     Intent intent = new Intent(this, ScanActivity.class); 
     startActivity(intent); 

     hub.setLockingPolicy(Hub.LockingPolicy.NONE); 

     hub.addListener(mListener); 
    } 
    else { 
     Log.e(TAG, "Could not initialize the Hub."); 
    } 

Używam najnowszego zestawu SDK Myo Android. Testowanie na Nexusie 5 przy użyciu najnowszego oprogramowania układowego.

Dla mnie wygląda na błąd w SDK, ale może to ma coś wspólnego z moją konfiguracją? Każda pomoc będzie doceniona.

Próbki podane w pakiecie SDK nie wydają się jednak cierpieć z powodu tego samego problemu.

Teoretycznie plik libgesture-classifier.so dodaje, poprzez:

  1. jestem tym Myo SDK w projekcie poprzez akt build.gradle:

    dependencies { 
        ...  
        repositories { 
         maven { 
          // this must point to the myorepository distributed with the Myo SDK 
          url '../myorepository' 
         } 
        } 
    compile('com.thalmic:myosdk:[email protected]') 
    } 
    
  2. Myorepository zawiera plik myosdk-0.10.0.aar.

  3. Który, kiedy zbadać go jako zamek, zawiera libs/native libs.jar

  4. co z kolei przy badaniu jako zip zawiera a list of architecture folders, z których każdy zawiera jeden plik libgesture- classifier.so

+0

Czy dodałeś pliki "libgesture-classifier.so" do swojej aplikacji? – geisshirt

+0

Tak, zobacz zmiany w pytaniu :) –

+0

@ user2363767: Czy znalazłeś odpowiednie rozwiązanie? Ręcznie skopiowałem pliki .so do folderu 'src/main/jniLibs' jako obejście. – JiTHiN

Odpowiedz

1

Mogłabym rozwiązać problem, przełączając się z wcześniejszej wersji wtyczki gradle na Androida. Wygląda na to, że problem dotyczy bibliotek natywnych w myosdk, ale nie są one poprawnie kopiowane.

Po prostu edytuj plik build.gradle z projektu. Wersja 1.3.0 działała dla mnie.

// Top-level build file where you can add configuration options common to all sub-projects/modules. 
buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     **classpath 'com.android.tools.build:gradle:1.3.0'** 
    } 
}