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