在没有安装Barcode Scanner应用程序的情况下,嵌入zxing库以提供扫描的首选方法是什么?我希望将它嵌入到android中,而不必提示用户任何额外的安装.(类似于iPhone src的工作方式).
Sea*_*wen 59
通过Intent进行集成真的更容易.更可靠,您可以自动获得更新.虽然我不建议......
完整的源代码可从ZXing项目获得.你想建立core.jar的core/,并把它放在你的Android lib/文件夹包含在您的应用程序的核心解码器.你不想包括javase.您可以查看代码,android/因为它是条形码扫描器的来源,但作为作者,我们建议您不要只复制并粘贴它.
它是Apache许可的,这意味着您可以自由使用它,只要您基本上允许用户访问许可条款.
Pal*_*abu 29
Android QR /条形码/多格式解码器.
我使用ZXing API创建了一个Android应用程序,并且只将解码代码嵌入到我的应用程序中.该解码器的输入是通过Android模拟器的SD卡给出的.
以下是步骤:
首先,我在Eclipse IDE中创建了一个AVD(仿真器)版本4,其中SDcard和Camera功能已打开.
接下来,我在命令提示符中使用以下命令创建了一个SDCard:
c:\>mksdcard 40M mysdcard.iso
Run Code Online (Sandbox Code Playgroud)其中40M是我创建的SD卡的大小.这将保存在C:驱动器中.注意,.iso部分很重要.
接下来,我们必须使用命令提示符中的以下命令将SD卡安装到模拟器中:
c:\>emulator -sdcard "c:\mysdcard.iso" @myavd4
Run Code Online (Sandbox Code Playgroud)这里myavd4是我在步骤1中创建的模拟器/ android虚拟设备的名称.avd名称前面的'@'符号也很重要.
保持模拟器始终运行.如果它关闭,我们必须重做上述3个步骤.
我们可以使用命令提示符中的以下命令将我们拥有的QR码或其他代码图像推送到我们的仿真器上安装的SD卡:
c:\>adb push "c:\myqrcode.png" /sdcard
Run Code Online (Sandbox Code Playgroud)接下来,在Eclipse IDE中,启动一个新的android项目.下面的代码应该粘贴在我们项目的QRDecoder.java文件中.
package com.example.palani;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.ChecksumException;
import com.google.zxing.FormatException;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.NotFoundException;
import com.google.zxing.Reader;
import com.google.zxing.Result;
import com.google.zxing.ResultPoint;
import com.google.zxing.client.androidtest.RGBLuminanceSource;
import com.google.zxing.common.HybridBinarizer;
public class QRDecoder extends Activity implements OnClickListener {
public static class Global
{
public static String text=null;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bitmap bMap = BitmapFactory.decodeFile("/sdcard/myqrcode.png");
TextView textv = (TextView) findViewById(R.id.mytext);
View webbutton=findViewById(R.id.webbutton);
LuminanceSource source = new RGBLuminanceSource(bMap);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
Reader reader = new MultiFormatReader();
try {
Result result = reader.decode(bitmap);
Global.text = result.getText();
byte[] rawBytes = result.getRawBytes();
BarcodeFormat format = result.getBarcodeFormat();
ResultPoint[] points = result.getResultPoints();
textv.setText(Global.text);
webbutton.setOnClickListener(this);
} catch (NotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ChecksumException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onClick(View v) {
Uri uri = Uri.parse(Global.text);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
}
Run Code Online (Sandbox Code Playgroud)接下来,我从下面的链接下载了ZXing源代码(ZXing-1.6.zip).
http://code.google.com/p/zxing/downloads/list
Run Code Online (Sandbox Code Playgroud)然后,解压缩并导航到D:\ zxing-1.6\core\src\com
复制com文件夹并将其粘贴到Eclipse中的包中.
(注意,右键单击我们项目的包并粘贴...如果要求替换现有文件夹,请选择是)
接下来,将以下代码复制并粘贴到res/layout/main.xml文件中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="20dip"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/mbackground1"
android:gravity="center_horizontal"
android:text="@string/decode_label"
android:padding="20dip"
/>
<TextView
android:id="@+id/mytext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:background="@color/mbackground2"
android:textColor="@color/mytextcolor"
android:padding="20dip"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/continue_label"
android:gravity="center_horizontal"
android:textColor="@color/mytextcolor"
android:padding="20dip"
/>
<Button
android:id="@+id/webbutton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/web_button"
android:textColor="@color/mytextcolor"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)接下来,将以下代码复制并粘贴到res/values/strings.xml文件中
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, QRDecoder!</string>
<string name="app_name">QRDecoder</string>
<string name="continue_label">Click below to load the URL!!</string>
<string name="web_button">Load the URL!!</string>
<string name="decode_label">Decoded URL</string>
</resources>
Run Code Online (Sandbox Code Playgroud)接下来,将以下代码复制并粘贴到res/values/color.xml文件中,如果它不存在,则创建一个.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="mbackground1">#7cfc00</color>
<color name="mbackground2">#ffff00</color>
<color name="mytextcolor">#d2691e</color>
</resources>
Run Code Online (Sandbox Code Playgroud)接下来,将以下代码复制并粘贴到开始标记之后的清单文件中
<manifest>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)所以,上面的这些步骤已经完成......我们的应用已准备好 现在,你可以运行应用程序,它将给你我们给出的输入图像的解码结果.
要更改输入,请在命令提示符中使用以下命令将另一个文件推送到SD卡
c:\>adb push "c:\image2.png" /sdcard
Run Code Online (Sandbox Code Playgroud)并更改QRDecoder.java中的输入以反映相同的内容
Bitmap bMap = BitmapFactory.decodeFile("/sdcard/image.png");
Run Code Online (Sandbox Code Playgroud)
输入可以是任何格式,如QRCode,条形码等....图像的类型可以是bmp,jpg或png.
我使用以下网站生成用于测试目的的QR码
谢谢,我想提一下,我只是Android和移动应用程序开发的初学者,对于我可能做过的任何错误感到抱歉...
| 归档时间: |
|
| 查看次数: |
70905 次 |
| 最近记录: |