ฟีเจอร์ Quick Access Wallet ซึ่งพร้อมใช้งานใน Android 11 จะช่วยให้ผู้ใช้เข้าถึงบัตรสำหรับชำระเงินและบัตรที่เกี่ยวข้องได้โดยตรงจากเมนูเปิด/ปิด กรณีการใช้งานหลักๆ ได้แก่ การเลือกวิธีการชำระเงินที่เหมาะสมก่อนทำธุรกรรมที่เครื่องชำระเงิน NFC และเข้าถึงเที่ยวบินและบัตรอื่นๆ สำหรับกิจกรรมที่กําลังจะจัดขึ้นอย่างรวดเร็ว
ใน Android 12 ขึ้นไป ฟีเจอร์กระเป๋าสตางค์การเข้าถึงด่วนจะพร้อมใช้งานจากแผงควบคุมที่แสดงในรูปภาพ 1 และรูปภาพ 2
![]() |
![]() |
ใน Android 11 ฟีเจอร์นี้จะพร้อมใช้งานจากเมนูพลังงานดังที่แสดงในรูปภาพ 3

ข้อกำหนด
อุปกรณ์ของคุณต้องมี NFC จึงจะใช้ฟีเจอร์การเข้าถึง Wallet ด่วนได้ ฟีเจอร์นี้จะเชื่อมโยงกับ QuickAccessWalletService
ของแอปการชำระเงิน NFC เริ่มต้น ซึ่งหมายความว่าอุปกรณ์ต้องรองรับ NFCการจําลองบัตรบนอุปกรณ์ (HCE) ด้วย
ภาพรวมของฟีเจอร์
การเข้าถึงด่วนสำหรับ Wallet ประกอบด้วย 2 ส่วน ได้แก่ UI ของการเข้าถึงด่วนสำหรับ Wallet และผู้ให้บริการบัตรการเข้าถึงด่วนสำหรับ Wallet
ใน Android 12 ขึ้นไป UI ของ Wallet จะทำงานใน System UI และอยู่ใน frameworks/base/packages/SystemUI/src/com/android/systemui/wallet
ใน Android 11 คุณต้องติดตั้งและเพิ่ม UI ของ Wallet ซึ่งอยู่ใน platform/packages/apps/QuickAccessWallet
ลงในรายการที่อนุญาต
ผู้ให้บริการบัตรใน Quick Access Wallet เป็นแอปการชำระเงิน NFC เริ่มต้น ผู้ใช้สามารถติดตั้งแอปการชำระเงิน NFC หลายแอปพร้อมกันได้ แต่มีเพียงแอปการชำระเงิน NFC เริ่มต้นเท่านั้นที่จะแสดงบัตรในเมนูพลังงานได้ คุณสามารถระบุแอปการชำระเงิน NFC ที่จะตั้งเป็นค่าเริ่มต้นได้ แต่ผู้ใช้จะเลือกแอปอื่นได้ในการตั้งค่า หากติดตั้งแอปการชำระเงิน NFC ไว้เพียงแอปเดียว แอปนั้นจะเป็นแอปเริ่มต้นโดยอัตโนมัติ (ดูหัวข้อ CardEmulationManager
)
การใช้งาน
แอปการชำระเงินผ่าน NFC ต้องใช้ QuickAccessWalletService
เพื่อแสดงบัตรใน UI ของ Wallet การเข้าถึงด่วน
แอปการชำระเงินต้องมีรายการไฟล์ 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>
ข้อมูลเพิ่มเติมเกี่ยวกับกระเป๋าสตางค์จะรวมอยู่ในไฟล์ 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 และส่งผลให้เริ่มกิจกรรมเพื่อแสดงความคืบหน้าและผลลัพธ์ของการชำระเงิน ก็ควรพยายามรับการอ้างอิงถึง QuickAccessWalletService
ที่เชื่อมโยงและเรียกใช้ QuickAccessWalletService#sendEvent
ด้วยประเภทเหตุการณ์ TYPE_NFC_PAYMENT_STARTED
ซึ่งจะปิด UI ของกระเป๋าสตางค์การเข้าถึงด่วน ทำให้ผู้ใช้เห็นกิจกรรมการชำระเงินได้อย่างชัดเจน
ดูเอกสารประกอบเพิ่มเติมเกี่ยวกับการนำ QuickAccessWalletService
ไปใช้ได้ที่
QuickAccessWalletService
และทดสอบ TestQuickAccessWalletService
CTS
เปิดใช้ UI การเข้าถึงด่วนสำหรับ Wallet ใน Android 11
หากต้องการกำหนดค่ากระเป๋าสตางค์การเข้าถึงด่วนให้พร้อมใช้งานจากเมนูพลังงานใน 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
เพื่อส่งบัตรไปยัง Quick Access Wallet หากแอปการชำระเงิน NFC เริ่มต้นไม่ได้ส่งออกบริการนี้ UI ของกระเป๋าสตางค์จะซ่อนอยู่
รายละเอียดการใช้งาน QuickAccessWalletService
QuickAccessWalletService
มีเมธอดนามธรรม 3 รายการที่ต้องนำมาใช้ ได้แก่
onWalletCardsRequested
, onWalletCardSelected
และ onWalletDismissed
แผนภาพลำดับด้านล่างแสดงลำดับการเรียกใช้เมื่อดู Wallet การเข้าถึงด่วนก่อนการชำระเงิน NFC

