ฟีเจอร์ Quick Access 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 ระบบ) จะตรวจสอบ Package Manager เพื่อดูว่าแอปการชำระเงิน NFC เริ่มต้นส่งออก
QuickAccessWalletService
หรือไม่- หากไม่ได้ส่งออกบริการดังกล่าว ระบบจะไม่แสดง Wallet การเข้าถึงด่วน
UI ของ Wallet สำหรับการเข้าถึงด่วนจะเชื่อมโยงกับ
QuickAccessWalletService
และ เรียกใช้onWalletCardsRequested
เมธอดนี้รับออบเจ็กต์คำขอ ที่มีข้อมูลเกี่ยวกับจำนวนและขนาดของการ์ดที่สามารถระบุได้ และโค้ดเรียกกลับ โดยสามารถเรียกใช้การเรียกกลับจากเธรดเบื้องหลังได้QuickAccessWalletService
จะคำนวณการ์ดที่ต้องการแสดง จากนั้นเรียกใช้เมธอดonSuccess
ในการเรียกกลับที่ระบุ เราขอแนะนำให้บริการดำเนินการเหล่านี้ในเธรดเบื้องหลังทันทีที่การ์ดแสดงขึ้น UI ของระบบจะแจ้งให้
QuickAccessWalletService
ทราบว่ามีการเลือกการ์ดแรกโดยการเรียกonWalletCardSelected
onWalletCardSelected
จะเรียกใช้ทุกครั้งที่ผู้ใช้เลือก บัตรใหม่onWalletCardSelected
อาจเรียกใช้แม้ว่าบัตรที่เลือกในปัจจุบันจะไม่มีการเปลี่ยนแปลงก็ตาม
เมื่อผู้ใช้ปิด Wallet การเข้าถึงด่วน UI ของระบบจะแจ้ง
QuickAccessWalletService
โดยการเรียกใช้onWalletDismissed
ในตัวอย่างข้างต้น ผู้ใช้นำโทรศัพท์เข้าใกล้เครื่องชำระเงิน NFC
ขณะที่ระบบแสดง Wallet องค์ประกอบสำคัญของการจัดการการชำระเงินผ่าน 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 ขึ้นไป
ไม่จำเป็นต้องมีสิทธิ์อื่นๆ ของแอป
นอกเหนือจากสิทธิ์ที่จำเป็นในการให้บริการชำระเงินด้วยการจำลองบัตรโฮสต์
หากแอปการชำระเงิน 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
การทดสอบฟีเจอร์หลักของ Quick Access Wallet ต้องใช้
เครื่องชำระเงินผ่าน NFC (จริงหรือปลอม) และแอปชำระเงินผ่าน NFC ที่ใช้
QuickAccessWalletService
(แอป Wallet) ฟีเจอร์หลักที่ต้องทดสอบ
ได้แก่ ความพร้อมใช้งาน สถานะเริ่มต้น การเลือกบัตร และลักษณะการทำงานของหน้าจอล็อก
ความพร้อมใช้งาน
- หากแอปการชำระเงิน NFC เริ่มต้นไม่รองรับฟีเจอร์นี้ คุณจะเข้าถึง Quick Access Wallet ไม่ได้ทั้งในการตั้งค่าด่วนและหน้าจอ ล็อก
- หากแอปการชำระเงินผ่าน NFC เริ่มต้นรองรับฟีเจอร์นี้ คุณจะเข้าถึง Wallet ในการตั้งค่าด่วนได้
- หากแอปการชำระเงินผ่าน NFC เริ่มต้นรองรับฟีเจอร์นี้และหากการตั้งค่า
LOCKSCREEN_SHOW_WALLET
เป็นtrue
คุณจะเข้าถึง 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
การทดสอบฟีเจอร์หลักของ Quick Access 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 ของ Wallet สำหรับการเข้าถึงด่วน
รูปที่ 12 UI ของ Wallet ที่เข้าถึงด่วนพร้อมบัตรที่แสดง หากบัตรที่แสดงเป็นวิธีการชำระเงินแบบ NFC การถือ โทรศัพท์ไว้ใกล้กับเครื่องชำระเงินแบบ NFC จะทำให้ระบบใช้วิธีการชำระเงินนั้น และปิดมุมมองกระเป๋าเงิน
การคลิกการ์ดที่แสดงจะปิดมุมมอง Wallet และเปิด กิจกรรมโดยละเอียดของการ์ดนั้น
หาก
QuickAccessWalletService
มีบัตรหลายใบ ผู้ใช้จะปัดระหว่างบัตรได้เมนูที่ซ่อนอยู่มี 2 รายการ ได้แก่ รายการที่เปิดแอป Wallet และรายการที่เปิดหน้าจอแสดงบัตรและบัตรผ่านในการตั้งค่า
การทดสอบสถานะการล็อก
- หากโทรศัพท์ล็อกอยู่ การตั้งค่า
Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT
จะควบคุมระดับการมองเห็นของ Wallet ซึ่งควบคุมได้ในการตั้งค่า - หากโทรศัพท์ล็อกอยู่และ
POWER_MENU_LOCK_SHOW_CONTENT
เป็นfalse
ระบบจะไม่แสดง กระเป๋าสตางค์ - หากโทรศัพท์ล็อกอยู่และ
POWER_MENU_LOCK_SHOW_CONTENT
true
อยู่ ระบบจะแสดง กระเป๋าสตางค์ - การปลดล็อกโทรศัพท์ขณะที่กระเป๋าเงินแสดงอยู่บนหน้าจอล็อกจะทำให้ระบบค้นหาบัตรอีกครั้ง ซึ่งอาจส่งผลให้เนื้อหาบัตรแตกต่างกัน
การทดสอบการช่วยเหลือพิเศษ
- ผู้ใช้ TalkBack สามารถไปยังส่วนต่างๆ ของมุมมองกระเป๋าเงินได้โดยการปัดไปทางซ้ายและขวา และโดยการฟังคำอธิบายเนื้อหาของการ์ด
- การปัดไปทางซ้ายและขวาเมื่อเปิดใช้ TalkBack จะเลือกการ์ดแต่ละใบตามลำดับ ผู้ใช้ TalkBack สามารถเลือกและใช้วิธีการชำระเงินผ่าน NFC ที่เครื่องชำระเงินผ่าน NFC