android zxing扫描二维码

和生成二维码相比,这个比生成二维码要做的事情多很多;如下:

准备工作:
https://github.com/HappyMiao/QrCodeScan
这里有一个集成好的,下载之后,用android studio打开项目, 复制工程中的:com.google.zxing(复制zxing问件夹),贴到自己工程里,按以下步骤解决报红的文件。解决完之后,就可以使用了,

1、添加依赖 com.google.zxing:core:3.3.0

2、raw下的beep.ogg。音频文件CaptureActivity中使用,若不想用则可以自行修改CaptureActivity。

3、value 下的attrs文件。

4、value下的ids.xml文件。

5、value下的string内容。

6、value下的color内容。

7、layout下的Activity_scanner 复制到你的layout下。

8、权限:

<uses-permission android:name="android.permission.VIBRATE" /> <!-- 震动权限 -->
 <uses-permission android:name="android.permission.CAMERA" />
 <uses-feature android:name="android.hardware.camera" /> <!-- 使用照相机权限 -->
 <uses-feature android:name="android.hardware.camera.autofocus" /> <!-- 自动聚焦权限 -->

9、mainifast配置


<activity android:name="com.google.zxing.activity.CaptureActivity"
                  android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"/>

在解决报红之后,就可以拿来用了


Intent intent = new Intent(MainActivity.this, CaptureActivity.class);//正常的activity跳转,但是CaptureActivity.class是固定的。
startActivityForResult(intent, REQUEST_CODE);


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      if (resultCode == RESULT_OK) { //RESULT_OK = -1
          Bundle bundle = data.getExtras();
          String scanResult = bundle.getString(CaptureActivity.INTENT_EXTRA_KEY_QR_SCAN);
          Toast.makeText(MainActivity.this, scanResult, Toast.LENGTH_LONG).show();
      }
  }

这里需要CaptureActivity中的 (需要注意):
public static final int RESULT_CODE_QR_SCAN = 0xA1;
public static final String INTENT_EXTRA_KEY_QR_SCAN = “result”;//和下面的getString“result”对应

其他activity
//打开扫描界面请求码
private int REQUEST_CODE = 0x01;
//扫描成功返回码
private int RESULT_OK = 0xA1;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) { //RESULT_OK = -1
Bundle bundle = data.getExtras();
String scanResult = bundle.getString(“result”);//scanResult 就是扫出来的数值;
Log.e(TAG, "onActivityResult: "+scanResult );
Toast.makeText(MainActivity.this, scanResult, Toast.LENGTH_LONG).show();
}
}
这里的还有其他的说明:https://www.jianshu.com/p/e80a85b17920

对于需要在横屏下进行扫描操作,需要在“CameraConfigurationManager”类中,方法“setDesiredCameraParameters”进行修改,如下:

  void setDesiredCameraParameters(Camera camera) {
    Camera.Parameters parameters = camera.getParameters();
    Log.d(TAG, "Setting preview size: " + cameraResolution);
    parameters.setPreviewSize(cameraResolution.x, cameraResolution.y);
    setFlash(parameters);
    setZoom(parameters);
    //setSharpness(parameters);
    //modify here
//    camera.setDisplayOrientation(90);//如果需要横屏扫描,需要注释这行
    camera.setParameters(parameters);
  }

在manifest中,横屏模式设置“android:screenOrientation=“landscape””;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jian11058

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值