本文介紹的是在 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();
}
});
}
});