本文介紹的是在 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();
}
});
}
});
文檔內容是否對您有幫助?