我在Android Studio上使用Kudan SDK v.1.4打包: eu.kudan.ar
项目构建没有错误,但是当我运行应用程序时,我有这个错误:
12-29 16:17:33.669 22875-22875 /?我/艺术:延迟启用-Xcheck:jni 12-29 16:17:33.689 22875-22889 /? E / art:写入握手字节失败(14的-1):管道损坏 12-29 16:17:33.689 22875-22889 /?我/艺术:调试器不再有效 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:即时运行运行时启动。 Android包是eu.kudan.ar,真正的应用程序类是null。 12-29 16:17:33.729 22875-22875 /? W / art:未能找到DexFile的OatDexFile /data/data/eu.kudan.ar/files/instant-run/dex/slice-slice_9-classes.dex(canonical path /data/data/eu.kudan.ar/文件/ instant-run / dex / slice-slice_9-classes.dex),OatFile中包含校验和0x47fac275 /data/data/eu.kudan.ar/cache/slice-slice_9-classes.dex 12-29 16:17:33.909 22875-22875 /? I / CachedDir:文件已更改,重新填充缓存 - 1357 12-29 16:17:33.919 22875-22875 /? W / linker:libKudan.so:未使用的DT条目:类型0x6ffffffe arg 0x66c50 12-29 16:17:33.919 22875-22875 /? W / linker:libKudan.so:未使用的DT条目:类型0x6fffffff arg 0x3 12-29 16:17:33.949 22875-22875 /? I / 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 parent)parent是: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:at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:964) 12-29 16:17:34.519 22875-22875 /? W / System.err:at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759) 12-29 16:17:34.529 22875-22875 /? E / AndroidRuntime:致命例外:主要 过程:eu.kudan.ar,PID:22875 java.lang.NullPointerException:尝试调用虚方法' eu.kudan.kudan.ARWorld eu.kudan.kudan.ARImageTrackable.getWorld()'在空对象引用 在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&#34);
这是我的活动:
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 =
答案 0 :(得分:0)
首先,文件夹的名称应该是资产,而不是资产。
接下来,将您的资源文件夹保存在app目录中(与...并行) res文件夹)。
现在尝试运行您的应用程序并确保所有文件都是 在资产文件夹中可用。
仍然出现错误?
此时它应该运行良好但您可以进行以下更改以确保应用程序正常运行并且不会出现任何运行时错误。
替换此
ARImageNode imageNode = new ARImageNode("BatmanLegoMovie.png");
带
ARImageNode imageNode = new ARImageNode();
imageNode.initWithPath("file:///android_asset/BatmanLegoMovie.png");
最后,尝试先跟踪图像。您正在尝试一起跟踪图像,视频等。不知道这是否正确,只是为了确保至少有一件事能正常运作。