Android Zxing 相册二维码/条码图片识别

Android Zxing相册二维码/条码图片识别

在网上搜了好多例子放到项目中都会有些问题,有的是只能识别二维码图片无法识别条码图片,有的是可以识别条码但是识别率特别低。下面就介绍我整理过后在项目中使用的相册图片二维码条码识别集成步骤。


第一步 添加Zxing依赖

这里只介绍Android Studio中添加依赖的方法。
在app文件夹中build.gradle中的dependencies代码块儿中添加如下配置(ZXing版本根据需要引入):

 compile 'com.google.zxing:core:3.2.0'

第二步 跳转相册

在项目中要跳转相册的点击事件中调用次方法,调用此方法后会跳转系统的相册界面,在系统相册界面选择好图片后会走activity的onActivityResult回调方法,并带回选中的图片的Uri。

     publicvoid goToPhotoAlbum() {
        Intent intent = new Intent(Intent.ACTION_PICK, null);
        intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        activity.startActivityForResult(intent, IntentConstant.REQUEST_PHOTO_ALBUM);
    }

第三步 在Activity的onActivityResult中处理Intent

在相册界面选中图片后会走onActivityResult回调方法。在回调方法中获取到intent中图片的Uri,再通过Uri获取到图片的真实路径,获取到路径后就可以识别图片

   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // RESULT_OK 为Activity类中的常量,值为-1
        if (resultCode == RESULT_OK && requestCode == 11) {
            String photoPath = getRealFilePath(mContext,data.getData());
            if (null == photoPath){
                // 路径为null则获取图片失败
                 Toast.makeText(this, "图片获取失败,请重试", Toast.LENGTH_SHORT).show();
            }else {
                // 解析图片...
                parsePhoto(photoPath);
            }
        }
    }

通过Uri获取图片路径的方法如下(觉得不好用就从别的地方找吧,能实现功能就行):

      @TargetApi(Build.VERSION_CODES.KITKAT)
    public static String getPath(Context context, Uri uri) {
        final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
        if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
            if (isExternalStorageDocument(uri)) {
                final String docId = DocumentsContract.getDocumentId(uri);
                final String[] split = docId.split(":");
                final String 
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android中使用ZXing库生成二维码的步骤如下: 1. 首先,在你的项目的build.gradle文件中添加ZXing库的依赖项。在dependencies部分添加以下代码: ``` implementation 'com.google.zxing:core:3.4.1' implementation 'com.journeyapps:zxing-android-embedded:4.2.0' ``` 2. 创建一个用于生成二维码的方法。可以在Activity或Fragment中创建一个方法,如下所示: ```java import android.graphics.Bitmap; import android.graphics.Color; import android.os.Bundle; import android.widget.ImageView; import androidx.appcompat.app.AppCompatActivity; import com.google.zxing.BarcodeFormat; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import com.journeyapps.barcodescanner.BarcodeEncoder; public class MainActivity extends AppCompatActivity { private ImageView qrCodeImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); qrCodeImageView = findViewById(R.id.qr_code_image_view); String text = "Hello, ZXing!"; // 要生成二维码的内容 try { Bitmap bitmap = generateQRCode(text); qrCodeImageView.setImageBitmap(bitmap); } catch (WriterException e) { e.printStackTrace(); } } private Bitmap generateQRCode(String text) throws WriterException { BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, 500, 500); BarcodeEncoder barcodeEncoder = new BarcodeEncoder(); return barcodeEncoder.createBitmap(bitMatrix); } } ``` 3. 在布局文件中添加一个ImageView来显示生成的二维码。例如,在activity_main.xml中添加以下代码: ```xml <ImageView android:id="@+id/qr_code_image_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:scaleType="centerInside" /> ``` 这样,当你的Activity或Fragment启动时,它将生成一个带有指定内容的二维码,并在ImageView中显示出来。请确保你的设备上已经安装了ZXing扫描器应用程序,以便能够扫描并解码生成的二维码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值