效果图
用的是zxing库:是google推出的一个开源的二维码框架,可以实现使用手机的摄像头完成二维码的扫描和解码
- 扫码必须要获取相机权限,否则黑屏
- 相机权限(我是动态获取的)
动态获取权限参考
android.Manifest.permission.CAMERA
- 添加二维码 依赖
//AndroidX 版本
implementation 'com.king.zxing:zxing-lite:1.1.7-androidx'
- 在清单文件中注册(AndroidManifest.xml),加上下面的
<activity
android:name="com.king.zxing.CaptureActivity"
android:screenOrientation="portrait"
android:theme="@style/CaptureTheme"/>
- 需要的显示二维码的处理,给一个点击事件,点击后显示扫描二维码框
- 点击事件调用
注意
- 在activity 中
public static final int REQUEST_CODE_SCAN = 0X02;
//点击事件
mineScanCode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//显示扫描二维码框
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeCustomAnimation(this, R.anim.empty, R.anim.empty);
Intent intent = new Intent(this, CaptureActivity.class);
ActivityCompat.startActivityForResult(this, intent, REQUEST_CODE_SCAN, optionsCompat.toBundle());
}
});
- empty.xml (空的xml)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
</set>
- 处理返回结果
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && data != null) {
switch (requestCode) {
case REQUEST_CODE_SCAN:
String result = data.getStringExtra(Intents.Scan.RESULT);
//implementation 'com.alibaba:fastjson:1.2.31'
//json 用的是阿里巴巴的
//判断json格式
if (isJSON(result)){//是否是json格式
JSONObject object = JSONObject.parseObject(result);
}else {
Toast.makeText(mContext,"不是JSON格式",Toast.LENGTH_SHORT).show();
return;
}
break;
}
}
}
//判断json格式
public static boolean isJSON(String str) {
boolean result = false;
try {
Object obj= JSON.parse(str);
result = true;
} catch (Exception e) {
result=false;
}
return result;
}
如果导入失败,看看配置里是否有 jcenter()
- 以上是整个内容,有不懂的欢迎留言