Zbar融入Android应用 [英] Zbar integration into Android app
问题描述
我采用的是Android ADT套件,开发工作。在线阅读多导后,我已经加入了包com.dm.zbar.android.scanner到我的项目。我已经包括了文件摄像机preview.java,ZBarConstants.java和ZBarScannerActivity.java在包中。尽管这一切的ZBAR_SCANNER_REQUEST VAR在类ScanActivity.java(由我创造的,而是用zbar方法)不能被解析为一个变量。除了这个变量的一切被接受。任何想法,这是为什么发生?注:我的库文件夹包含一切都在这里:
<一个href="https://github.com/DushyanthMaguluru/ZBarScanner/tree/master/ZBarScannerLibrary/libs">https://github.com/DushyanthMaguluru/ZBarScanner/tree/master/ZBarScannerLibrary/libs
和zbar.jar包含在构建路径中。
ScanActivity:
包com.xx.xxx;
进口android.os.Bundle;
进口android.app.Activity;
进口android.content.Intent;
进口android.content.pm.PackageManager;
进口android.view.Menu;
进口android.view.View;
进口android.widget.Toast;
进口com.dm.zbar.android.scanner.ZBarConstants;
进口com.dm.zbar.android.scanner.ZBarScannerActivity;
进口net.sourceforge.zbar.Symbol;
公共类ScanActivity延伸活动{
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_scan);
}
公共无效launchScanner(视图v){
如果(isCameraAvailable()){
意向意图=新的意图(这一点,ZBarScannerActivity.class);
startActivityForResult(意向,ZBAR_SCANNER_REQUEST);
} 其他 {
Toast.makeText(这一点,后置摄像头不可用,Toast.LENGTH_SHORT).show();
}
}
公共无效launchQRScanner(视图v){
如果(isCameraAvailable()){
意向意图=新的意图(这一点,ZBarScannerActivity.class);
intent.putExtra(ZBarConstants.SCAN_MODES,新INT [] {Symbol.QR code});
startActivityForResult(意向,ZBAR_SCANNER_REQUEST);
} 其他 {
Toast.makeText(这一点,后置摄像头不可用,Toast.LENGTH_SHORT).show();
}
}
公共布尔isCameraAvailable(){
PackageManager下午= getPackageManager();
返回pm.hasSystemFeature(PackageManager.FEATURE_CAMERA);
}
@覆盖
保护无效onActivityResult(INT申请code,INT结果code,意图数据){
开关(要求code){
案例ZBAR_SCANNER_REQUEST:
案例ZBAR_QR_SCANNER_REQUEST:
如果(结果code == RESULT_OK){
Toast.makeText(这一点,扫描结果=+ data.getStringExtra(ZBarConstants.SCAN_RESULT),Toast.LENGTH_SHORT).show();
}
打破;
}
}
}
以防万一它是相关的: AndroidManifest.xml中
&LT; XML版本=1.0编码=UTF-8&GT?;
&LT;舱单的xmlns:机器人=http://schemas.android.com/apk/res/android
包=com.xx.xxx
安卓版code =1
机器人:VERSIONNAME =1.0&GT;
&LT;用途-SDK
安卓的minSdkVersion =8
机器人:targetSdkVersion =17/&GT;
&LT;使用-权限的Android:名称=android.permission.INTERNET对/&GT;
&LT;使用-权限的Android:名称=android.permission.CAMERA/&GT;
&LT;用途特征
机器人:名称=android.hardware.camera
机器人:要求=FALSE/&GT;
&lt;应用
机器人:图标=@可绘制/ ic_launcher
机器人:标签=XX
机器人:主题=@风格/ AppTheme&GT;
&LT;活动机器人:名称=com.xx.xxx.MainActivity&GT;
&LT;意向滤光器&gt;
&lt;作用机器人:名称=android.intent.action.MAIN/&GT;
&LT;类机器人:名称=android.intent.category.LAUNCHER/&GT;
&所述; /意图滤光器&gt;
&LT; /活性GT;
&LT;活动机器人:名称=com.xx.xxx.WvActivity/&GT;
&LT;活动机器人:名称=com.xx.xxx.ScanActivity/&GT;
&LT;活动
机器人:名称=com.dm.zbar.android.scanner.ZBarScannerActivity
机器人:screenOrientation =景观/&GT;
&LT; /用途&gt;
解决方案
我查了 ZBar 库示例
此错误是因为您没有在您的活动声明这两个变量
私有静态最终诠释ZBAR_SCANNER_REQUEST = 0;
私有静态最终诠释ZBAR_QR_SCANNER_REQUEST = 1;
您需要声明上面你的onCreate(..)方法这些变量。
见ZBar <一href="https://github.com/DushyanthMaguluru/ZBarScanner/blob/master/examples/ZBarScannerDemo/src/com/dm/zbar/android/examples/MainActivity.java"相对=nofollow>为例。
I am using the Android ADT Bundle for dev work. After reading multiple guides online I have added the package com.dm.zbar.android.scanner to my project. I have included the files CameraPreview.java, ZBarConstants.java, and ZBarScannerActivity.java in the package. Despite all this the ZBAR_SCANNER_REQUEST var in the class ScanActivity.java (created by me, but using zbar methods) cannot be resolved to a variable. Everything except this variable is accepted. Any idea why this is occurring? Note: My libs folder contains everything in here:
https://github.com/DushyanthMaguluru/ZBarScanner/tree/master/ZBarScannerLibrary/libs
and zbar.jar is included on the build path.
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;
}
}
}
Just in case it is relevant: 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>
I checked the ZBar Library Example. You made a mistake.
This error occurred because you did not declare these two variables in your activity
private static final int ZBAR_SCANNER_REQUEST = 0;
private static final int ZBAR_QR_SCANNER_REQUEST = 1;
you need to declare these variables above your onCreate(..) Method.
See the ZBar Example.
这篇关于Zbar融入Android应用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!