6

Myoアームバンドを使用する Android アプリケーションを開発しています。アクセシビリティサービスとして実装したいので、アームバンドによって検出されたジェスチャーが、たとえば家に帰るなどできるようにします。

ハブを初期化しようとしていますが、次のエラー スタックでアプリが停止します。

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)

これは、Myo のドキュメントに従って、ハブの初期化に使用するコードです。アクセシビリティ サービスの onCreate メソッドと onServiceConnected メソッドの両方に入れてみましたが、とにかくエラーが発生します。

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

最新の Myo Android SDK を使用しています。最新のファームウェアを搭載した Nexus 5 でテストしています。

私には SDK 内のエラーのように思えますが、私の設定に関係があるのでしょうか? どんな助けでも大歓迎です。

ただし、SDK で提供されているサンプルには、同じ問題が発生していないようです。

理論的には、次の方法で libgesture-classifier.so ファイルが追加されます。

  1. build.gradle ファイルを介してプロジェクトに Myo SDK を含めています。

    dependencies {
        ...    
        repositories {
            maven {
                // this must point to the myorepository distributed with the Myo SDK
                url '../myorepository'
            }
        }
    compile('com.thalmic:myosdk:0.10.+@aar')
    }
    
  2. myrepository には myosdk-0.10.0.aar が含まれています。

  3. zipとして調べると、libs/native-libs.jarが含まれています

  4. これを zip として調べるとアーキテクチャ フォルダのリスト、それぞれに単一のファイル libgesture-classifier.so が含まれています。

4

1 に答える 1

1

Android 用の gradle プラグインを以前のバージョンに戻すことで、問題を解決できました。myosdk 内のネイティブ ライブラリに問題があるようです。正しくコピーされません。

プロジェクトから build.gradle ファイルを編集するだけです。バージョン 1.3.0 でうまくいきました。

// 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'**
    }
}
于 2016-05-30T08:55:00.653 に答える