開発作業にAndroid ADTバンドルを使用しています。オンラインで複数のガイドを読んだ後、プロジェクトにcom.dm.zbar.Android.scannerパッケージを追加しました。CameraPreviewファイルを含めました。パッケージ内のJava、ZBarConstants.Java、およびZBarScannerActivity.Java。これにもかかわらず、ScanActivity.JavaクラスのZBAR_SCANNER_REQUEST変数(私が作成しましたが、zbarメソッドを使用)は変数に解決できません。この変数以外はすべて受け入れられます。なぜこれが起こっているのか分かりますか?注:私のlibsフォルダーにはここにすべてが含まれています:
https://github.com/DushyanthMaguluru/ZBarScanner/tree/master/ZBarScannerLibrary/libs
zbar.jarはビルドパスに含まれています。
ScanActivity:
package com.xx.xxx;
import Android.os.Bundle;
import Android.app.Activity;
import Android.content.Intent;
import Android.content.pm.PackageManager;
import Android.view.Menu;
import Android.view.View;
import Android.widget.Toast;
import com.dm.zbar.Android.scanner.ZBarConstants;
import com.dm.zbar.Android.scanner.ZBarScannerActivity;
import net.sourceforge.zbar.Symbol;
public class ScanActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scan);
}
public void launchScanner(View v) {
if (isCameraAvailable()) {
Intent intent = new Intent(this, ZBarScannerActivity.class);
startActivityForResult(intent, ZBAR_SCANNER_REQUEST);
} else {
Toast.makeText(this, "Rear Facing Camera Unavailable", Toast.LENGTH_SHORT).show();
}
}
public void launchQRScanner(View v) {
if (isCameraAvailable()) {
Intent intent = new Intent(this, ZBarScannerActivity.class);
intent.putExtra(ZBarConstants.SCAN_MODES, new int[]{Symbol.QRCODE});
startActivityForResult(intent, ZBAR_SCANNER_REQUEST);
} else {
Toast.makeText(this, "Rear Facing Camera Unavailable", Toast.LENGTH_SHORT).show();
}
}
public boolean isCameraAvailable() {
PackageManager pm = getPackageManager();
return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case ZBAR_SCANNER_REQUEST:
case ZBAR_QR_SCANNER_REQUEST:
if (resultCode == RESULT_OK) {
Toast.makeText(this, "Scan Result = " + data.getStringExtra(ZBarConstants.SCAN_RESULT), Toast.LENGTH_SHORT).show();
}
break;
}
}
}
関連する場合に備えて:AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.xx.xxx"
Android:versionCode="1"
Android:versionName="1.0" >
<uses-sdk
Android:minSdkVersion="8"
Android:targetSdkVersion="17" />
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.CAMERA" />
<uses-feature
Android:name="Android.hardware.camera"
Android:required="false" />
<application
Android:icon="@drawable/ic_launcher"
Android:label="xx"
Android:theme="@style/AppTheme" >
<activity Android:name="com.xx.xxx.MainActivity" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity Android:name="com.xx.xxx.WvActivity" />
<activity Android:name="com.xx.xxx.ScanActivity" />
<activity
Android:name="com.dm.zbar.Android.scanner.ZBarScannerActivity"
Android:screenOrientation="landscape" />
</application>
ZBarライブラリの例を確認しました。あなたはミスを犯しました。
このエラーは、アクティビティでこれら2つの変数を宣言しなかったために発生しました
private static final int ZBAR_SCANNER_REQUEST = 0;
private static final int ZBAR_QR_SCANNER_REQUEST = 1;
これらの変数は、onCreate(..)メソッドの上で宣言する必要があります。
ZBar 例 を参照してください。