Android利用ZXing掃描二維碼的實(shí)例代碼解析
相關(guān)閱讀:
Android開發(fā)框架之自定義ZXing二維碼掃描界面并解決取景框拉伸問題
此項(xiàng)目源碼地址:請(qǐng)點(diǎn)擊這里
看一下zxing的項(xiàng)目結(jié)構(gòu),我這里直接拿過來用的
看一下掃碼的activity:
package com.fanyafeng.barcode.activity; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.TextView; import android.widget.Toast; import com.fanyafeng.barcode.R; import com.fanyafeng.barcode.BaseActivity; import com.fanyafeng.barcode.util.ImageUtil; import com.fanyafeng.barcode.zxing.activity.CaptureActivity; import com.fanyafeng.barcode.zxing.activity.CodeUtils; //需要搭配baseactivity,這里默認(rèn)為baseactivity,并且默認(rèn)Baseactivity為包名的根目錄 public class ScanCodeActivity extends BaseActivity { /** * 掃描跳轉(zhuǎn)Activity RequestCode */ public static final int REQUEST_CODE = 111; /** * 選擇系統(tǒng)圖片Request Code */ public static final int REQUEST_IMAGE = 112; /** * 請(qǐng)求CAMERA權(quán)限碼 */ public static final int REQUEST_CAMERA_PERM = 101; private TextView tvResult; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_scan_code); //這里默認(rèn)使用的是toolbar的左上角標(biāo)題,如果需要使用的標(biāo)題為中心的采用下方注釋的代碼,將此注釋掉即可 title = getString(R.string.title_activity_scan_code); initView(); initData(); } //初始化UI空間 private void initView() { tvResult = (TextView) findViewById(R.id.tvResult); } //初始化數(shù)據(jù) private void initData() { } @Override public void onClick(View v) { super.onClick(v); switch (v.getId()) { case R.id.btnScan: Intent intent = new Intent(getApplication(), CaptureActivity.class); startActivityForResult(intent, REQUEST_CODE); // 本地掃描,識(shí)別相冊(cè)中的二維碼 // Intent intent = new Intent(Intent.ACTION_GET_CONTENT); // intent.addCategory(Intent.CATEGORY_OPENABLE); // intent.setType("image/*"); // startActivityForResult(intent, REQUEST_IMAGE); break; } } @Override protected void onActivityResult(final int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); /** * 處理二維碼掃描結(jié)果 */ if (requestCode == REQUEST_CODE) { //處理掃描結(jié)果(在界面上顯示) if (null != data) { Bundle bundle = data.getExtras(); if (bundle == null) { return; } if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) { String result = bundle.getString(CodeUtils.RESULT_STRING); Toast.makeText(this, "解析結(jié)果:" + result, Toast.LENGTH_LONG).show(); tvResult.setText(result); } else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) { Toast.makeText(ScanCodeActivity.this, "解析二維碼失敗", Toast.LENGTH_LONG).show(); } } } /** * 選擇系統(tǒng)圖片并解析 */ else if (requestCode == REQUEST_IMAGE) { if (data != null) { Uri uri = data.getData(); try { CodeUtils.analyzeBitmap(ImageUtil.getImageAbsolutePath(this, uri), new CodeUtils.AnalyzeCallback() { @Override public void onAnalyzeSuccess(Bitmap mBitmap, String result) { Toast.makeText(ScanCodeActivity.this, "解析結(jié)果:" + result, Toast.LENGTH_LONG).show(); tvResult.setText(result); } @Override public void onAnalyzeFailed() { Toast.makeText(ScanCodeActivity.this, "解析二維碼失敗", Toast.LENGTH_LONG).show(); } }); } catch (Exception e) { e.printStackTrace(); } } } else if (requestCode == REQUEST_CAMERA_PERM) { Toast.makeText(this, "從設(shè)置頁面返回...", Toast.LENGTH_SHORT).show(); } } }
注釋中有本地二維碼的識(shí)別
以上所述是小編給大家介紹的Android利用ZXing掃描二維碼的實(shí)例代碼解析,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Android上使用ZXing識(shí)別條形碼與二維碼的方法
- Android中使用ZXing生成二維碼(支持添加Logo圖案)
- Android基于zxing的二維碼(網(wǎng)格)掃描 仿支付寶網(wǎng)格掃描
- Android基于google Zxing實(shí)現(xiàn)二維碼的生成
- Android實(shí)現(xiàn)基于ZXing快速集成二維碼掃描功能
- Android 超簡(jiǎn)易Zxing框架 生成二維碼+掃碼功能
- Android Zxing二維碼掃描圖片拉伸問題的解決方法
- Android中利用zxing實(shí)現(xiàn)自己的二維碼掃描識(shí)別詳解
- Android Zxing二維碼掃描圖片拉伸的解決方法
- Android利用zxing生成二維碼的過程記錄
相關(guān)文章
Android List刪除重復(fù)數(shù)據(jù)
這篇文章主要介紹了Android List刪除重復(fù)數(shù)據(jù)的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-06-06Android NDK開發(fā)(C語言--動(dòng)態(tài)內(nèi)存分配)
這篇文章主要介紹了Android NDK開發(fā) C語言--動(dòng)態(tài)內(nèi)存分配2021-12-12Android開發(fā)設(shè)置RadioButton點(diǎn)擊效果的方法
這篇文章主要介紹了Android開發(fā)設(shè)置RadioButton點(diǎn)擊效果的方法,詳細(xì)分析了Android開發(fā)中RadioButton屬性功能及相關(guān)設(shè)置技巧,需要的朋友可以參考下2017-06-06android計(jì)算器實(shí)現(xiàn)兩位數(shù)的加減乘除
這篇文章主要為大家詳細(xì)介紹了android計(jì)算器實(shí)現(xiàn)兩位數(shù)的加減乘除,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03Android實(shí)現(xiàn)多段顏色進(jìn)度條效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)多段顏色進(jìn)度條效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01淺談Android硬件加速原理與實(shí)現(xiàn)簡(jiǎn)介
這篇文章主要介紹了淺談Android硬件加速原理與實(shí)現(xiàn)簡(jiǎn)介,本文嘗試從底層硬件原理,一直到上層代碼實(shí)現(xiàn),對(duì)硬件加速技術(shù)進(jìn)行簡(jiǎn)單介紹,感興趣的小伙伴們可以參考一下2018-07-07Android 在程序運(yùn)行時(shí)申請(qǐng)權(quán)限的實(shí)例講解
下面小編就為大家分享一篇Android 在程序運(yùn)行時(shí)申請(qǐng)權(quán)限的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01Android圖片選擇器ImageEditContainer
這篇文章主要為大家詳細(xì)介紹了Android圖片選擇器ImageEditContainer的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07DataBinding onClick的七種點(diǎn)擊方式
這篇文章主要給大家介紹了關(guān)于DataBinding onClick的七種點(diǎn)擊方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07