QR Code 二維碼的生成與掃描
前言
現在大街小巷、各大網站都有二維碼的蹤跡,不管是IOS、Android、WP都有相關支援的軟體。
最近因為工作需要使用相關技術,所以做了初步瞭解。今天主要是講述如何使用ZXing庫,在專案中要使用到二維碼的相關內容,百度(原諒我還在用)之後得知一半都是使用Google的開源庫 Zxing,但是網上多半的使用教程都是比較早的,這裡給出我總結的一些基礎程式碼和使用規則:
ZXing庫
1、ZXing庫介紹
這裡簡單介紹一下ZXing庫。ZXing是一個開放原始碼的,用Java實現的多種格式的1D/2D條碼影象處理庫,它包含了聯絡到其他語言的埠。Zxing可以實現使用手機的內建的攝像頭完成條形碼的掃描及解碼。該專案可實現的條形碼編碼和解碼。目前支援以下格式:UPC-A,UPC-E、EAN-8,EAN-13、39碼、93碼。ZXing是個很經典的條碼/二維碼識別的開源類庫,以前在功能機上,就有開發者使用J2ME運用ZXing了,不過要支援JSR-234規範(自動對焦)的手機才能發揮其威力。
2、ZXing庫主要類
下面給大家介紹一下,ZXing庫裡面主要的類以及這些類的作用:
- CaptureActivity。這個是啟動Activity 也就是掃描器。
- CaptureActivityHandler 解碼處理類,負責呼叫另外的執行緒進行解碼。
- DecodeThread 解碼的執行緒。
- com.google.zxing.client.android.camera 包,攝像頭控制包。
- ViewfinderView 自定義的View,就是我們看見的拍攝時中間的框框了。
這裡附上ZXing庫的官網下載地址:
ZXing官網下載地址
下載之後記得匯入自己需要的module中並新增到gradle檔案中!
那麼,問題是:
如何生成一個二維碼?
還是先把下載好的zxing庫匯入
//還是來個頁面吧!!
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.qrcodescan.MainActivity">
<Button
android:id="@+id/scan_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="掃描二維碼"
android:textSize="30sp" />
<TextView
android:textSize="40sp"
android:id="@+id/scan_result"
android:layout_width="match_parent"
android:layout_height="150sp" />
<EditText
android:id="@+id/code_messsage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="請填寫二維碼資訊" />
<Button
android:id="@+id/make_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="生成二維碼"
android:textSize="30sp" />
<ImageView
android:id="@+id/codeimage"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
效果圖
邏輯實現
//有了佈局,記得要把下載好的ZXing庫導進module中才能使用
//下面的都是精髓了<只能實現生成和掃描哦,因為我還沒有太大的使用需求!>
public class MainActivity extends AppCompatActivity {
private Button codeScan;
private TextView resultScan;
private EditText codemesssage;
private Button codeMake;
private ImageView codeimage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();//獲取控制元件
//生成二維碼
codeMake.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//獲取輸入框輸入的資訊
String message = codemesssage.getText().toString();
//使用bitmap產生一個logo,當然,也可以不帶logo
Bitmap logoBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
//param1 二維碼資訊 param2 寬 param3 高 param4 logo
Bitmap qrCode = EncodingUtils.createQRCode(message, 600, 600, logoBitmap);
//將生成的二維碼賦值給bitmap
codeimage.setImageBitmap(qrCode);
}
});
//掃描二維碼
codeScan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//呼叫系統相機,掃描資訊
startActivityForResult(new Intent(MainActivity.this, CaptureActivity.class), 0);
}
});
}
//獲取返回資訊
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {//獲取到正確資訊
Bundle bundle = data.getExtras();
String result = bundle.getString("result");
resultScan.setText(result);//給TextView賦值掃描到的資訊
} else if (resultCode == RESULT_CANCELED) {//掃描失敗,提示
Toast.makeText(MainActivity.this, "未掃描到資訊", Toast.LENGTH_SHORT).show();
}
}
//獲取所有的控制元件
private void initView() {
codeScan = (Button) findViewById(R.id.scan_code);
resultScan = (TextView) findViewById(R.id.scan_result);
codemesssage = (EditText) findViewById(R.id.code_messsage);
codeMake = (Button) findViewById(R.id.make_code);
codeimage = (ImageView) findViewById(R.id.codeimage);
}
}
這就完成了最基本的二維碼的操作!
感謝ZXing,讓我們不再勞累.
相關推薦
Android開發——Android中的二維碼生成與掃描
0. 前言今天這篇文章主要描述二維碼的生成與掃描,使用目前流行的Zxing,為什麼要講二維碼,因為二維碼太普遍了,隨便一個Android APP都會有二維碼掃描。本篇旨在幫助有需求的同學快速完成二維碼生成和掃描的功能。本篇轉載自:http://blog.csdn.net/ha
iOS第三方二維碼生成與掃描
匯入第三方框架libqrencode(生成二維碼)和ZBarSDK(二維碼掃描) 匯入標頭檔案 #import "QRCodeGenerator.h" #import "ZBarSDK.h" 建立兩個按鈕點選事件 點選按鈕一實現生成二維碼 - (I
QR Code 二維碼的生成與掃描
前言 現在大街小巷、各大網站都有二維碼的蹤跡,不管是IOS、Android、WP都有相關支援的軟體。 最近因為工作需要使用相關技術,所以做了初步瞭解。今天主要是講述如何使用ZXing庫,在專案中要使用到二維碼的相關內容,百度(原諒我還在用)之
QR code二維碼簡介及Qrencode庫的移植與使用
現在生活中,二維碼可以說是無處不在,微信掃碼支付,支付寶掃碼支付,就連貼小廣告的都帶上了二維碼了。之前一直想去了解一下,還是太懶了,就沒去,現在專案中需要用到這東西,正好藉此機會瞭解一下。 上網一查,原來二維碼的還有很多種。下表是一個簡單的介紹: 二維碼的優點突出,
Java二維碼生成與解碼工具Zxing使用
trace character sta 解碼 iter() font 生成 char type 1 package com.csii.zxing.test; 2 3 import java.awt.image.BufferedImage; 4 import j
Java二維碼生成與解碼
添加 1.3 pin part 字符集 bit reader -- inpu 基於google zxing 的Java二維碼生成與解碼 一、添加Maven依賴(解碼時需要上傳二維碼圖片,所以需要依賴文件上傳包) <!-- google二維碼工具 --&g
微信帶場景引數的二維碼生成與使用
應用場景:公眾號推廣時,使用者通過掃碼關注公眾號,需要統計使用者是通過誰的二維碼進行關注。 思路:在使用者掃碼關注公眾號時,二維碼帶上推廣者的id,在關注公眾號後,獲取到該推廣者的id。 目前有2種類型的二維碼: 1、臨時二維碼,是有過期時間的,最長可以設
Android 二維碼生成,掃描,近距離識別優化,從相簿選擇二維碼識別
做了一個二維碼掃描圖片,主要是掃描不出來,看到一篇部落格,其中的第二種方法可以掃描到,在此做筆記,以備後用,前面的進入相簿,返回,到獲取圖片路徑方法都一樣; (1):二維碼生成的方法順便貼上: private Bitmap createQRImage(String url, final
玩轉Android之二維碼生成與識別
二維碼,我們也稱作QRCode,QR表示quick response即快速響應,在很多App中我們都能見到二維碼的身影,最常見的莫過於微信了。那麼今天我們就來看看怎麼樣在我們自己的App中整合二維碼的掃描與生成功能。OK,廢話不多說,我們就開始做吧。二維碼的使用我主要想分為兩
二維碼生成與讀取
一、通過Zxing生成與讀取: 生成二維碼: int width=300; int height=300; String format="png"; String conte
在android上實現二維碼生成和掃描
先在androidstudio上匯入libzing的Module,然後再app上把那個libzing新增上去,這樣我們的app就關聯了那個libzing庫了 然後我們就只在app這個工程下寫程式碼就行了。activity_main.xml佈局如下
Android使用zxing-android-embedded(由zxing開發)實現二維碼生成和掃描
前言: 目前二維碼(條形碼)的使用非常廣泛,所以啊,就想去實現以下嘛,最簡單的方法就是選擇開源庫了。 在網上一查開源庫還是很多的,介紹使用最多的就是zxing,所以這裡也就是用zxing了。但是由於zxing開源庫太大了,有很多不是Android要用的,所以
你不可錯過的二維碼生成與解析-java後臺與前端js都有
1.二維碼分類 二維條碼也有許多不同的碼制,就碼制的編碼原理而言,通常分為三種類型。 線性堆疊式二維碼 編碼原理: 建立在一維條碼基礎之上,按需要堆積成兩行或多行。 圖示: 矩陣式二維碼 最常用編碼,原理: 在一個矩形空間通過黑白畫素在矩陣中的不同分佈進行編碼。在
二維碼生成、掃描、圖片識別(Zxing)
這樣的例子雖然已經很多了,不過我在網上瀏覽了一圈,也沒找到幾個相簿二維碼圖片識別例子,好的演算法識別率才高。這裡有一個好點的演算法,演算法不是我寫的,只是作為整理記錄,給眾多安卓開發者一個方便。demo的UI有點low,不過功能卻是實實在在,有需要的朋友可以自定義一些UI介
微信帶場景參數的二維碼生成與使用功能實現?
mar 進入 分享 mage term 永久 擔心 type color 參數二維碼原理介紹:公眾號目前有2種類型的二維碼1、臨時二維碼,30天有效期2、永久二維碼,沒有失效時間 渠道二維碼生成(參數二維碼生成) 1、登錄微號幫 2、登錄後進入管理中心首頁選擇->功能
Qt:二維碼的解析/掃描(Zxing)與生成(qrencode)
對Zxing和qrencode的封裝 解析/掃描部分底層為Zxing 生成部分底層為qrencode 注:我的開發環境是Qt5.5.0 效果圖: 掃描到以後: 程式碼這樣使用: Jas
掃描二維碼 生成二維碼
mainactivity.xml佈局 <?xml version="1.0" encoding="utf-8"?> <Button android:id="@+id/btnSan" android:layout_width="
掃描二維碼 生成二維碼
mainactivity.xml佈局 <?xml version="1.0" encoding="utf-8"?> <Button android:id="@+id/btnSan" android:layout_width="match_paren
andorid 二維碼zxing的整合和掃描以及二維碼生成
二維碼掃描的功能,相信大家以及很熟悉了,但是如何整合呢?網上一搜,於是我們找的了這個開源庫:https://github.com/zxing/zxing 比較權威的一個開源庫,相信很多二維碼掃描核心程式
如何生成二維碼並統計掃描次數,展示二維碼頁面
引入了 phpqrcode 外掛來生成自定義二維碼 //建立空二維碼 唯一標識code public function mkCode() { // 引入外掛 include '/static/phpqrcode/phpqrcode.php'