Android Studio で Kudan SDK v.1.4 をパッケージ eu.kudan.ar で使用しています。
プロジェクトはエラーなしでビルドされますが、アプリを実行すると次のエラーが発生します。
12-29 16:17:33.669 22875-22875/? I/art: レイト イネーブル -Xcheck:jni 12-29 16:17:33.689 22875-22889/? E/art: ハンドシェイク バイトの書き込みに失敗しました (-1/14): 壊れたパイプ 12-29 16:17:33.689 22875-22889/? I/art: デバッガーがアクティブではなくなりました 12-29 16:17:33.709 22875-22875/? W/ResourcesManager: getResources() の前に -------------- config= {1.0 ?mcc?mnc it_IT ldltr sw800dp w1280dp h726dp 240dpi xlrg land finger -keyb/v/h -nav/h suim :1 s.6} 12-29 16:17:33.719 22875-22875/? I/InstantRun: Instant Run ランタイムが開始されました。Android パッケージは eu.kudan.ar、実際のアプリケーション クラスは null です。12-29 16:17:33.729 22875-22875/? W/art: DexFile /data/data/eu.kudan.ar/files/instant-run/dex/slice-slice_9-classes.dex の OatDexFile が見つかりませんでした (正規パス /data/data/eu.kudan.ar/ files/instant-run/dex/slice-slice_9-classes. dex) OatFile /data/data/eu.kudan.ar/cache/slice-slice_9-classes.dex 12-29 16:17:33.909 22875-22875/? でチェックサム 0x47fac275 を使用 I/CachedDir: ファイルが変更され、キャッシュが補充されました - 1357 12-29 16:17:33.919 22875-22875/? リンカあり: libKudan.so: 未使用の DT エントリ: タイプ 0x6ffffffe arg 0x66c50 12-29 16:17:33.919 22875-22875/? リンカーあり: libKudan.so: 未使用の DT エントリ: タイプ 0x6fffffff arg 0x3 12-29 16:17:33.949 22875-22875/? 私/kudan-ndk:API キーは有効です。12-29 16:17:34.099 22875-22875/? I/ARFragment: onResume 12-29 16:17:34.159 22875-22875/? I/View: ssignParent(ViewParent 親) 親は: android.view.ViewRootImpl@2d5754ef 12-29 16:17:34.179 22875-22925/? I/OpenGLRenderer: 初期化された EGL、バージョン 1.4 12-29 16:17:34.189 22875-22875/? I/KudanAR: 画面: 1920x1128 12-29 16:17:34.499 22875-22875/? I/HwCust: クラス android.media.HwCustMediaPlayerImpl 12-29 16:17:34.509 22875-22875/? のコンストラクターが見つかりました E/MediaPlayer: 字幕コントローラーが既に設定されている必要があります 12-29 16:17:34.519 22875-22875/? W/System.err: java.io.FileNotFoundException: このファイルはファイル記述子として開くことができません。おそらく圧縮されています 12-29 16:17:34.519 22875-22875/? W/System.err: android.content.res.AssetManager.openAssetFd(ネイティブ メソッド) で ... java.lang.reflect.Method.invoke(Method.java:372) 12-29 16:17:34.519 22875-22875/? W/System.err: com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964) 12-29 16:17:34.519 22875-22875/? W/System.err: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759) 12-29 16:17:34.529 22875-22875/? E/AndroidRuntime: FATAL EXCEPTION: main Process: eu.kudan.ar、PID: 22875 java.lang.NullPointerException: 仮想メソッド 'eu.kudan.kudan.ARWorld eu.kudan.kudan.ARImageTrackable.getWorld()' を呼び出そうとしていますnull オブジェクト参照 eu.kudan.ar.MainActivity.setup(MainActivity.java:56) eu.kudan.kudan.ARView.setup(ARView.java:104) eu.kudan.kudan.ARView.onSizeChanged(ARView.java:306) ) android.view.View.sizeChange(View.java:15848) で android.view.View.setFrame(View.java:15813) で android.view.SurfaceView.setFrame(SurfaceView.java:316) で android.view .View.layout(View.java:15729) で ....
アセットは適切にインポートされます。問題は :
trackableSet.loadFromAsset("demo.KARMarker");
この私のアクティビティ:
public class MainActivity extends ARActivity implements ARImageTrackableListener {
public void onCreate(Bundle savedInstanceState) {
// set api key for this package name.
ARAPIKey key = ARAPIKey.getInstance();
key.setAPIKey("lwoY4cyKEI+suoK+VyK2RtCjSMnzQRcsJmgAP8Uwt5MIJvxKCrE8rwLTCRxKQeuMMG9yG61W5J/53GpU0FdrDSNI6DDYoMWTQYcjvZ9kRWL2qW8782mk8Wem6T8orsVN977Ft+6biQIoTLWE4ZKJgd0BKjqwwkX17RYgjp1NCTTFnxhYzzmbA16ocun1Ks88bLjN2ONVlOwTrPBET+cFFTieoAx1HlPhT0G32k5qCDDhb/OkVYWHPtBxLfHW1HmRJLpC1Q7GIKVgHH+WAekrMDm6Sf7r+CrVxKsmTPmONojOvWo59y1EqwYOjntUOVtnptHpMNlM9MSC9gA9hl7A90lXRhVqoxGVJDPrNjFOYzCVhzECKZ7WupYjBvfHLq7LRSiT1dXVqMCU496QlF2pXlmVaICOMV0MtfkEQqstQBXvkFEAJVVbLr8eUQZZbXAYw5Rd3syT2zPYNIDpxJn2+vyIXFHR2AD1B7cUZxuYOJfbUSODUdkhUWB/MpFtYG8o677/ReB+vDmngFlvz16hR0gOdauHzX0nhl8l0N3MjhjKF4dxqIrqmc0W2g2fSDHga7frddX2JRgOgJEsmJYldNe7FXMjUNsUdCuMEEf9YVwpDoyqQYZzNNseZOBtIPS+1eHhtlmTg7egvIIU9XQPrz7b/zxEVuw7ObTv8PmmxyI=");
super.onCreate(savedInstanceState);
}
public void setup() {
// create a trackable from a bundled image.
ARImageTrackable wavesTrackable = new ARImageTrackable("waves");
wavesTrackable.loadFromAsset("waves.png");
// create video texture.
ARVideoTexture videoTexture = new ARVideoTexture();
videoTexture.loadFromAsset("waves.mp4");
ARVideoNode videoNode = new ARVideoNode(videoTexture);
// add video to the waves trackable.
wavesTrackable.getWorld().addChild(videoNode);
// load a set of trackables from a bundled file.
ARTrackableSet trackableSet = new ARTrackableSet();
trackableSet.loadFromAsset("demo.KARMarker");
ARImageTracker tracker = ARImageTracker.getInstance();
// add our trackables to the tracker.
tracker.addTrackableSet(trackableSet);
tracker.addTrackable(wavesTrackable);
// create an image node.
ARImageTrackable legoTrackable = tracker.findTrackable("lego");
ARImageNode imageNode = new ARImageNode("BatmanLegoMovie.png");
// make it smaller.
imageNode.scaleBy(0.5f, 0.5f, 0.5f);
// add it to the lego trackable.
legoTrackable.getWorld().addChild(imageNode);
}
@Override
public void didDetect(ARImageTrackable trackable) {
Log.i("KudanSamples", "detected " + trackable.getName());
}
@Override
public void didTrack(ARImageTrackable trackable) {
Log.i("KudanSamples", "tracked");
}
@Override
public void didLose(ARImageTrackable trackable) {
Log.i("KudanSamples", "lost " + trackable.getName());
}
}
解決済み
アセットを /sdcard/marker/asset/ に移動し、代わりに
trackableSet.loadFromAsset("demo.KARMarker");
私は方法を使用しました:
trackableSet.loadFromPath("sdcard/marker/demo.KARMarker");
また、使用するためのライセンス:
sVmoznmKZ+4nFEHD6HoslwpC26PNuBZGHrikUwyon2BKSvza1yu2CqbSrae+pHPr1NHjhsf5pHQOZn8IEqXlqXFodGsrOJhxJANbMOdvnRLUi9/QWGqyRL9FViDmyohw6e5R7U4Ex8H7d7spLLvhfp5HFv56DgLr8c8sC2ipDtv9g1IjOTaY7UGxata3eulG2A/UkIdRv2NcotZXqan01xQUWFAislEwlGguParEYiwu11T4mqtU3dQBbfxpvxbczjdYz493YG3rAO2RHgT+5M5TJShJsz2irkNo71JD2Fzqf4AR2b4+7t1c55zKjegXzGS6Xa/rpNn9yiXUn7rUYIHNvN3cEQa9HsZiVxAV4vJgxFS+T/AxfWqKrEg1uj6xF5MsodZ2EkZ8mqliYIsxZqnFz+Re2HeWG8wvrEob0ZwRIO0TxppAemZc3HChTAPLcNt5gzeBk0oRP4wnrFAFFBDi8XjDocwTSVw++hWZb1qNHzt6bKLsMDRT057UVuuZB6M8f7EOQD79Oah0Vrx/3DUK6e9BEV8oGFNHtk1wyYEkg0i6RLhVSokGx//Qj36A4gCz3h1OjtfB0OuukbNq7xI1L/FcNQLmGYNGZwszARjGr9ESw1gVAkbQMxaV27uo/KoIq4+nR7RL8iT7t7NAaXCFIi24RR+7WGjTvKqWYjA=