所以,我正在尝试将QR扫描仪应用到我的Android应用程序中,而我正在使用Android Studio。用户只需点击(点击)将QR扫描仪调到屏幕上的按钮。此时,用户可以扫描QR代码以获取嵌入的URL,并将其发送到该URL。很简单。
我正在使用[ZBar] [1]库。 我用了这个很棒的[教程] [1]。
我几乎跟着他的教程完全按照他的概述,复制和粘贴。我没有编译错误,应用程序没有任何问题;但是,在运行它时,模拟器会向我发出以下消息:"不幸的是,我的应用程序已停止。"
如果您需要更多信息,请告知我们。
以下是崩溃后logcat输出的内容:
10-02 16:56:26.732 18271-18271/v1.com.example.ggpcoding.myapplication E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: v1.com.example.ggpcoding.myapplication, PID: 18271
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/v1.com.example.ggpcoding.myapplication-2/base.apk"],nativeLibraryDirectories=[/data/app/v1.com.example.ggpcoding.myapplication-2/lib/x86, /vendor/lib, /system/lib]]] couldn't find "libzbarjni.so"
at java.lang.Runtime.loadLibrary(Runtime.java:367)
at java.lang.System.loadLibrary(System.java:1076)
at net.sourceforge.zbar.ImageScanner.<clinit>(Unknown Source)
at v1.com.example.ggpcoding.myapplication.MainActivity.initControls(MainActivity.java:46)
at v1.com.example.ggpcoding.myapplication.MainActivity.onCreate(MainActivity.java:36)
at android.app.Activity.performCreate(Activity.java:6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
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)
这是onCreate函数:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initControls();
}
答案 0 :(得分:0)
您需要自己加载库。您可以在第一个要使用扫描仪的活动中使用以下代码。
static {
System.loadLibrary( "iconv" );
}
答案 1 :(得分:0)
您应该为所有CPU架构构建本机库,以确保应用程序在每台设备上运行,并且我认为您根据应用程序运行的设备没有正确的构建。 我不确定,但我认为你应该为x86构建。 您可以使用android NDK构建本机库。