มุมมองของ Quick Access Wallet บางมุมมองอาจไม่ได้ตามมาด้วยการชำระเงินผ่าน NFC แต่รูปที่ 4 ด้านบนแสดงความสามารถทั้งหมดของ QuickAccessWalletService
ในตัวอย่างนี้ ผู้ให้บริการบัตรใน Quick Access Wallet ใช้องค์ประกอบที่ขีดเส้นขอบด้วยสีน้ำเงิน ระบบจะถือว่าบัตรสําหรับชําระเงินจัดเก็บอยู่ในอุปกรณ์ในฐานข้อมูลและเข้าถึงผ่านอินเทอร์เฟซชื่อ PaymentCardManager
และสมมติเพิ่มเติมว่ากิจกรรมที่ชื่อ PaymentActivity
แสดงผลลัพธ์ของการชำระเงินผ่าน NFC ขั้นตอนจะดำเนินการดังนี้
- ผู้ใช้ทำท่าทางสัมผัสเพื่อเปิด Wallet การเข้าถึงด่วน
UI ของกระเป๋าเงินการเข้าถึงด่วน (เป็นส่วนหนึ่งของ UI ของระบบ) จะตรวจสอบเครื่องมือจัดการแพ็กเกจเพื่อดูว่าแอปการชำระเงิน NFC เริ่มต้นส่งออก
QuickAccessWalletService
หรือไม่- หากไม่ได้ส่งออกบริการดังกล่าว กระเป๋าสตางค์การเข้าถึงด่วนจะไม่แสดง
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 แสดงปุ่มเปิด/ปิด Wallet ในหน้าหน้าจอล็อกในการตั้งค่า
การตั้งค่าใน Android 11
ผู้ใช้สามารถปิดฟีเจอร์ Quick Access Wallet ได้จากแอปการตั้งค่า โดยหน้าการตั้งค่าจะอยู่ในส่วนการตั้งค่า > ระบบ > ท่าทางสัมผัส > บัตรและบัตรผ่าน

