API
类及接口说明
类文件 | 说明 |
---|---|
QrCodeActivity | 已实现扫码 Activity,可直接使用 |
QrCodeScanView | 扫码 view 组件 |
ValuesCallback | 解码结果回调接口 |
FileDecoder | 图片文件解析类 |
IPreviewRectProvider | 扫码识别区域控制类 |
扫码页面
接口定义
SDK 提供完整的扫码页面,可直接使用,并可通过 onActivityResult 接收返回的扫码结果。
sample
public static final int REQUEST_CODE_SCAN_QRCODE = 101;
//启动扫码页面
Intent intent = QrCodeActivity.from(this)
.enableAutoFlash(autoFlash)
.enableAlbum(true)
.enableMultiCodeSelection(true)
.setFilters(mKeywords)
.getIntent();
//接收扫码页面的返回结果
@Override
public void onActivityResult(int requestCode, int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_CODE_SCAN_QRCODE:
if (resultCode != Activity.RESULT_OK) {
return;
}
//获取扫码返回结果
ArrayList<ScanResult> values = intent.getParcelableArrayListExtra("value");
break;
}
}
扫码 View
- 接口定义
//打开闪光灯
public void setFlashLightOn();
//关闭闪光灯
public void setFlashLightOff();
//设置结果回调
public void setResultCallback(ValueCallback<String> callback);
//设置扫码区域提供对象
public void setPreviewProvider(IPreviewRectProvider provider);
图片文件解析类
- 接口定义
//传入文件路径进行解析
public void decode(Context context, long session, String filePath, final ValueCallback<String> callback)
//传入bitmap对象进行解析
public void decode(Context context, long session, Bitmap bitmap, final ValueCallback<String> callback)
session 值需要保持唯一。
- sample
FileDecoder.get().decode(getApplicationContext(), System.currentTimeMillis(), filePath, this);
解码结果回调接口
- 回调类
public abstract class ValuesCallback implements ValueCallback<String>{
public abstract void onResults(List<ScanResult> values);
}
- Sample
ValuesCallback mScanCallback = new ValuesCallback() {
@Override
public void onResults(final List<ScanResult> values) {
if(values == null){
return;
}
MainThreadUtils.post(new Runnable() {
@Override
public void run() {
ToastUtils.show(getApplicationContext(), values.toString(),
Toast.LENGTH_LONG);
}
});
}
};
识别区域控制接口
- 接口定义
public interface IPreviewRectProvider {
Rect getPreviewRect();
}
- 设置 QrCodeScanView 的 PreviewProvider 提供者
mScanView.setPreviewProvider(IPreviewRectProvider);
设置识别检测的矩形区域
- Sample
@Override
public Rect getPreviewRect() {
if(mScanRect == null){
mScanRect = new Rect(50,mPreView.getTop(),ScreenUtils.getScreenWidth(this)-50,mPreView.getTop()+mPreView.getHeight());
}
return mScanRect;
}