protected PreviewCallback previewCb = new PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {
try {
Camera.Parameters parameters = camera.getParameters();
Size size = parameters.getPreviewSize();
Image barcode = new Image(size.width, size.height, "Y800");
barcode.setData(data);
int result = scanner.scanImage(barcode);
if (result != 0) {
previewing = false;
mCamera.setPreviewCallback(null);
mCamera.stopPreview();
SymbolSet symbolSet = scanner.getResults();
for (Symbol sym : symbolSet) {
try {
// mediaPlayer.start();
} catch (Exception ex) {
ex.printStackTrace();
}
if (scanType == LIGHT_BAR_CODE && sym.getType() == Symbol.QRCODE) {
SuperToastUtil.showToast(QrcodeCameraActivity.this, "只允许扫描条形码", Toast.LENGTH_LONG);
finish();
return;
} else if (scanType == LIGHT_QR_CODE && sym.getType() != Symbol.QRCODE) {
SuperToastUtil.showToast(QrcodeCameraActivity.this, "只允许扫描二维码", Toast.LENGTH_LONG);
finish();
return;
}
if (sym.getType() == Symbol.QRCODE) {
codeType = LIGHT_QR_CODE;
} else {
codeType = LIGHT_BAR_CODE;
}
String code = sym.getData();
try {
Size previewSize = camera.getParameters().getPreviewSize();
YuvImage yuvimage=new YuvImage(data, ImageFormat.NV21, previewSize.width, previewSize.height, null);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
yuvimage.compressToJpeg(new Rect(0, 0, previewSize.width, previewSize.height), 80, baos);
byte[] jdata = baos.toByteArray();
Bitmap bmp = BitmapFactory.decodeByteArray(jdata, 0, jdata.length);
BitmapUtil.saveFile(QrcodeCameraActivity.this,bmp, getLogFileNameDateFormat() + ".jpg");
} catch (Exception e) {
e.printStackTrace();
}
handleDecodeInternally(code);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
try {
Size previewSize = camera.getParameters().getPreviewSize();
YuvImage yuvimage=new YuvImage(data, ImageFormat.NV21, previewSize.width, previewSize.height, null);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
yuvimage.compressToJpeg(new Rect(0, 0, previewSize.width, previewSize.height), 80, baos);
byte[] jdata = baos.toByteArray();
Bitmap bmp = BitmapFactory.decodeByteArray(jdata, 0, jdata.length);
BitmapUtil.saveFile(QrcodeCameraActivity.this,bmp, getLogFileNameDateFormat() + ".jpg");
} catch (Exception e) {
e.printStackTrace();
}
原文:http://www.cnblogs.com/lixiaodaoaaa/p/4875027.html