ฟีเจอร์ Wallet ในการเข้าถึงด่วนพร้อมใช้งานตั้งแต่ Android 11 เป็นต้นไป ซึ่งช่วยให้ผู้ใช้ เข้าถึงบัตรสำหรับชำระเงินและบัตรที่เกี่ยวข้องได้จากเมนูเปิด/ปิดโดยตรง กรณีการใช้งานหลักๆ ได้แก่ การเลือกวิธีการชำระเงินที่เหมาะสมก่อนทำธุรกรรมที่ เครื่องปลายทาง NFC และการเข้าถึงเที่ยวบินและบัตรอื่นๆ สำหรับกิจกรรมที่กำลังจะจัดขึ้นอย่างรวดเร็ว
ใน Android 12 ขึ้นไป ฟีเจอร์กระเป๋าเงินสำหรับการเข้าถึงด่วน จะพร้อมใช้งานจากเฉดสีตามที่แสดงในรูปที่ 1 และรูปที่ 2
|
|
ใน Android 11 ฟีเจอร์นี้จะพร้อมใช้งานจากเมนูเปิด/ปิดตามที่แสดงใน รูปที่ 3
ข้อกำหนด
อุปกรณ์ต้องมี NFC เพื่อใช้ฟีเจอร์การเข้าถึงด่วนสำหรับ Wallet ฟีเจอร์นี้
เชื่อมโยงกับ QuickAccessWalletService ของแอปการชำระเงินผ่าน NFC เริ่มต้น ซึ่งหมายความว่า
อุปกรณ์ต้องรองรับ NFC
การจำลองบัตรที่อิงตามโฮสต์ (HCE) ด้วย
ภาพรวมของฟีเจอร์
Quick Access Wallet มี 2 ส่วน ได้แก่ UI ของ Quick Access Wallet และ ผู้ให้บริการบัตร Quick Access Wallet
ใน Android 12 ขึ้นไป UI ของ Wallet จะทํางานใน System
UI และอยู่ใน
frameworks/base/packages/SystemUI/src/com/android/systemui/wallet ใน Android 11 คุณต้องติดตั้งและเพิ่ม UI ของ Wallet ซึ่งอยู่ใน
platform/packages/apps/QuickAccessWallet
ลงในรายการที่อนุญาต
ผู้ให้บริการบัตร Wallet สำหรับการเข้าถึงด่วนคือแอปการชำระเงินผ่าน NFC เริ่มต้น ผู้ใช้สามารถ
ติดตั้งแอปการชำระเงินผ่าน NFC หลายแอปพร้อมกันได้ แต่มีเพียงแอปการชำระเงินผ่าน NFC เริ่มต้น
เท่านั้นที่แสดงบัตรในเมนูเปิด/ปิดได้ คุณระบุได้ว่าแอปการชำระเงินผ่าน NFC
ใดที่ตั้งเป็นค่าเริ่มต้นในตอนแรก แต่ผู้ใช้สามารถเลือกแอปอื่น
ได้ในการตั้งค่า หากติดตั้งแอปการชำระเงินผ่าน NFC ไว้เพียงแอปเดียว แอปนั้นจะกลายเป็นแอป
เริ่มต้นโดยอัตโนมัติ (ดู
CardEmulationManager)
การใช้งาน
หากต้องการแสดงบัตรใน UI ของ Wallet สำหรับการเข้าถึงด่วน แอปการชำระเงินผ่าน NFC ต้องใช้ QuickAccessWalletService
แอปการชำระเงินต้องมีรายการในไฟล์ Manifest ที่โฆษณาบริการ
แอปการชำระเงินผ่าน NFC ต้องกำหนดให้ใช้สิทธิ์ android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE เพื่อให้มั่นใจว่ามีเพียง UI ของระบบเท่านั้นที่เชื่อมโยงกับ QuickAccessWalletService ได้ การกำหนดให้ใช้สิทธิ์นี้
ช่วยให้มั่นใจได้ว่า
มีเพียง UI ของระบบเท่านั้นที่เชื่อมโยงกับ QuickAccessWalletService ได้
<service
android:name=".MyQuickAccessWalletService"
android:label="@string/my_default_tile_label"
android:icon="@drawable/my_default_icon_label"
android:logo="@drawable/my_wallet_logo"
android:permission="android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE">
<intent-filter>
<action android:name="android.service.quickaccesswallet.QuickAccessWalletService" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<meta-data android:name="android.quickaccesswallet"
android:resource="@xml/quickaccesswallet_configuration" />
<meta-data
android:name="android.quickaccesswallet.tile"
android:resource="@drawable/my_default_tile_icon"/>
</service>
ข้อมูลเพิ่มเติมเกี่ยวกับ Wallet จะรวมอยู่ในไฟล์ XML ที่ลิงก์ไว้
<quickaccesswallet-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:settingsActivity="com.example.android.SettingsActivity"
android:shortcutLongLabel="@string/my_wallet_empty_state_text"
android:shortcutShortLabel="@string/my_wallet_button_text"
android:targetActivity="com.example.android.WalletActivity"/>
จากนั้นแอปการชำระเงินต้องติดตั้งใช้งาน QuickAccessWalletService ดังนี้
public class MyQuickAccessWalletService extends QuickAccessWalletService {
@Override
public void onWalletCardsRequested(
GetWalletCardsRequest request,
GetWalletCardsCallback callback) {
GetWalletCardsResponse response = // generate response
callback.onSuccess(response);
}
@Override
public void onWalletCardSelected(SelectWalletCardRequest request) {
// selecting a card should ensure that it is used when making an NFC payment
}
@Override
public void onWalletDismissed() {
// May un-select card if the wallet app has the concept of a 'default'
// payment method
}
}
หาก HostApduService เริ่มจัดการธุรกรรม NFC และเริ่มกิจกรรมเพื่อแสดงความคืบหน้าและผลลัพธ์ของการชำระเงิน HostApduService ควรพยายามรับการอ้างอิงไปยัง QuickAccessWalletService ที่เชื่อมโยงและเรียกใช้ QuickAccessWalletService#sendEvent ด้วยประเภทเหตุการณ์ TYPE_NFC_PAYMENT_STARTED ซึ่งจะทำให้ระบบปิด UI ของ Wallet ในการเข้าถึงด่วน
จึงช่วยให้ผู้ใช้เห็นกิจกรรมการชำระเงินได้อย่างชัดเจน
ดูเอกสารเพิ่มเติมเกี่ยวกับการติดตั้งใช้งาน QuickAccessWalletService ได้ที่
QuickAccessWalletService
และ
TestQuickAccessWalletService
การทดสอบ CTS
เปิดใช้ UI ของ Wallet สำหรับการเข้าถึงด่วนใน Android 11
หากต้องการกำหนดค่า Quick Access Wallet ให้พร้อมใช้งานจากเมนูเปิด/ปิด
ใน Android 11 ให้ใส่
QuickAccessWallet
เป้าหมายในการบิลด์และเปิดใช้ปลั๊กอิน globalactions.wallet โดยเพิ่ม
บรรทัดที่อยู่ในตัวหนาในตัวอย่างโค้ดด้านล่างลงในไฟล์
overlay/frameworks/base/packages/SystemUI/res/values/config.xml
<resources> ... <!-- SystemUI Plugins that can be loaded on user builds. --> <string-array name="config_pluginWhitelist" translatable="false"> <item>com.android.systemui</item> <item>com.android.systemui.plugin.globalactions.wallet</item> </string-array> </resources>
ระบุแอปการชำระเงินผ่าน NFC เริ่มต้นในไฟล์การกำหนดค่าการตั้งค่า
โดยใช้ def_nfc_payment_component
แอปการชำระเงิน NFC เริ่มต้นต้องแสดง
QuickAccessWalletService
เพื่อแสดงบัตรใน Wallet สำหรับการเข้าถึงด่วน หากแอปการชำระเงินผ่าน NFC เริ่มต้น ไม่ได้ส่งออกบริการนี้ ระบบจะซ่อน UI ของ Wallet
รายละเอียดการใช้งาน QuickAccessWalletService
QuickAccessWalletService มีเมธอดนามธรรม 3 รายการที่ต้องใช้ ได้แก่ onWalletCardsRequested, onWalletCardSelected และ onWalletDismissed
แผนภาพลำดับด้านล่างแสดงลำดับการเรียกเมื่อดู Quick Access Wallet
ก่อนการชำระเงินผ่าน NFC ทันที
ยอดดู Wallet ในการเข้าถึงด่วนบางรายการไม่ได้นำไปสู่การชำระเงินผ่าน NFC แต่รูปที่ 4 ด้านบนแสดงความสามารถทั้งหมดของ QuickAccessWalletService ในตัวอย่างนี้ ผู้ให้บริการบัตร Quick Access Wallet
จะใช้การติดตั้งใช้งานองค์ประกอบที่ระบุไว้เป็นสีน้ำเงิน ระบบจะถือว่ามีการจัดเก็บบัตรชำระเงิน
ไว้ในอุปกรณ์ในฐานข้อมูลและเข้าถึงได้ผ่านอินเทอร์เฟซ
ที่ชื่อ PaymentCardManager นอกจากนี้ ยังถือว่ากิจกรรม
ที่ชื่อ PaymentActivity แสดงผลลัพธ์ของการชำระเงินผ่าน NFC ขั้นตอน
มีดังนี้
- ผู้ใช้ทำท่าทางสัมผัสเพื่อเรียก Wallet ที่เข้าถึงด่วนขึ้นมา
UI วอลเล็ตสำหรับการเข้าถึงด่วน (ส่วนหนึ่งของ UI ของระบบ) จะตรวจสอบเครื่องมือจัดการแพ็กเกจ เพื่อดูว่าแอปการชำระเงินผ่าน NFC เริ่มต้นส่งออก
QuickAccessWalletServiceหรือไม่- หากไม่ได้ส่งออกบริการดังกล่าว ระบบจะไม่แสดง Wallet การเข้าถึงด่วน
UI ของ Wallet สำหรับการเข้าถึงด่วนจะเชื่อมโยงกับ
QuickAccessWalletServiceและ เรียกใช้onWalletCardsRequestedเมธอดนี้รับออบเจ็กต์คำขอ ที่มีข้อมูลเกี่ยวกับจำนวนและขนาดของการ์ดที่สามารถระบุได้ และโค้ดเรียกกลับ สามารถเรียกใช้การเรียกกลับจากเธรดเบื้องหลังได้QuickAccessWalletServiceจะคำนวณการ์ดที่ต้องการแสดง จากนั้นเรียกใช้เมธอดonSuccessในการเรียกกลับที่ระบุ เราขอแนะนำให้บริการดำเนินการเหล่านี้ในเธรดเบื้องหลังทันทีที่การ์ดแสดงขึ้น UI ของระบบจะแจ้ง
QuickAccessWalletServiceว่ามีการเลือกการ์ดแรกโดยการเรียกonWalletCardSelected- ระบบจะเรียกใช้
onWalletCardSelectedทุกครั้งที่ผู้ใช้เลือก บัตรใหม่ onWalletCardSelectedอาจเรียกใช้แม้ว่าบัตรที่เลือกในปัจจุบันจะไม่มีการเปลี่ยนแปลงก็ตาม
- ระบบจะเรียกใช้
เมื่อผู้ใช้ปิด Wallet ในการเข้าถึงด่วน UI ของระบบจะแจ้ง
QuickAccessWalletServiceโดยการเรียกใช้onWalletDismissed
ในตัวอย่างข้างต้น ผู้ใช้ถือโทรศัพท์ให้อยู่ในระยะของเครื่องชำระเงินแบบ NFC ขณะที่ระบบแสดงกระเป๋าเงิน องค์ประกอบสำคัญของการจัดการการชำระเงินผ่าน NFC คือ HostApduService ซึ่งต้องนำไปใช้เพื่อประมวลผล APDU ที่เครื่องอ่าน NFC ระบุ (ดูข้อมูลเพิ่มเติมได้ที่การจำลองบัตรที่อิงตามโฮสต์)
ระบบจะถือว่าแอปการชำระเงินเริ่มกิจกรรมเพื่อแสดงความคืบหน้าและ
ผลลัพธ์ของการโต้ตอบกับเครื่องปลายทาง NFC อย่างไรก็ตาม UI ของ Wallet ในการเข้าถึงด่วนจะแสดงที่ด้านบนของหน้าต่างแอป ซึ่งหมายความว่ากิจกรรมการชำระเงินจะถูกซ่อนโดย UI ของ Wallet ในการเข้าถึงด่วน หากต้องการแก้ไขปัญหานี้ แอปต้องแจ้ง UI ของระบบว่าควรปิด UI ของ Wallet สำหรับการเข้าถึงด่วน
โดยทำได้ด้วยการรับการอ้างอิงถึง QuickAccessWalletService ที่ผูกไว้และเรียกใช้ sendWalletServiceEvent ด้วยประเภทเหตุการณ์ TYPE_NFC_PAYMENT_STARTED
ตัวอย่างการใช้งาน QuickAccessWalletService
/** Sample implementation of {@link QuickAccessWalletService} */
@RequiresApi(VERSION_CODES.R)
public class MyQuickAccessWalletService extends QuickAccessWalletService {
private static final String TAG = "QAWalletSvc";
private ExecutorService executor;
private PaymentCardManager paymentCardManager;
@Override
public void onCreate() {
super.onCreate();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
Log.w(TAG, "Should not run on pre-R devices");
stopSelf();
return;
}
executor = Executors.newSingleThreadExecutor();
paymentCardManager = new PaymentCardManager();
}
@Override
public void onDestroy() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
return;
}
executor.shutdownNow();
}
@Override
public void onWalletCardsRequested(
@NonNull GetWalletCardsRequest request, @NonNull GetWalletCardsCallback callback) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
return;
}
executor.submit(
() -> {
List<PaymentCard> paymentCards = paymentCardManager.getCards();
int maxCards = Math.min(paymentCards.size(), request.getMaxCards());
List<WalletCard> walletCards = new ArrayList<>(maxCards);
int selectedIndex = 0;
int cardWidthPx = request.getCardWidthPx();
int cardHeightPx = request.getCardHeightPx();
for (int index = 0; index < maxCards; index++) {
PaymentCard paymentCard = paymentCards.get(index);
WalletCard walletCard =
new WalletCard.Builder(
paymentCard.getCardId(),
paymentCard.getCardImage(cardWidthPx, cardHeightPx),
paymentCard.getContentDescription(),
paymentCard.getPendingIntent())
.build();
walletCards.add(walletCard);
if (paymentCard.isSelected()) {
selectedIndex = index;
}
}
GetWalletCardsResponse response =
new GetWalletCardsResponse(walletCards, selectedIndex);
callback.onSuccess(response);
});
}
@Override
public void onWalletCardSelected(@NonNull SelectWalletCardRequest request) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
return;
}
executor.submit(
() -> paymentCardManager.selectCardById(request.getCardId()));
}
@Override
public void onWalletDismissed() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
return;
}
executor.submit(() -> {
paymentCardManager.removeCardOverrides();
});
}
}
ดูรายละเอียดเพิ่มเติมเกี่ยวกับ QuickAccessWalletService ได้ที่
เอกสารอ้างอิง API ของ QuickAccessWalletService
สิทธิ์
รายการไฟล์ Manifest สำหรับ QuickAccessWalletService ต้องกำหนดให้มีสิทธิ์
android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE ที่เปิดตัวใน
Android 11 นี่คือสิทธิ์ระดับลายเซ็นที่ UI ของระบบถือครอง ซึ่งหมายความว่ามีเพียงกระบวนการ UI ของระบบเท่านั้นที่เชื่อมโยงกับการติดตั้งใช้งาน QuickAccessWalletService ได้ โปรดทราบว่าแอปที่โหลดจากแหล่งที่ไม่รู้จักสามารถอ้างสิทธิ์
นี้และรับสิทธิ์เข้าถึงข้อมูล QuickAccessWalletService ในอุปกรณ์
ที่ใช้ Android 10 หรือต่ำกว่าได้อย่างเต็มที่ เพื่อป้องกันปัญหานี้ เราขอแนะนำให้บริการตรวจสอบเวอร์ชันบิลด์ใน onCreate และเปิดใช้บริการเฉพาะในอุปกรณ์ที่ใช้ Android 11 ขึ้นไป ไม่จำเป็นต้องมีสิทธิ์ของแอปอื่นๆ นอกเหนือจากสิทธิ์ที่จำเป็นในการให้บริการชำระเงินด้วย Host Card Emulation
หากแอปการชำระเงินผ่าน NFC เริ่มต้นไม่ได้ใช้หรือส่งออก
QuickAccessWalletService ระบบจะไม่แสดง UI ของ Wallet ในการเข้าถึงด่วน
การตั้งค่าใน Android 12
หากต้องการเปิดหรือปิดใช้ Wallet ที่เข้าถึงด่วนจากหน้าจอล็อก ผู้ใช้สามารถ ใช้ปุ่มเปิด/ปิดแสดง Wallet ในการตั้งค่า > จอแสดงผล > หน้าจอล็อก หากต้องการปิดใช้ Wallet ในแถบเฉดสี ผู้ใช้ต้องแก้ไขด้วยตนเอง ในแถบการตั้งค่าด่วน
รูปที่ 5 แสดงปุ่มเปิด/ปิดกระเป๋าสตางค์ในหน้าจอล็อกในการตั้งค่า
การตั้งค่าใน Android 11
ผู้ใช้ปิดฟีเจอร์กระเป๋าเงินสำหรับการเข้าถึงด่วนได้จากแอปการตั้งค่า โดยหน้าการตั้งค่าจะอยู่ในการตั้งค่า > ระบบ > ท่าทางสัมผัส > บัตรและตั๋ว
การปรับแต่ง
เพิ่มมุมมองการเข้าถึงด่วนสำหรับ Wallet ไปยังตำแหน่งอื่นใน UI ของระบบ
UI ของ Wallet สำหรับการเข้าถึงด่วน
สร้างขึ้นเป็นปลั๊กอินของระบบ
แม้ว่าการติดตั้งใช้งาน AOSP จะใช้ฟีเจอร์นี้ใน
GlobalActionsDialog
(แสดงเมื่อกดปุ่มเปิด/ปิดค้างไว้) แต่คุณก็ย้ายฟีเจอร์นี้ไปไว้หลังท่าทางสัมผัสอื่นได้
ตราบใดที่คุณยังคงรักษาสัญญาที่ระบุโดยอินเทอร์เฟซปลั๊กอิน
public interface GlobalActionsPanelPlugin extends Plugin {
/** Invoked when the view is shown */
PanelViewController onPanelShown(Callbacks callbacks, boolean deviceLocked);
/** Callbacks for interacting with the view container */
interface Callbacks {
/** Dismisses the view */
void dismissGlobalActionsMenu();
/** Starts a PendingIntent, dismissing the keyguard if necessary. */
void startPendingIntentDismissingKeyguard(PendingIntent pendingIntent);
}
/** Provides the Quick Access Wallet view */
interface PanelViewController {
/** Returns the QuickAccessWallet view, which may take any size */
View getPanelContent();
/** Invoked when the view is dismissed */
void onDismissed();
/** Invoked when the device is either locked or unlocked. */
void onDeviceLockStateChanged(boolean locked);
}
}
UI ของ Wallet สำหรับการเข้าถึงด่วน
ใช้ GlobalActionsPanelPlugin และ PanelViewController
GlobalActionsDialog
รับอินสแตนซ์ของปลั๊กอิน Wallet โดยใช้
com.android.systemui.Dependency
GlobalActionsPanelPlugin mPanelPlugin =
Dependency.get(ExtensionController.class)
.newExtension(GlobalActionsPanelPlugin.class)
.withPlugin(GlobalActionsPanelPlugin.class)
.build()
.get();
หลังจากตรวจสอบว่าปลั๊กอินไม่ใช่ค่า Null และ PanelViewController
ที่ onPanelShown แสดงผลไม่ใช่ค่า Null แล้ว กล่องโต้ตอบจะแนบ View ที่ getPanelContent ระบุ
ไว้กับ View ของตัวเอง และระบุการเรียกกลับที่เหมาะสมสำหรับ
เหตุการณ์ของระบบ
// Construct a Wallet PanelViewController.
// `this` implements GlobalActionsPanelPlugin.Callbacks
GlobalActionsPanelPlugin.PanelViewController mPanelController =
mPanelPlugin.onPanelShown(this, !mKeyguardStateController.isUnlocked());
// Attach the view
FrameLayout panelContainer = findViewById(R.id.my_panel_container);
FrameLayout.LayoutParams panelParams =
new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT);
panelContainer.addView(mPanelController.getPanelContent(), panelParams);
// Respond to unlock events (if the view can be accessed while the phone is locked)
keyguardStateController.addCallback(new KeyguardStateController.Callback() {
@Override
public void onUnlockedChanged() {
boolean unlocked = keyguardStateController.isUnlocked()
|| keyguardStateController.canDismissLockScreen();
mPanelController.onDeviceLockStateChanged(unlocked);
}
});
// Implement GlobalActionsPanelPlugin.Callbacks
@Override
public void dismissGlobalActionsMenu() {
dismissDialog();
}
@Override
public void startPendingIntentDismissingKeyguard(PendingIntent pendingIntent) {
mActivityStarter.startPendingIntentDismissingKeyguard(pendingIntent);
}
// Notify the wallet when the container view is dismissed
mPanelController.onDismissed();
หากต้องการนำ Wallet ที่เข้าถึงด่วนออกจากเมนูเปิด/ปิด ให้ละเว้นQuickAccessWalletเป้าหมายจากบิลด์ระบบ หากต้องการนำ Wallet ที่เข้าถึงด่วน
ออกจากเมนูเปิด/ปิด แต่เพิ่มลงในมุมมอง UI ของระบบอื่น
ให้รวมเป้าหมายบิลด์และนำการอ้างอิงถึง GlobalActionsPanelPlugin
ออกจาก
GlobalActionsImpl
ตั้งค่าเริ่มต้น
Android 12
ใน Android 12 ขึ้นไป Wallet สำหรับการเข้าถึงด่วนจะ
แสดงในแผงการตั้งค่าด่วนเสมอ การมองเห็น Wallet ในหน้าจอล็อกจากการเข้าถึงด่วนจะขึ้นอยู่กับการตั้งค่าที่ปลอดภัยต่อไปนี้
LOCKSCREEN_SHOW_WALLET การตั้งค่านี้จะควบคุมว่าจะแสดงไอคอนกระเป๋าสตางค์สำหรับการเข้าถึงด่วนที่ด้านขวาล่างของหน้าจอล็อกหรือไม่ การตั้งค่านี้จะตั้งค่าเป็น
true โดยค่าเริ่มต้น แต่ผู้ใช้สามารถปิดได้ในการตั้งค่า >
จอแสดงผล > หน้าจอล็อก > แสดง Wallet
Android 11
ใน Android 11 การเข้าถึงด่วนของ Wallet จะจำกัดด้วยการตั้งค่าที่ปลอดภัย 2 รายการ ได้แก่
GLOBAL_ACTIONS_PANEL_ENABLED และ GLOBAL_ACTIONS_PANEL_AVAILABLE การตั้งค่า
AVAILABLE จะควบคุมว่าจะเปิดหรือปิดฟีเจอร์ได้หรือไม่ใน
การตั้งค่า การตั้งค่านี้ตั้งค่าเป็น true โดย
WalletPluginService
หากไม่ได้รวม QuickAccessWallet ไว้ในบิลด์ การตั้งค่าจะยังคงเป็น
false การตั้งค่า ENABLED จะตั้งค่าเป็น true โดยค่าเริ่มต้นในที่เดียวกัน
แต่ผู้ใช้สามารถปิดได้ในการตั้งค่า หากต้องการเปลี่ยนลักษณะการทำงานเริ่มต้น
ให้แก้ไข WalletPluginService#enableFeatureInSettings
การตรวจสอบ
หากต้องการตรวจสอบการติดตั้งใช้งาน Quick Access Wallet ให้เรียกใช้ CTS และการทดสอบด้วยตนเอง การเปลี่ยนแปลงปลั๊กอินควรใช้การทดสอบ Robolectric ที่รวมไว้ด้วย
การทดสอบ CTS
เรียกใช้การทดสอบ CTS ที่อยู่ใน
cts/tests/quickaccesswallet
การทดสอบด้วยตนเองสำหรับ Android 12
การทดสอบฟีเจอร์หลักของ Wallet ด่วนต้องใช้
เทอร์มินัลการชำระเงินผ่าน NFC (จริงหรือปลอม) และแอปการชำระเงินผ่าน NFC ที่ใช้
QuickAccessWalletService (แอป Wallet) ฟีเจอร์หลักที่ต้องทดสอบ
ได้แก่ ความพร้อมใช้งาน สถานะเริ่มต้น การเลือกบัตร และลักษณะการทำงานของหน้าจอล็อก
ความพร้อมใช้งาน
- หากแอปการชำระเงินผ่าน NFC เริ่มต้นไม่รองรับฟีเจอร์นี้ คุณจะเข้าถึง Quick Access Wallet ไม่ได้ทั้งในการตั้งค่าด่วนและหน้าจอ ล็อก
- หากแอปการชำระเงินผ่าน NFC เริ่มต้นรองรับฟีเจอร์นี้ คุณจะเข้าถึง Wallet ในการเข้าถึงด่วนได้ในแผงการตั้งค่าด่วน
- หากแอปการชำระเงินผ่าน NFC เริ่มต้นรองรับฟีเจอร์นี้และหากการตั้งค่า
LOCKSCREEN_SHOW_WALLETเป็นtrueคุณจะเข้าถึง Quick Access Wallet ได้ในหน้าจอล็อก - หากแอปการชำระเงินผ่าน NFC เริ่มต้นรองรับฟีเจอร์นี้และหาก
LOCKSCREEN_SHOW_WALLETการตั้งค่าเป็นfalseคุณจะเข้าถึง Wallet ด่วนในหน้าจอล็อกไม่ได้
สถานะว่างเปล่า
หากเปิดใช้
QuickAccessWalletServiceและส่งออก แต่ไม่ได้ แสดงการ์ดใดๆ ไทล์ในเฉดสีจะปรากฏตามที่แสดงใน ตัวอย่างในรูปที่ 7 การคลิกที่ไทล์จะเปิดแอปการชำระเงินผ่าน NFC เริ่มต้น
รูปที่ 7 ตัวอย่างการ์ดในแผงการตั้งค่าด่วนที่แสดงแอปการชำระเงินผ่าน NFC เริ่มต้น
การคลิกมุมมองสถานะว่างตามที่แสดงในรูปที่ 8 จะเปิด แอปการชำระเงินผ่าน NFC เริ่มต้น มุมมองสถานะว่างนี้จะแสดงก็ต่อเมื่อ ผู้ใช้มีบัตรเหลือ 1 ใบใน Wallet นำบัตรออกจากหน้ารายละเอียดบัตร แล้วกลับไปที่มุมมอง Wallet
หน้าจอล็อกจะแสดงไอคอน Wallet
รูปที่ 8 มุมมองสถานะว่างเปล่าใน UI ของ Wallet สำหรับการเข้าถึงด่วน
สถานะที่ไม่ใช่ศูนย์
หากแอป Wallet มีบัตรอย่างน้อย 1 ใบ ไทล์ในเฉดสี จะปรากฏตามที่แสดงในรูปที่ 9
รูปที่ 9 ตัวอย่างการ์ดในแผงเมื่อแอป Wallet มีบัตรอย่างน้อย 1 ใบ
การคลิกไทล์จะแสดงภาพสไลด์ของการ์ด
หน้าจอล็อกจะแสดงปุ่มที่เปิด Wallet สำหรับการเข้าถึงด่วน
รูปที่ 10 UI ของ Wallet สำหรับการเข้าถึงด่วนพร้อมบัตรที่แสดง
หากบัตรที่แสดงเป็นวิธีการชำระเงินแบบ NFC การถือโทรศัพท์ไว้ใกล้กับเครื่องชำระเงินแบบ NFC จะทำให้ระบบใช้วิธีการชำระเงินนั้น และปิดมุมมองกระเป๋าเงิน
การคลิกการ์ดที่แสดงจะเปิดกิจกรรมโดยละเอียดของการ์ดนั้น
หาก
QuickAccessWalletServiceมีบัตรหลายใบ ผู้ใช้จะปัดระหว่างบัตรได้เมนูรายการเพิ่มเติมมีรายการเดียวคือเปิดการตั้งค่าหน้าจอล็อกเพื่อให้ผู้ใช้เปลี่ยนตัวเลือกแสดง Wallet ได้
การทดสอบสถานะการล็อก
- หากโทรศัพท์ล็อกอยู่ Wallet จะปรากฏในแผงการตั้งค่าด่วนพร้อมคำอธิบายเพิ่มบัตรหากไม่มีบัตรในแอปการชำระเงินเริ่มต้น หรือปลดล็อกเพื่อใช้หากมีบัตรในแอปการชำระเงินเริ่มต้น
- หากโทรศัพท์ล็อกอยู่
Secure.LOCKSCREEN_SHOW_WALLETจะควบคุมระดับการเข้าถึง Wallet บนหน้าจอล็อก ซึ่งควบคุมได้ในการตั้งค่า - หากโทรศัพท์ล็อกอยู่
LOCKSCREEN_SHOW_WALLETเป็นfalseและไม่มีบัตร ในแอปการชำระเงินผ่าน NFC เริ่มต้น ระบบจะไม่แสดง Wallet บน หน้าจอล็อก - หากโทรศัพท์ล็อกอยู่
LOCKSCREEN_SHOW_WALLETเป็นtrueและไม่มีบัตร ในแอปการชำระเงินผ่าน NFC เริ่มต้น ระบบจะไม่แสดง Wallet บน หน้าจอล็อก - หากโทรศัพท์ล็อกอยู่
LOCKSCREEN_SHOW_WALLETเป็นtrueและมีการ์ดในแอปการชำระเงินผ่าน NFC เริ่มต้น ระบบจะแสดง Wallet บนหน้าจอล็อก - การปลดล็อกโทรศัพท์ขณะที่กระเป๋าเงินแสดงอยู่บนหน้าจอล็อกจะทำให้ระบบขอข้อมูลบัตรอีกครั้ง ซึ่งอาจส่งผลให้เนื้อหาบัตรแตกต่างกัน
การทดสอบการช่วยเหลือพิเศษ
- ผู้ใช้ Talkback สามารถไปยังส่วนต่างๆ ของมุมมองกระเป๋าสตางค์ได้โดยการปัดไปทางซ้ายและขวา และโดยการฟังคำอธิบายเนื้อหาของการ์ด
- การปัดไปทางซ้ายและขวาเมื่อเปิดใช้ Talkback จะเลือกการ์ดแต่ละใบตามลำดับ ผู้ใช้ TalkBack สามารถเลือกและใช้วิธีการชำระเงินผ่าน NFC ที่เครื่องชำระเงิน NFC
การทดสอบด้วยตนเองสำหรับ Android 11
การทดสอบฟีเจอร์หลักของ Wallet ด่วนต้องใช้
เทอร์มินัลการชำระเงินผ่าน NFC (จริงหรือปลอม) และแอปการชำระเงินผ่าน NFC ที่ใช้
QuickAccessWalletService (แอป Wallet) ฟีเจอร์หลักที่ต้องทดสอบ
ได้แก่ ความพร้อมใช้งาน สถานะเริ่มต้น การเลือกบัตร และลักษณะการทำงานของหน้าจอล็อก
ความพร้อมใช้งาน
- หากการตั้งค่า
GLOBAL_ACTIONS_PANEL_ENABLEDเป็นtrueและแอปการชำระเงินผ่าน NFC เริ่มต้น รองรับฟีเจอร์นี้ คุณจะเข้าถึง Wallet ในการเข้าถึงด่วนได้ - หาก
GLOBAL_ACTIONS_PANEL_ENABLEDการตั้งค่าเป็นfalseและแอปชำระเงินผ่าน NFC เริ่มต้น รองรับฟีเจอร์นี้ คุณจะเข้าถึง Wallet ในการเข้าถึงด่วนไม่ได้ - หากการตั้งค่า
GLOBAL_ACTIONS_PANEL_ENABLEDเป็นtrueและแอปการชำระเงินผ่าน NFC เริ่มต้นไม่รองรับฟีเจอร์นี้ คุณจะเข้าถึง Wallet เพื่อการเข้าถึงด่วนไม่ได้ - หากการตั้งค่า
GLOBAL_ACTIONS_PANEL_ENABLEDเป็นfalseและแอปการชำระเงินผ่าน NFC เริ่มต้นไม่รองรับฟีเจอร์นี้ คุณจะเข้าถึง Wallet เพื่อการเข้าถึงด่วนไม่ได้
สถานะว่างเปล่า
- หากเปิดใช้
QuickAccessWalletServiceและส่งออก แต่ไม่ได้ ระบุบัตรใดๆ UI ของ Wallet สำหรับการเข้าถึงด่วนจะแสดงมุมมองสถานะว่าง การคลิกมุมมองสถานะว่างจะเปิดแอป Wallet
รูปที่ 11 มุมมองสถานะว่างเปล่าในการเข้าถึงด่วน UI ของ Wallet
สถานะที่ไม่ใช่ศูนย์
หากแอป Wallet มีบัตรอย่างน้อย 1 ใบ บัตรจะแสดงใน UI ของ Quick Access Wallet
รูปที่ 12 UI ของ Wallet ที่เข้าถึงด่วนพร้อมบัตร ที่แสดง หากบัตรที่แสดงเป็นวิธีการชำระเงินแบบ NFC การถือโทรศัพท์ไว้ใกล้กับเครื่องชำระเงินแบบ NFC จะทำให้ระบบใช้วิธีการชำระเงินนั้น และปิดมุมมองกระเป๋าเงิน
การคลิกการ์ดที่แสดงจะปิดมุมมอง Wallet และเปิด กิจกรรมโดยละเอียดของการ์ดนั้น
หาก
QuickAccessWalletServiceมีบัตรหลายใบ ผู้ใช้จะปัดระหว่างบัตรได้เมนูรายการเพิ่มเติมมี 2 รายการ ได้แก่ รายการที่เปิดแอป Wallet และรายการที่เปิดหน้าจอแสดงบัตรและบัตรผ่านในการตั้งค่า
การทดสอบสถานะการล็อก
- หากโทรศัพท์ล็อกอยู่ ระบบจะควบคุมระดับการมองเห็นของ Wallet โดย
Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENTการตั้งค่า ซึ่งควบคุมได้ในการตั้งค่า - หากโทรศัพท์ล็อกอยู่และ
POWER_MENU_LOCK_SHOW_CONTENTเป็นfalseระบบจะไม่แสดง กระเป๋าสตางค์ - หากโทรศัพท์ล็อกอยู่และ
POWER_MENU_LOCK_SHOW_CONTENTtrueอยู่ ระบบจะแสดง กระเป๋าสตางค์ - การปลดล็อกโทรศัพท์ขณะที่กระเป๋าเงินแสดงอยู่บนหน้าจอล็อกจะทำให้ระบบค้นหาบัตรอีกครั้ง ซึ่งอาจส่งผลให้เนื้อหาบัตรแตกต่างกัน
การทดสอบการช่วยเหลือพิเศษ
- ผู้ใช้ TalkBack สามารถไปยังส่วนต่างๆ ของมุมมองกระเป๋าเงินได้โดยการปัดไปทางซ้ายและขวา และโดยการฟังคำอธิบายเนื้อหาของการ์ด
- การปัดไปทางซ้ายและขวาเมื่อเปิดใช้ TalkBack จะเลือกการ์ดแต่ละใบตามลำดับ ผู้ใช้ TalkBack สามารถเลือกและใช้วิธีการชำระเงินผ่าน NFC ที่เครื่องชำระเงินผ่าน NFC