android zxing使用笔记

增加二维码扫描

1、资料参考http://blog.csdn.net/xiaanming/article/details/10163203

代码例程http://download.csdn.net/detail/xiaanming/5990219

2、步骤

a、将com.mining.app.zxing.camera,com.mining.app.zxing.decoding,com.mining.app.zxing.view这三个包拷贝到项目中

b、com.example.qr_codescan包里面有一个MipcaActivityCapture,直接引入项目

主要关注里面的handleDecode(Result result, Bitmap barcode)方法,扫描完成之后将扫描到的结果和二维码的bitmap当初参数传递到handleDecode(Result result, Bitmap barcode)里面

c、按钮添加Intent intent = new Intent();
intent.setClass(MainActivity.this, MipcaActivityCapture.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivityForResult(intent, SCANNIN_GREQUEST_CODE);

 

返回结果添加

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case SCANNIN_GREQUEST_CODE:
            if(resultCode == RESULT_OK){
                Bundle bundle = data.getExtras();
                Toast.makeText(getApplicationContext(), bundle.getString("result"),
                        Toast.LENGTH_SHORT).show();
                //��ʾɨ������
                //mTextView.setText(bundle.getString("result"));
                //��ʾ
               // mImageView.setImageBitmap((Bitmap) data.getParcelableExtra("bitmap"));
            }
            break;
    }

 

3、关于摄像头预览拉伸问题

在CameraConfigurationmanager.java下找到initFromCameraParameters,在Log.d(TAG, "Screen resolution: " + screenResolution);
后面加入
Point screenResolutionForCamera = new Point();
screenResolutionForCamera.x = screenResolution.x;
screenResolutionForCamera.y = screenResolution.y;
// preview size is always something like 480*320, other 320*480
if (screenResolution.x < screenResolution.y) {
  screenResolutionForCamera.x = screenResolution.y;
  screenResolutionForCamera.y = screenResolution.x;
}
修改
cameraResolution = getCameraResolution(parameters, screenResolutionForCamera);
即可解决
 
4关于扫描框大小问题
找到Cameramanager.java下的
private static  final int MIN_FRAME_WIDTH = 240;
private static  final int MIN_FRAME_HEIGHT = 240;
private static  final int MAX_FRAME_WIDTH = 480;
private static  final int MAX_FRAME_HEIGHT = 360;
为修改扫描框的大小,先修改为
 
private static int MIN_FRAME_WIDTH = 240;
private static int MIN_FRAME_HEIGHT = 240;
private static int MAX_FRAME_WIDTH = 480;
private static int MAX_FRAME_HEIGHT = 360;
然后在public Rect getFramingRect()
下加入
MIN_FRAME_WIDTH = Dp2Px(context,180);
MIN_FRAME_HEIGHT =Dp2Px(context,180) ;
MAX_FRAME_WIDTH = Dp2Px(context,280);
MAX_FRAME_HEIGHT =Dp2Px(context,240) ;
分辨率转换
 
public static  int Dp2Px( Context context,float dp) {
  final float scale = context.getResources().getDisplayMetrics().density;
  return (int) (dp * scale + 0.5f);
}
 
 
5、关于扫描结果返回出现异常
找到MipcaActivityCapture.java
public void handleDecode(Result result, Bitmap barcode)
注释掉bundle.putParcelable("bitmap", barcode);
 
因为=返回的图片太大导致
 
7、识别图片二维码
参考
http://blog.csdn.net/qq_21445563/article/details/50886879
 
http://download.csdn.net/detail/yangfan106/9295769

发现识别的二维码图片远远落后于微信的识别能力,有些不规则的就不能识别,但是微信都可以
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值