Tôi sẽ bắt đầu giải thích tất cả các bước tôi đã làm và cuối cùng vấn đề là gì.
- Tải xuống ZXing-2.2 https://code.google.com/p/zxing/downloads/list
- Extrac tất cả trong zxing-2.2.
- Tải xuống và cài đặt Apache Ant http://www.youtube.com/watch?v=XJmndRfb1TU
- Với việc sử dụng Windows Commandline (Chạy-> CMD) điều hướng đến thư mục được trích xuất
- Trong cửa sổ dòng lệnh - Nhập 'ant -f core / build.xml' nhấn enter và để Apache hoạt động
Tại thời điểm này là như thế Tích hợp thư viện ZXing trực tiếp vào ứng dụng Android của tôi
Nhưng Wooops, "Buildfile: core \ build.xml không tồn tại! Xây dựng không thành công. Ok. 6. Nhập ZXing - thiếu core / build.xml
Bây giờ có, tôi có core.jar của tôi.
- Mở Android Studio, File -> Import Project -> Chọn / android / in /zxing-2.2/ -> Tạo dự án từ các nguồn hiện có -> Tên dự án: andoid -> Tệp nguồn cho ... tất cả đã chọn Tiếp theo -> Thư viện (không thể không làm gì cả) Tiếp theo -> Mô-đun (đã chọn android) Tiếp theo -> SDK 1.7 Tiếp theo -> Hoàn tất
Với dự án Open -> Build -> Rebuild project
100 lỗi 19 cảnh báo
File -> project Structure -> Libraries -> Add -> Java -> Chọn core.jar mà tôi tạo trước và OK -> Library 'core' sẽ được thêm vào các module đã chọn. (android) OK -> Và OK trong Hộp thoại Cấu trúc Dự án.
Xây dựng -> Xây dựng lại dự án
15 lỗi 20 cảnh báo
Tất cả các lỗi là lỗi: biểu thức liên tục bắt buộc và tôi hiểu rồi Lỗi trong trường hợp Chuyển đổi dự án ZXing trong Android Tôi thay đổi tất cả các công tắc nếu elses.
0 lỗi 20 cảnh báo
Ok, bây giờ tiếp tục:
Tệp -> Dự án mới -> zxing_demo Tiếp theo -> Tiếp theo -> Hoạt động trống Tiếp theo -> Hoàn tất
Trong dự án mới -> File -> Import module -> Tìm kiếm và chọn / android / OK -> Tạo module từ các nguồn hiện có Next -> Next -> Next -> Next -> Finish
Bây giờ tôi có thể thấy trong explorer / android / / zging_demoProject / và External Libraries
Bây giờ tôi thay đổi mã của tôi tu quét QR
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.zxing_demo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.zxing_demo.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:clearTaskOnLaunch="true"
android:stateNotNeeded="true"
android:configChanges="orientation|keyboardHidden"
android:name="com.google.zxing.client.android.CaptureActivity"
android:screenOrientation="landscape"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter >
<action android:name="com.google.zxing.client.android.SCAN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
MainActivity.java
package com.example.zxing_demo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}
}
Bây giờ thử nghiệm, Run -> Debug
Và CRASH.
Logcat
08-31 02:58:28.085 20665-20665/com.example.zxing_demo E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.zxing_demo/com.google.zxing.client.android.CaptureActivity}: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1891)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
at android.app.ActivityThread.access$600(ActivityThread.java:127)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4448)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1882)
... 11 more
Tôi có thể thấy trong AndroidManifest.xml trong dòng này
android:name="com.google.zxing.client.android.CaptureActivity"
"CaptureActivity" màu đỏ và lỗi nói: Không thể phân giải biểu tượng 'CaptureActivity'
File -> Project Structure -> Modules -> zxing_demo -> Dependencies -> Add -> Module dependency -> android OK -> Apply và OK
Bây giờ CaptureActivity có vẻ ổn
Gỡ lỗi lần nữa
08-31 03:06:58.513 21740-21740/com.example.zxing_demo E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.zxing_demo/com.google.zxing.client.android.CaptureActivity}: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1891)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
at android.app.ActivityThread.access$600(ActivityThread.java:127)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4448)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1882)
... 11 more
Tôi nghĩ rằng tôi sẽ sử dụng các ứng dụng và ý định, nhưng bây giờ tôi muốn làm công việc này, nếu ai đó bây giờ những gì xảy ra cho tôi biết xin vui lòng.