การปรับแต่ง
เพิ่มมุมมองการเข้าถึงด่วนของ 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
การตรวจสอบความถูกต้อง
หากต้องการตรวจสอบการติดตั้งใช้งานกระเป๋าสตางค์การเข้าถึงด่วน ให้เรียกใช้ CTS และการทดสอบด้วยตนเอง การเปลี่ยนแปลงปลั๊กอินควรใช้การทดสอบ Robolectric ที่รวมไว้ด้วย
การทดสอบ CTS
เรียกใช้การทดสอบ CTS ที่ cts/tests/quickaccesswallet
การทดสอบด้วยตนเองสำหรับ Android 12
การทดสอบฟีเจอร์หลักของ Quick Access Wallet ต้องใช้เครื่องรับชำระเงิน NFC (จริงหรือจำลอง) และแอปการชำระเงิน NFC ที่ใช้ QuickAccessWalletService
(แอป Wallet) ฟีเจอร์หลักที่ต้องทดสอบ ได้แก่ ความพร้อมใช้งาน สถานะ Zero State การเลือกบัตร และลักษณะการทํางานของหน้าจอล็อก
ความพร้อมใช้งาน
- หากแอปการชำระเงิน NFC เริ่มต้นไม่รองรับฟีเจอร์นี้ คุณจะไม่เข้าถึง Quick Access Wallet ในการตั้งค่าด่วนหรือหน้าจอล็อกได้
- หากแอปการชำระเงิน NFC เริ่มต้นรองรับฟีเจอร์นี้ คุณจะเข้าถึง "การเข้าถึงด่วน" ของ "Wallet" ได้ในแผงการตั้งค่าด่วน
- หากแอปการชำระเงิน NFC เริ่มต้นรองรับฟีเจอร์นี้และการตั้งค่า
LOCKSCREEN_SHOW_WALLET
เป็นtrue
คุณจะเข้าถึง Google Wallet เพื่อการเข้าถึงด่วนได้ในหน้าจอล็อก - หากแอปการชำระเงิน NFC เริ่มต้นรองรับฟีเจอร์นี้และการตั้งค่า
LOCKSCREEN_SHOW_WALLET
เป็นfalse
คุณจะเข้าถึง Google Wallet เพื่อการเข้าถึงด่วนบนหน้าจอล็อกไม่ได้
สถานะศูนย์
หากเปิดใช้และส่งออก
QuickAccessWalletService
ไว้แต่ไม่ได้ระบุการ์ดใดๆ ไทล์ใน Shade จะปรากฏดังที่แสดงในตัวอย่างในรูปที่ 7 การคลิกการ์ดจะเปิดแอปการชำระเงิน NFC เริ่มต้นรูปที่ 7 ตัวอย่างการ์ดในหน้าต่างที่แสดงแอปการชำระเงิน NFC เริ่มต้น
การคลิกที่มุมมองสถานะว่างดังที่แสดงในรูปที่ 8 จะเปิดแอปการชำระเงิน NFC เริ่มต้น มุมมองสถานะว่างนี้จะแสดงขึ้นเฉพาะเมื่อผู้ใช้มีบัตรเหลืออยู่ใน Wallet ใบเดียว นำบัตรออกจากหน้ารายละเอียดบัตร แล้วกลับไปที่มุมมอง Wallet
หน้าจอล็อกจะแสดงไอคอน Wallet
รูปที่ 8 มุมมองสถานะว่างใน UI การเข้าถึงด่วนของ Wallet
สถานะไม่ใช่ 0
หากแอป Wallet มีบัตรอย่างน้อย 1 ใบ ไทล์ในเฉดสีจะปรากฏดังที่แสดงในรูปที่ 9
รูปที่ 9 ตัวอย่างการ์ดในโหมดมืดเมื่อแอป Wallet มีบัตรอย่างน้อย 1 ใบ
การคลิกการ์ดจะแสดงภาพสไลด์ของการ์ด
หน้าจอล็อกจะแสดงปุ่มที่เปิด Wallet การเข้าถึงด่วน
รูปที่ 10 UI การเข้าถึงด่วนของ Wallet ที่มีการแสดงบัตร
หากการ์ดที่แสดงเป็นวิธีการชำระเงิน NFC การถือโทรศัพท์ไว้ใกล้กับเครื่องชำระเงินแบบ NFC จะทำให้ระบบใช้วิธีการชำระเงินนั้นและปิดมุมมองกระเป๋าสตางค์
การคลิกการ์ดที่แสดงจะเปิดกิจกรรมโดยละเอียดของการ์ดนั้น
หาก
QuickAccessWalletService
มีบัตรหลายใบ ผู้ใช้จะปัดดูบัตรได้เมนูรายการเพิ่มเติมมีรายการเดียว ได้แก่ เปิดการตั้งค่าหน้าจอล็อกเพื่อให้ผู้ใช้เปลี่ยนตัวเลือกแสดง Wallet ได้
การทดสอบสถานะการล็อก
- หากโทรศัพท์ล็อกอยู่ คุณจะเห็น Wallet ในแผงการตั้งค่าด่วนพร้อมคำอธิบายว่าเพิ่มบัตรหากไม่มีบัตรในแอปการชำระเงินเริ่มต้น หรือปลดล็อกเพื่อใช้หากมีแอปการชำระเงินเริ่มต้น
- หากโทรศัพท์ล็อกอยู่ ระดับการมองเห็น Wallet ในหน้าจอล็อกจะควบคุมโดยการตั้งค่า
Secure.LOCKSCREEN_SHOW_WALLET
ซึ่งควบคุมได้ในการตั้งค่า - หากโทรศัพท์ล็อกอยู่
LOCKSCREEN_SHOW_WALLET
เป็นfalse
และไม่มีบัตรในแอปการชำระเงิน NFC เริ่มต้น Wallet จะไม่แสดงในหน้าจอล็อก - หากโทรศัพท์ล็อกอยู่
LOCKSCREEN_SHOW_WALLET
เป็นtrue
และไม่มีบัตรในแอปการชำระเงิน NFC เริ่มต้น Wallet จะไม่แสดงในหน้าจอล็อก - หากโทรศัพท์ล็อกอยู่
LOCKSCREEN_SHOW_WALLET
เป็นtrue
และมีบัตรในแอปการชำระเงิน NFC เริ่มต้น Wallet จะแสดงในหน้าจอล็อก - การปลดล็อกโทรศัพท์ขณะที่แสดง Wallet บนหน้าจอล็อกจะทำให้ระบบขอการ์ดอีกครั้ง ซึ่งอาจส่งผลให้เนื้อหาของการ์ดแตกต่างกัน
การทดสอบการช่วยเหลือพิเศษ
- ผู้ใช้ Talkback ไปยังส่วนต่างๆ ของมุมมอง Wallet ได้โดยการปัดไปทางซ้ายและขวา รวมถึงฟังคำอธิบายเนื้อหาของการ์ด
- การปัดไปทางซ้ายและขวาโดยเปิดใช้ Talkback จะเลือกการ์ดแต่ละใบทีละใบ ผู้ใช้ Talkback จะเลือกและใช้วิธีการชำระเงิน NFC ได้ที่เครื่องชำระเงิน NFC
การทดสอบด้วยตนเองสำหรับ Android 11
การทดสอบฟีเจอร์หลักของ Quick Access Wallet ต้องใช้เครื่องรับชำระเงิน NFC (จริงหรือจำลอง) และแอปการชำระเงิน NFC ที่ใช้ QuickAccessWalletService
(แอป Wallet) ฟีเจอร์หลักที่ต้องทดสอบ ได้แก่ ความพร้อมใช้งาน สถานะ Zero State การเลือกการ์ด และลักษณะการทํางานของหน้าจอล็อก
ความพร้อมใช้งาน
- หากการตั้งค่า
GLOBAL_ACTIONS_PANEL_ENABLED
เป็นtrue
และแอปการชำระเงิน NFC เริ่มต้นรองรับฟีเจอร์นี้ คุณจะเข้าถึง Wallet การเข้าถึงด่วนได้ - หากการตั้งค่า
GLOBAL_ACTIONS_PANEL_ENABLED
เป็นfalse
และแอปการชำระเงิน NFC เริ่มต้นรองรับฟีเจอร์นี้ คุณจะเข้าถึงกระเป๋าสตางค์การเข้าถึงด่วนไม่ได้ - หากการตั้งค่า
GLOBAL_ACTIONS_PANEL_ENABLED
เป็นtrue
และแอปการชำระเงิน NFC เริ่มต้นไม่รองรับฟีเจอร์นี้ คุณจะเข้าถึง Wallet เข้าถึงด่วนไม่ได้ - หากการตั้งค่า
GLOBAL_ACTIONS_PANEL_ENABLED
เป็นfalse
และแอปการชำระเงิน NFC เริ่มต้นไม่รองรับฟีเจอร์นี้ คุณจะเข้าถึง Wallet เข้าถึงด่วนไม่ได้
สถานะศูนย์
- หากเปิดใช้และส่งออก
QuickAccessWalletService
ไว้แต่ไม่ได้ระบุบัตรใดๆ UI การเข้าถึงด่วนของ Wallet จะแสดงมุมมองสถานะว่าง การคลิกมุมมองสถานะว่างจะเปิดแอป Wallet
รูปที่ 11 มุมมองสถานะว่างใน UI การเข้าถึงด่วนของ Wallet
สถานะไม่ใช่ 0
หากแอป Wallet มีบัตรอย่างน้อย 1 ใบ การ์ดจะแสดงใน UI ของ Wallet การเข้าถึงด่วน
รูปที่ 12 UI การเข้าถึงด่วนของ Wallet ที่มีการแสดงบัตร หากการ์ดที่แสดงเป็นวิธีการชำระเงิน NFC การถือโทรศัพท์ไว้ใกล้กับเครื่องชำระเงินแบบ NFC จะทำให้ระบบใช้วิธีการชำระเงินนั้นและปิดมุมมองกระเป๋าสตางค์
การคลิกการ์ดที่แสดงจะปิดมุมมองกระเป๋าสตางค์และเปิดกิจกรรมโดยละเอียดของการ์ดนั้น
หาก
QuickAccessWalletService
มีบัตรหลายใบ ผู้ใช้จะปัดดูบัตรได้เมนูรายการเพิ่มเติมมี 2 รายการ ได้แก่ รายการที่เปิดแอป Wallet และรายการที่เปิดหน้าจอแสดงบัตรและบัตรผ่านในการตั้งค่า
การทดสอบสถานะการล็อก
- หากโทรศัพท์ล็อกอยู่ ระดับการเข้าถึง Wallet จะควบคุมโดยการตั้งค่า
Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT
ซึ่งควบคุมได้ในการตั้งค่า - หากโทรศัพท์ล็อกอยู่และ
POWER_MENU_LOCK_SHOW_CONTENT
เป็นfalse
กระเป๋าสตางค์จะไม่แสดง - หากโทรศัพท์ล็อกอยู่และ
POWER_MENU_LOCK_SHOW_CONTENT
เป็นtrue
กระเป๋าสตางค์จะแสดงขึ้น - การปลดล็อกโทรศัพท์ขณะที่ Wallet แสดงอยู่บนหน้าจอล็อกจะส่งผลให้ระบบค้นหาการ์ดอีกครั้ง ซึ่งอาจส่งผลให้เนื้อหาของการ์ดแตกต่างกัน
การทดสอบการช่วยเหลือพิเศษ
- ผู้ใช้ TalkBack ไปยังส่วนต่างๆ ของมุมมอง Wallet ได้โดยการปัดไปทางซ้ายและขวา รวมถึงฟังคำอธิบายเนื้อหาของการ์ด
- การปัดไปทางซ้ายและขวาเมื่อเปิดใช้ TalkBack จะเลือกการ์ดแต่ละใบทีละใบ ผู้ใช้ TalkBack จะเลือกและใช้วิธีการชำระเงิน NFC ได้ที่เครื่องชำระเงิน NFC