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 thì vấn đề là gì.
- Tải xuống ZXing-2.2 https://code.google.com/p/zxing/downloads/list
- Giải nén 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 Dòng lệnh Windows (Run-> CMD), điều hướng đến thư mục được giải nén
- 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, giống như việc Tích hợp thư viện ZXing trực tiếp vào ứng dụng Android của tôi
Nhưng thật tuyệt vời, "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 mình.
- Mở Android Studio, Tệp -> Nhập Dự án -> 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ả được chọn Tiếp theo -> Thư viện (không thể không làm gì cả) Tiếp theo -> Mô-đun (đã kiểm tra android) Tiếp theo -> SDK 1.7 Tiếp theo -> Kết thúc
Với Mở dự án -> Xây dựng -> Xây dựng lại dự án
100 lỗi 19 cảnh báo
Tệp -> Cấu trúc dự án -> Thư viện -> Thêm -> Java -> Chọn core.jar mà tôi đã tạo trước đó và OK -> Thư viện 'lõi' sẽ được thêm vào các mô-đun đã 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 đều là lỗi: bắt buộc phải có biểu thức hằng và tôi thấy Lỗi trong các trường hợp Chuyển đổi của dự án ZXing trong Android Tôi thay đổi tất cả các công tắc cho if 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 -> Kết thúc
Trong dự án mới -> Tệp -> Nhập mô-đun -> Tìm kiếm và chọn / android / OK -> Tạo mô-đun từ các nguồn hiện có Tiếp theo -> Tiếp theo -> Tiếp theo -> Tiếp theo -> Kết thúc
Bây giờ tôi có thể thấy trong explorer / android / / zging_demoProject / và Thư viện bên ngoài
Bây giờ tôi thay đổi mã của mình bằng cách 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ờ hãy kiểm tra, Chạy -> Gỡ lỗi
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 cho biết: Không thể giải quyết biểu tượng 'CaptureActivity'
Tệp -> Cấu trúc dự án -> Mô-đun -> zxing_demo -> Phụ thuộc -> Thêm -> Phụ thuộc mô-đun -> android OK -> Áp dụng và OK
Bây giờ CaptureActivity có vẻ tốt
Gỡ lỗi lại
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 ứ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ờ có chuyện gì xảy ra hãy cho tôi biết.