Error de enlace no satisfactorio al inicializar el concentrador Myo en Android

Estoy desarrollando una aplicación para Android que utilizará el brazalete Myo . Quiero implementarlo como un servicio de accesibilidad, por lo que los gestos detectados por el brazalete podrían, por ejemplo, navegar a casa, etc.

Estoy intentando inicializar el eje, pero la aplicación para con la pila de error siguiente:

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) 

Este es el código que utilizo para la inicialización del concentrador, según la documentación de Myo. He intentado ponerlo en los métodos onCreate y onServiceConnected del servicio de accesibilidad, el error aparece de todos modos.

  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."); } 

Estoy usando el Myo Android SDK más reciente. Pruebas en Nexus 5 con el firmware más reciente.

A mí me parece un error dentro del SDK, pero quizás es algo que ver con mi configuración? Cualquier ayuda sería apreciada.

Las muestras dadas en el SDK no parecen sufrir de la misma cuestión sin embargo.

En teoría, se añade el archivo libgesture-classifier.so a través de lo siguiente:

  1. Estoy incluyendo el Myo SDK en el proyecto a través del archivo build.gradle:

     dependencies { ... repositories { maven { // this must point to the myorepository distributed with the Myo SDK url '../myorepository' } } compile('com.thalmic:myosdk:0.10.+@aar') } 
  2. El myorepository contiene myosdk-0.10.0.aar.

  3. Que, cuando lo examino como un zip, contiene libs / native-libs.jar

  4. Que, a su vez, cuando se examina como una cremallera, contiene Una lista de carpetas de arquitectura , Cada uno de los cuales contiene el archivo único libgesture-classifier.so

Podría resolver el problema volviendo a una versión anterior del complemento gradle para Android. Parece que hay un problema con las bibliotecas nativas dentro del myosdk, no se copian correctamente.

Simplemente edite el archivo build.gradle del proyecto. La versión 1.3.0 funcionó para mí.

 // 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'** } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.