1. 程式人生 > >Android 長按識別圖中二維碼 zxing

Android 長按識別圖中二維碼 zxing

#基於 Zxing, 初學Android  程式碼質量不高

//長按,通過zxing讀取圖片,判斷是否有二維碼
bigImage.setOnLongClickListener(new View.OnLongClickListener() {  
     @Override  
     public boolean onLongClick(View viewm) {  
         Bitmap obmp = ((BitmapDrawable) (bigImage).getDrawable()).getBitmap();  
         int width = obmp.getWidth();  
         int
height = obmp.getHeight(); int[] data = new int[width * height]; obmp.getPixels(data, 0, width, 0, 0, width, height); RGBLuminanceSource source = new RGBLuminanceSource(width, height, data); BinaryBitmap bitmap1 = new BinaryBitmap(new HybridBinarizer(source)); QRCodeReader reader = new
QRCodeReader(); Result re = null; try { re = reader.decode(bitmap1); } catch (NotFoundException e) { e.printStackTrace(); } catch (ChecksumException e) { e.printStackTrace(); } catch (FormatException e) { e.printStackTrace(); } if
(re == null) { showAlert(obmp); } else { showSelectAlert(obmp, re.getText()); } return false; } }); private void showAlert(final Bitmap bitmap) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("儲存圖片") .setCancelable(false) .setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterfacem, int i) { saveImageToGallery(bitmap); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterfacem, int i) { } }); builder.show(); } private void showSelectAlert(final Bitmap bitmap, final String url) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("請選擇"); String str[] = {"儲存圖片", "掃二維碼"}; builder.setItems(str, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterfacem, int i) { switch (i) { case 0: { saveImageToGallery(bitmap); } break; case 1: { Intent n = new Intent(EnlargeimagevActivity.this, DetailActivity.class); n.putExtra(DetailActivity.BUNDLE_KEY_DISPLAY_TYPE, DetailActivity.WEBVIEW_DETAIL); n.putExtra(DetailwebFragment.WEB_URL, url); startActivity(n); } break; } } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterfacem, int i) { } }); builder.show(); }