标准 UI 下使用扫一扫
在标准 UI 下使用扫码功能时,可根据如下代码设置启动参数。
ScanRequest scanRequest = new ScanRequest();
// 设置扫码页UI风格
scanRequest.setScanType(ScanRequest.ScanType.QRCODE); // 二维码风格
scanRequest.setScanType(ScanRequest.ScanType.BARCODE); // 条形码风格,默认
// 设置扫码界面 title
scanRequest.setTitleText("标准扫码");
// 设置扫码窗口下提示文字
scanRequest.setViewText("提示文字");
// 设置打开手电筒提示文字,仅 10.1.60 及以上基线支持
scanRequest.setOpenTorchText("打开手电筒");
// 设置关闭手电筒提示文字,仅 10.1.60 及以上基线支持
scanRequest.setCloseTorchText("关闭手电筒");
// 设置扫码识别类型,仅 10.1.60.6+ 和 10.1.68.2+ 基线支持
// 该设置仅对直接扫码生效,对识别相册图片无效
scanRequest.setRecognizeType(
ScanRequest.RecognizeType.QR_CODE, // 二维码
ScanRequest.RecognizeType.BAR_CODE, // 条形码
ScanRequest.RecognizeType.DM_CODE, // DM 码
ScanRequest.RecognizeType.PDF417_Code // PDF417 码
); // 不设置,默认识别前三种
// 设置透明状态栏(在 Android 4.4+ 系统上生效),仅 10.1.68.15+ 基线支持
scanRequest.setTranslucentStatusBar(true);
// 设置隐藏相册按钮,仅 10.1.68.22+ 基线支持
scanRequest.setNotSupportAlbum(true);
自定义 UI 下使用扫一扫
请参考 代码示例。
自定义 UI 升级适配
从 10.1.68.5 和 10.1.60.11 开始,扫一扫 SDK 新增了类 MPScanner 以及相关接口,用来替代此前自定义扫码需要使用的 BQCScanCallback、MaScanCallback 等原始接口。相比原始接口,MPScanner 提供了完整的封装性、简洁易懂的 API,以及更多新特性的支持(例如环境亮度不足的回调),强烈推荐您使用 MPScanner 来开发自定义扫码页。
如果您仍然在使用 BQCScanCallback、MaScanCallback 等原始接口,当您从低版本升级时可能需要适配以下变更:
- 10.1.68.22 版本:
MaScanCallback
类、BQCScanCallback
类、IOnMaSDKDecodeInfo
类新增部分接口,您只需空实现这些接口即可,其中MaScanCallback.onMaCodeInterceptor
方法返回 false 。 - 10.1.60.6 版本:
BQCScanCallback
类新增部分接口,您只需空实现这些接口即可。 - 10.1.60 版本:
BQCScanCallback
类新增部分接口,您只需空实现这些接口即可。 - 10.1.20 版本:
MaScanCallback
类接口变更如下:void onResultMa(MaScanResult maScanResult)
变更为void onResultMa(MultiMaScanResult multiMaScanResult)
您可以按照以下方式获取MaScanResult
:MaScanResult maScanResult = multiMaScanResult.maScanResults[0];
自定义 UI API 说明
MPScanner
自定义 UI 相关的设置内容如下:
/**
* 设置显示相机内容的 View
* 推荐在 {@link MPScanListener} 的 onConfiguration 方法中调用
*
* @param textureView 自定义扫码页中的 TextureView
*/
public void setDisplayView(TextureView textureView);
/**
* 设置扫描识别的区域
*
* @param rect 识别的区域
*/
public void setScanRegion(Rect rect);
/**
* 设置扫描监听器
*/
public void setMPScanListener(MPScanListener mpScanListener);
/**
* 设置识别图像灰度值监听器
*/
public void setMPImageGrayListener(MPImageGrayListener mpImageGrayListener);
/**
* 获取 Camera 对象
*
* @return Camera 对象
*/
public Camera getCamera();
/**
* 设置识别的码类型
* 仅对直接扫码生效,对从bitmap中识别码无效
*
*
* @param recognizeTypes BAR_CODE 条形码;
* QR_CODE 二维码;
* DM_CODE DM码;
* PDF417_CODE PDF417码;
* 不设置默认识别前三种
*/
public void setRecognizeType(MPRecognizeType... recognizeTypes);
自定义 UI 相关的扫描内容如下:
/**
* 打开相机并开始扫描
*
* 首次进入页面时或相机关闭状态下调用
*/
public void openCameraAndStartScan();
/**
* 关闭相机并停止扫描
*/
public void closeCameraAndStopScan();
/**
* 开始扫描
*
* 不会更改相机状态,需在相机打开的状态下调用才能生效
*/
public void startScan();
/**
* 停止扫描
*
* 不会更改相机状态
*/
public void stopScan();
/**
* 从 bitmap 中识别码
*
* @param bitmap 需要识别的 bitmap
* @return 识别结果
*/
public MPScanResult scanFromBitmap(Bitmap bitmap);
其他:
/**
* 打开或关闭手电筒
*
* @return 调用方法后,手电筒是否打开
*/
public boolean switchTorch();
/**
* 打开手电筒
*/
public void openTorch();
/**
* 关闭手电筒
*/
public void closeTorch();
/**
* 播放默认的“哔哔”声
*/
public void beep();
/**
* 释放资源
*
* 请在 onDestroy 中调用
*/
public void release();
MPScanListener
/**
* 扫描参数配置完成
*/
void onConfiguration();
/**
* 扫描识别开始
*/
void onStart();
/**
* 识别成功
*
* @param result 识别结果
*/
void onSuccess(MPScanResult result);
/**
* 识别错误
*
* @param error 错误
*/
void onError(MPScanError error);
MPImageGrayListener
/**
* 获取识别图像的平均灰度值
*
* 正常范围大约在50-140之间,
* 当灰度值低于或高于正常范围时,通常意味着环境亮度过低或过高,可以提示用户打开或关闭手电筒
* 注意:该方法在识别过程中会不断被调用
*
* @param gray 图像的平均灰度值
*/
void onGetImageGray(int gray);
MPScanResult
/**
* 识别结果字符串
*/
private String text;
/**
* 识别的码类型
*/
private MPRecognizeType mpRecognizeType;