Zxing與 Zbar生成二維碼最簡單的實現方式
阿新 • • 發佈:2018-12-15
Zxing與 Zbar生成二維碼最簡單的實現方式
匯入依賴
implementation 'cn.bingoogolapple:bga-qrcode-zbar:1.2.1'
或者
implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.2.1'
佈局檔案只有個ImageView
<ImageView android:id="@+id/iv" android:layout_width="200dp" android:layout_height="200dp" android:layout_gravity="center" />
直接在Activity中用QRCodeEncoder物件的方法即可以實現
public class MainActivity extends AppCompatActivity { private ImageView iv; Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); Bitmap bitmap = (Bitmap) msg.obj; iv.setImageBitmap(bitmap); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.iv); //開執行緒 new Thread(new Runnable() { @Override public void run() { Bitmap bitmap = QRCodeEncoder.syncEncodeQRCode("我愛你,我的祖國!", 400); Message message = handler.obtainMessage(); message.obj = bitmap; handler.sendMessage(message); } }).start(); } }
知識點
QRCodeEncoder 建立二維碼圖片。幾個過載方法都是耗時操作,請在子執行緒中呼叫。
/** * 同步建立黑色前景色、白色背景色的二維碼圖片。該方法是耗時操作,請在子執行緒中呼叫。 * * @param content 要生成的二維碼圖片內容 * @param size 圖片寬高,單位為px */ public static Bitmap syncEncodeQRCode(String content, int size) /** * 同步建立指定前景色、白色背景色的二維碼圖片。該方法是耗時操作,請在子執行緒中呼叫。 * * @param content 要生成的二維碼圖片內容 * @param size 圖片寬高,單位為px * @param foregroundColor 二維碼圖片的前景色 */ public static Bitmap syncEncodeQRCode(String content, int size, int foregroundColor) /** * 同步建立指定前景色、白色背景色、帶logo的二維碼圖片。該方法是耗時操作,請在子執行緒中呼叫。 * * @param content 要生成的二維碼圖片內容 * @param size 圖片寬高,單位為px * @param foregroundColor 二維碼圖片的前景色 * @param logo 二維碼圖片的logo */ public static Bitmap syncEncodeQRCode(String content, int size, int foregroundColor, Bitmap logo) /** * 同步建立指定前景色、指定背景色、帶logo的二維碼圖片。該方法是耗時操作,請在子執行緒中呼叫。 * * @param content 要生成的二維碼圖片內容 * @param size 圖片寬高,單位為px * @param foregroundColor 二維碼圖片的前景色 * @param backgroundColor 二維碼圖片的背景色 * @param logo 二維碼圖片的logo */ public static Bitmap syncEncodeQRCode(String content, int size, int foregroundColor, int backgroundColor, Bitmap logo) /** * 同步建立條形碼圖片 * * @param content 要生成條形碼包含的內容 * @param width 條形碼的寬度,單位px * @param height 條形碼的高度,單位px * @param textSize 字型大小,單位px,如果等於0則不在底部繪製文字 */ public static Bitmap syncEncodeBarcode(String content, int width, int height, int textSize)
介面說明
QRCodeView
/**
* ZBarView 設定識別的格式。詳細用法請看 zbardemo 的 TestScanActivity 中的 onClick 方法
*
* @param barcodeType 識別的格式
* @param formatList barcodeType 為 BarcdeType.CUSTOM 時,必須指定該值
*/
public void setType(BarcodeType barcodeType, List<BarcodeFormat> formatList)
/**
* ZXingView 設定識別的格式。詳細用法請看 zxingdemo TestScanActivity 中的 onClick 方法
*
* @param barcodeType 識別的格式
* @param hintMap barcodeType 為 BarcodeType.CUSTOM 時,必須指定該值
*/
public void setType(BarcodeType barcodeType, Map<DecodeHintType, Object> hintMap)
/**
* 設定掃描二維碼的代理
*
* @param delegate 掃描二維碼的代理
*/
public void setDelegate(Delegate delegate)
/**
* 顯示掃描框
*/
public void showScanRect()
/**
* 隱藏掃描框
*/
public void hiddenScanRect()
/**
* 開啟後置攝像頭開始預覽,但是並未開始識別
*/
public void startCamera()
/**
* 開啟指定攝像頭開始預覽,但是並未開始識別
*
* @param cameraFacing Camera.CameraInfo.CAMERA_FACING_BACK or Camera.CameraInfo.CAMERA_FACING_FRONT
*/
public void startCamera(int cameraFacing)
/**
* 關閉攝像頭預覽,並且隱藏掃描框
*/
public void stopCamera()
/**
* 延遲0.1秒後開始識別
*/
public void startSpot()
/**
* 延遲delay毫秒後開始識別
*
* @param delay
*/
public void startSpotDelay(int delay)
/**
* 停止識別
*/
public void stopSpot()
/**
* 停止識別,並且隱藏掃描框
*/
public void stopSpotAndHiddenRect()
/**
* 顯示掃描框,並且延遲0.1秒後開始識別
*/
public void startSpotAndShowRect()
/**
* 開啟閃光燈
*/
public void openFlashlight()
/**
* 關閉散光燈
*/
public void closeFlashlight()
/**
* 解析本地圖片二維碼。返回二維碼圖片裡的內容 或 null
*
* @param picturePath 要解析的二維碼圖片本地路徑
*/
public void decodeQRCode(String picturePath)
/**
* 解析 Bitmap 二維碼。返回二維碼圖片裡的內容 或 null
*
* @param bitmap 要解析的二維碼圖片
*/
public void decodeQRCode(Bitmap bitmap)
QRCodeView.Delegate 掃描二維碼的代理
/**
* 處理掃描結果
*
* @param result 攝像頭掃碼時只要回調了該方法 result 就一定有值,不會為 null。解析本地圖片或 Bitmap 時 result 可能為 null
*/
void onScanQRCodeSuccess(String result)
/**
* 攝像頭環境亮度發生變化
*
* @param isDark 是否變暗
*/
void onCameraAmbientBrightnessChanged(boolean isDark);
/**
* 處理開啟相機出錯
*/
void onScanQRCodeOpenCameraError()
可前往GitHub網站諮詢…