MNMLKitScanner
项目地址:maning0303/MNMLKitScanner
简介: 基于 Google ML Kit 快速集成二维码扫描,速度比 zxing 快,可配置相册,闪光灯,相机可以调整焦距放大缩小,自定义扫描线颜色,自定义背景颜色,自定义遮罩层,支持同时扫多个二维码和条形码
标签:
基于 Google MLKit 快速集成二维码扫描,速度比 zxing 快,可配置相册,闪光灯,相机可以调整焦距放大缩小,自定义扫描线颜色,自定义背景颜色,自定义遮罩层,支持同时扫多个二维码和条形码
功能:
1:二维码扫描,手势缩放,无拉伸,样式自定义
2:相册中选取图片识别
3: 相机可以调整焦距放大缩小
4: 完全自定义遮罩层
5: 支持微信多个二维码/条形码同时扫描
截图:
如何添加
Gradle 添加:
1.在 Project 的 build.gradle 中添加仓库地址
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
2.在 Module 目录下的 build.gradle 中添加依赖
dependencies {
implementation 'com.github.maning0303:MNMLKitScanner:V1.0.1'
//下面版本自己控制
implementation 'com.google.mlkit:barcode-scanning:17.0.0'
implementation "androidx.camera:camera-core:1.0.2"
implementation "androidx.camera:camera-camera2:1.0.2"
implementation "androidx.camera:camera-lifecycle:1.0.2"
implementation "androidx.camera:camera-view:1.0.0-alpha25"
}
使用方法:
进入需要提前申请相机权限;进入需要提前申请相机权限;进入需要提前申请相机权限;
1:开始扫描:
//默认扫描
MNScanManager.startScan(this, new MNScanCallback() {
@Override
public void onActivityResult(int resultCode, Intent data) {
switch (resultCode) {
case MNScanManager.RESULT_SUCCESS:
ArrayList<String> results = data.getStringArrayListExtra(MNScanManager.INTENT_KEY_RESULT_SUCCESS);
break;
case MNScanManager.RESULT_FAIL:
String resultError = data.getStringExtra(MNScanManager.INTENT_KEY_RESULT_ERROR);
break;
case MNScanManager.RESULT_CANCLE:
showToast("取消扫码");
break;
}
}
});
//自定义扫描
MNScanConfig scanConfig = new MNScanConfig.Builder()
//设置完成震动
.isShowVibrate(true)
//扫描完成声音
.isShowBeep(true)
//显示相册功能
.isShowPhotoAlbum(true)
//显示闪光灯
.isShowLightController(true)
//打开扫描页面的动画
.setActivityOpenAnime(R.anim.activity_anmie_in)
//退出扫描页面动画
.setActivityExitAnime(R.anim.activity_anmie_out)
//自定义文案
.setScanHintText("xxxx")
.setScanHintTextColor("#FF0000")
.setScanHintTextSize(14)
//扫描线的颜色
.setScanColor("#FF0000")
//是否支持手势缩放
.setSupportZoom(true)
//扫描线样式
.setLaserStyle(MNScanConfig.LaserStyle.Grid/MNScanConfig.LaserStyle.Line)
//背景颜色
.setBgColor("")
//网格扫描线的列数
.setGridScanLineColumn(30)
//网格高度
.setGridScanLineHeight(300)
//是否全屏扫描,默认全屏
.setFullScreenScan(true)
//单位 dp
.setResultPointConfigs(36, 12, 3, colorResultPointStroke, colorResultPoint)
//状态栏设置
.setStatusBarConfigs(colorStatusBar, true)
//自定义遮罩
.setCustomShadeViewLayoutID(R.layout.layout_custom_view, new MNCustomViewBindCallback() {
@Override
public void onBindView(View customView) {
//TODO:通过 findviewById 获取 View
}
})
.builder();
MNScanManager.startScan(this, scanConfig, new MNScanCallback() {
@Override
public void onActivityResult(int resultCode, Intent data) {
switch (resultCode) {
case MNScanManager.RESULT_SUCCESS:
String resultSuccess = data.getStringExtra(MNScanManager.INTENT_KEY_RESULT_SUCCESS);
break;
case MNScanManager.RESULT_FAIL:
String resultError = data.getStringExtra(MNScanManager.INTENT_KEY_RESULT_ERROR);
break;
case MNScanManager.RESULT_CANCLE:
showToast("取消扫码");
break;
}
}
});
2.提供扫描界面相关方法(自定义遮罩层会使用):
/**
* 关闭当前页面
*/
MNScanManager.closeScanPage();
/**
* 打开相册扫描图片
*/
MNScanManager.openAlbumPage();
/**
* 打开手电筒
*/
MNScanManager.openScanLight();
/**
* 关闭手电筒
*/
MNScanManager.closeScanLight();
/**
* 手电筒是否开启
*/
MNScanManager.isLightOn();
感谢:
感谢所有开源的人;
推荐:
Name | Describe | |
---|---|---|
GankMM | (Material Design & MVP & Retrofit + OKHttp & RecyclerView ...)Gank.io Android 客户端:每天一张美女图片,一个视频短片,若干 Android,iOS 等程序干货,周一到周五每天更新,数据全部由 干货集中营 提供,持续更新。 | |
MNUpdateAPK | Android APK 版本更新的下载和安装,适配 7.0,简单方便。 | |
MNImageBrowser | 交互特效的图片浏览框架,微信向下滑动动态关闭 | |
MNZXingCode | 快速集成二维码扫描和生成二维码 | |
MNMLKitScanner | 基于 Google MLKit 快速集成二维码扫描,速度比 zxing 快 | |
MNPasswordEditText | 类似微信支付宝的密码输入框。 | |
MClearEditText | 带有删除功能的 EditText | |
MNCrashMonitor | Debug 监听程序崩溃日志,展示崩溃日志列表,方便自己平时调试。 | |
MNProgressHUD | MNProgressHUD 是对常用的自定义弹框封装,加载 ProgressDialog,状态显示的 StatusDialog 和自定义 Toast,支持背景颜色,圆角,边框和文字的自定义。 | |
SwitcherView | 垂直滚动的广告栏文字展示。 | |
MNVideoPlayer | SurfaceView + MediaPlayer 实现的视频播放器,支持横竖屏切换,手势快进快退、调节音量,亮度等。------代码简单,新手可以看一看。 | |
MNChangeSkin | Android 夜间模式,通过 Theme 实现 | |
MNXUtilsDB | xUtils3 数据库模块单独抽取出来,方便使用。 | |
MNCalendar | 简单的日历控件练习,水平方向日历支持手势滑动切换,跳转月份;垂直方向日历选取区间范围。 | |
MNSwipeToLoadDemo | 利用 SwipeToLoadLayout 实现的各种下拉刷新效果(饿了吗,京东,百度外卖,美团外卖,天猫下拉刷新等)。 |