Zbar融入Android应用 [英] Zbar integration into Android app

查看:152
本文介绍了Zbar融入Android应用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我采用的是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:机器人=htt​​p://schemas.android.com/apk/res/android
包=com.xx.xxx
安卓版code =1
机器人:VERSIONNAME =1.0&GT;

&LT;用途-SDK
    安卓的minSdkVersion =8
    机器人:targetSdkVersion =17/&GT;

&LT;使用-权限的Andr​​oid:名称=android.permission.INTERNET对/&GT;
&LT;使用-权限的Andr​​oid:名称=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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