android QRCode

1.加载静态库和初始化 ImageScanner.

static {
		System.loadLibrary("iconv");
	}


// net.sourceforge.zbar.Config
		mImageScanner = new ImageScanner();
		mImageScanner.setConfig(0, Config.X_DENSITY, 3);
		mImageScanner.setConfig(0, Config.Y_DENSITY, 3);

 2.打开Camera设置previewcallback.

   

try {
			mCamera.setPreviewDisplay(mSurfaceHolder);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		mCamera.setPreviewCallback(previewCallback);
		mCamera.startPreview();

 3.定义previewcallback.

  

public Camera.PreviewCallback previewCallback = new Camera.PreviewCallback() {

		@Override
		public void onPreviewFrame(byte[] data, Camera camera) {
			// TODO Auto-generated method stub
			if (!isPass) {
				Camera.Parameters parameters = camera.getParameters();
				Size size = parameters.getPreviewSize();

				Image barcode = new Image(size.width, size.height, "Y800");
				barcode.setData(data);

				int result = mImageScanner.scanImage(barcode);

				if (result != 0) {
					String mDecodeQRCode = "";
					SymbolSet syms = mImageScanner.getResults();
					for (Symbol sym : syms) {
						mDecodeQRCode = sym.getData();
						Log.i("W", "HDMI_Decode--> " + mDecodeQRCode);
						Toast.makeText(MainActivity.this, "QRCode: " + mDecodeQRCode, Toast.LENGTH_SHORT).show();
						if (mDecodeQRCode != null && !isPass) {
							// if (mDecodeQRCode.equals(mCurQR)) {
							resetCamera();
							isPass = true;
							//playSound();
							// }
						}
						break;
					}
				}
			}
		}
	};

   程序需要用到Zbar.jar。

猜你喜欢

转载自bgj.iteye.com/blog/1987609