Android 识别图片二维码

zxing依赖:
compile 'cn.yipianfengye.android:zxing-library:2.2'

初始化:

private String SAVE_PIC_PATH = Environment.getExternalStorageState().equalsIgnoreCase(Environment.MEDIA_MOUNTED)
        ? Environment.getExternalStorageDirectory().getAbsolutePath() : "/mnt/sdcard";//

private String SAVE_REAL_PATH = SAVE_PIC_PATH + "/good/savePic";//保存的确
Bitmap bitmap;
private String ends;

实现长按识别图片二维码:

      imageView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                try {
                    Bitmap bmp = captureScreen(MainActivity.this);
                    saveFile(bmp, System.currentTimeMillis() + ".png");
                    try {
                        CodeUtils.analyzeBitmap(ends, new CodeUtils.AnalyzeCallback() {
                            @Override
                            public void onAnalyzeSuccess(Bitmap mBitmap, String result) {
//                            imageView.setImageBitmap(mBitmap);
                                Toast.makeText(MainActivity.this, "解析结果:" + result, Toast.LENGTH_LONG).show();
                            }

                            @Override
                            public void onAnalyzeFailed() {
                                Toast.makeText(MainActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show();
                            }
                        });
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                } catch (IOException e) {
                    e.printStackTrace();
                }
                return false;
            }
        });

工具方法1:

    private void saveFile(Bitmap bm, String fileName) throws IOException {
        String subForder = SAVE_REAL_PATH;
        File foder = new File(subForder);
        if (!foder.exists()) foder.mkdirs();

        File myCaptureFile = new File(subForder, fileName);
        Log.e("lgq", "图片保持。。。。wwww。。。。" + myCaptureFile);
        ends = myCaptureFile.getPath();
        if (!myCaptureFile.exists()) myCaptureFile.createNewFile();
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));
        bm.compress(Bitmap.CompressFormat.JPEG, 100, bos);
        bos.flush();
        bos.close();
//        ToastUtil.showSuccess(getApplicationContext(), "已保存在/good/savePic目录下", Toast.LENGTH_SHORT);
        //发送广播通知系统

    }




工具方法2:

@SuppressLint("NewApi")
private Bitmap captureScreen(Activity context) {
    View cv = context.getWindow().getDecorView();

    cv.setDrawingCacheEnabled(true);
    cv.buildDrawingCache();
    Bitmap bmp = cv.getDrawingCache();
    if (bmp == null) {
        return null;
    }

    bmp.setHasAlpha(false);
    bmp.prepareToDraw();
    return bmp;
}

权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Android6.0以上申请权限:

public final class CheckPermissionUtils {
    private CheckPermissionUtils() {
    }

    //需要申请的权限
    private static String[] permissions = new String[]{
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.CAMERA
    };

    //检测权限
    public static String[] checkPermission(Context context){
        List<String> data = new ArrayList<>();//存储未申请的权限
        for (String permission : permissions) {
            int checkSelfPermission = ContextCompat.checkSelfPermission(context, permission);
            if(checkSelfPermission == PackageManager.PERMISSION_DENIED){//未申请
                data.add(permission);
            }
        }
        return data.toArray(new String[data.size()]);
    }
}
/**
 * 初始化权限事件
 */
private void initPermission() {
    //检查权限
    String[] permissions = CheckPermissionUtils.checkPermission(this);
    if (permissions.length == 0) {
        //权限都申请了
        //是否登录
    } else {
        //申请权限
        ActivityCompat.requestPermissions(this, permissions, 100);
    }
}

猜你喜欢

转载自blog.csdn.net/meixi_android/article/details/82705617