本文介绍的是在 Android 中接入扫一扫 SDK 的操作步骤。
说明 自 2020 年 6 月 28 日起,mPaaS 停止维护 10.1.32 基线。请升级到 10.1.60、10.1.68 或 10.2.3 基线。扫一扫支持 原生 AAR 和 组件化(Portal&Bundle)两种接入方式。文本将介绍在 10.2.3、10.1.68、10.1.60 基线下如何使用扫码功能。自 mPaaS 10.1.68.33 版本基线起,扫一扫支持全屏模式下的多码识别。自 mPaaS 10.2.3 版本基线起,扫一扫新增 AI 识别小码并自动放大的功能。 |
前置条件
若采用原生 AAR 方式接入,需先完成 将 mPaaS 添加到您的项目中 的前提条件和后续相关步骤。
若采用组件化方式接入,需先完成 组件化接入流程。
添加 SDK
10.2.3
如需使用 AI 识别小码并自动放大功能,请安装 扫一扫 AI 组件。
原生 AAR 方式
参考 AAR 组件管理,通过 组件管理(AAR) 在工程中安装 扫一扫/扫一扫 AI 组件。
组件化方式
在 Portal 和 Bundle 工程中通过 组件管理 安装 扫一扫/扫一扫 AI 组件。更多信息,参考 管理组件依赖。
10.1.68/10.1.60
原生 AAR 方式
参考 AAR 组件管理,通过 组件管理(AAR) 在工程中安装 扫码 组件。
组件化方式
在 Portal 和 Bundle 工程中通过 组件管理 安装 扫码 组件。更多信息,参考 管理组件依赖。
使用扫一扫功能
10.2.3/10.1.68
使用全屏扫码功能
ScanRequest scanRequest = new ScanRequest();
MPScan.startMPaasScanFullScreenActivity(this, scanRequest, new MPScanCallbackAdapter() {
@Override
public boolean onScanFinish(final Context context, MPScanResult mpScanResult, final MPScanStarter mpScanStarter) {
Toast.makeText(getApplicationContext(),
mpScanResult != null ? mpScanResult.getText() : "没有识别到码", Toast.LENGTH_SHORT).show();
((Activity) context).finish();
// 返回 true 表示该回调已消费,不需要再次回调
return true;
}
});
使用窗口扫码功能
在 mPaaS 10.1.68 基线上使用窗口扫码功能(旧标准 UI),若扫码失败直接返回扫码界面,若扫码成功将获取二维码的 URL 信息。
ScanRequest scanRequest = new ScanRequest();
scanRequest.setScanType(ScanRequest.ScanType.QRCODE);
MPScan.startMPaasScanActivity(this, scanRequest, new ScanCallback() {
@Override
public void onScanResult(final boolean isProcessed, final Intent result) {
if (!isProcessed) {
// 扫码界面点击物理返回键或左上角返回键
return;
}
// 注意:本回调是在子线程中执行
runOnUiThread(new Runnable() {
@Override
public void run() {
if (result == null || result.getData() == null) {
// 扫码失败
return;
}
// 扫码成功
String url = result.getData().toString();
}
});
}
});
10.1.60
在 10.1.60 基线上使用扫码功能,若扫码失败直接返回扫码界面,若扫码成功将获取二维码的 URL 信息。
ScanService service = LauncherApplicationAgent
.getInstance().getMicroApplicationContext()
.findServiceByInterface(ScanService.class.getName());
ScanRequest scanRequest = new ScanRequest();
scanRequest.setScanType(ScanRequest.ScanType.QRCODE);
service.scan(this, scanRequest, new ScanCallback() {
@Override
public void onScanResult(boolean isProcessed, final Intent result) {
if (!isProcessed) {
// 扫码界面点击物理返回键或左上角返回键
return;
}
// 注意:本回调是在子线程中执行
runOnUiThread(new Runnable() {
@Override
public void run() {
if (result == null || result.getData() == null) {
// 扫码失败
return;
}
// 扫码成功
String url = result.getData().toString();
}
});
}
});
文档内容是否对您有帮助?