1.导入core-3.1.0.jar包
2.将zxing包直接导入项目中
3.导入raw下的baidu_beep.ogg
4.导入values下的资源
5.添加相关权限
6.生成二维码
<!--二维码扫码-->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" /><uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.change_network_state" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
/**
* 根据内容生成二维码bitmap
*
* @param content
* @return
*/
public static Bitmap generateQRCode(String content,Context context) {
if (TextUtils.isEmpty(content)) {
return null;
}
try {
QRCodeWriter writer = new QRCodeWriter();
// MultiFormatWriter writer = new MultiFormatWriter();
BitMatrix matrix = writer.encode(content, BarcodeFormat.QR_CODE, UtilMethod.dip2px(context, 400), UtilMethod.dip2px(context, 400));
return bitMatrix2Bitmap(matrix);
} catch (WriterException e) {
e.printStackTrace();
}
return null;
}
/**
* 生成bitmap
*
* @param matrix
* @return
*/
public static Bitmap bitMatrix2Bitmap(BitMatrix matrix) {
int w = matrix.getWidth();
int h = matrix.getHeight();
int[] rawData = new int[w * h];
for (int i = 0; i < w; i++) {
for (int j = 0; j < h; j++) {
int color = Color.WHITE;
if (matrix.get(i, j)) {
color = Color.BLACK;
}
rawData[i + (j * w)] = color;
}
}
Bitmap bitmap = Bitmap.createBitmap(w, h, Config.RGB_565);
bitmap.setPixels(rawData, 0, w, 0, 0, w, h);
return bitmap;
}
7.开启扫描
首先要在xml中配置
// 打开扫描界面扫描条形码或二维码
Intent openCameraIntent = new Intent(getmActivity(),
CaptureActivity.class);
startActivityForResult(openCameraIntent, 0);
在CaptureActivity类中的
/**
* 解析结果处理
*/
public void handleDecode(Result rawResult, Bitmap barcode, float scaleFactor) {
inactivityTimer.onActivity();
beepManager.playBeepSoundAndVibrate();
String msg = rawResult.getText();
System.out.println("--------------Result:" + msg);
if (msg == null || "".equals(msg)) {
msg = "";
}
if (msg.equals("")) {//无法识别
Toast.makeText(CaptureActivity.this, R.string.not_scan,
Toast.LENGTH_SHORT).show();
} else {
//识别成功
Intent resultIntent = new Intent();
resultIntent.putExtra("result", msg);
this.setResult(RESULT_OK, resultIntent);
}
finish();
}