Ví truy cập nhanh

Tính năng Ví truy cập nhanh, có trên Android 11, cho phép người dùng truy cập vào thẻ thanh toán cũng như các thẻ và vé có liên quan ngay trong trình đơn nguồn. Mục đích sử dụng chính bao gồm chọn phương thức thanh toán phù hợp trước khi thực hiện một giao dịch tại thiết bị thanh toán NFC và nhanh chóng truy cập vào các chuyến bay cũng như các thẻ và vé khác cho các sự kiện sắp tới.

Trên Android 12 trở lên, Ví truy cập nhanh có sẵn từ bóng đổ như được minh họa trong Hình 1 và Hình 2.

Tính năng Ví truy cập nhanh trong bóng râm
Hình 1. Tính năng Ví truy cập nhanh (thiết bị đã khoá).
Tính năng Ví truy cập nhanh trong bóng râm
Hình 2. Tính năng của Wallet truy cập nhanh (thiết bị đã mở khoá).

Trên Android 11, tính năng này có trong trình đơn nguồn như minh hoạ trong Hình 3.

Tính năng Wallet truy cập nhanh trong trình đơn nguồn
Hình 3. Tính năng Ví truy cập nhanh đang hoạt động .

Yêu cầu

Thiết bị của bạn phải có NFC thì mới dùng được tính năng Ví truy cập nhanh. Tính năng liên kết với QuickAccessWalletService của ứng dụng thanh toán NFC mặc định, tức là thiết bị cũng phải hỗ trợ NFC mô phỏng thẻ dựa trên máy chủ (HCE).

Tổng quan về tính năng

Có hai phần của Wallet Truy cập nhanh: giao diện người dùng của Wallet Truy cập nhanh và nhà cung cấp thẻ Truy cập nhanh.

Trên Android 12 trở lên, giao diện người dùng Wallet chạy trong Hệ thống Giao diện người dùng và nằm trong frameworks/base/packages/SystemUI/src/com/android/systemui/wallet. Ngang bằng Android 11, giao diện người dùng Wallet, nằm trong platform/packages/apps/QuickAccessWallet, phải được cài đặt và đưa vào danh sách cho phép.

Nhà cung cấp thẻ Truy cập nhanh là ứng dụng thanh toán NFC mặc định. Người dùng có thể cài đặt đồng thời nhiều ứng dụng thanh toán NFC, nhưng chỉ có ứng dụng mặc định Ứng dụng thanh toán NFC có thể hiển thị thẻ trên trình đơn nguồn. Bạn có thể chỉ định NFC ứng dụng thanh toán được đặt làm mặc định ban đầu, nhưng người dùng có thể chọn một trong phần Cài đặt. Nếu chỉ có một ứng dụng thanh toán NFC được cài đặt, ứng dụng đó sẽ trở thành mặc định tự động (xem CardEmulationManager).

Triển khai

Để cung cấp thẻ cho giao diện người dùng của Wallet Truy cập nhanh, tính năng thanh toán qua NFC các ứng dụng phải triển khai QuickAccessWalletService. Ứng dụng thanh toán phải có một mục kê khai quảng cáo dịch vụ.

Để đảm bảo rằng chỉ Giao diện người dùng hệ thống mới có thể liên kết với QuickAccessWalletService, Ứng dụng thanh toán NFC phải yêu cầu Quyền android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE. Yêu cầu thông tin này quyền sẽ đảm bảo rằng chỉ Giao diện người dùng hệ thống mới có thể liên kết với 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>

Thông tin bổ sung về ví này có trong tệp XML liên kết:

<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"/>

Tiếp theo, ứng dụng thanh toán phải triển khai 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
    }
}

Nếu HostApduService bắt đầu xử lý giao dịch NFC và kết quả là bắt đầu một hoạt động để hiển thị tiến trình và kết quả của thanh toán, cố gắng tham chiếu đến QuickAccessWalletService ràng buộc và gọi QuickAccessWalletService#sendEvent với một loại sự kiện TYPE_NFC_PAYMENT_STARTED. Do đó, giao diện người dùng của Ví Truy cập nhanh loại bỏ, do đó giúp người dùng xem không bị che khuất của hoạt động thanh toán.

Để biết thêm tài liệu về cách triển khai QuickAccessWalletService, hãy xem QuickAccessWalletServiceTestQuickAccessWalletService thử nghiệm CTS.

Bật giao diện người dùng Wallet Truy cập nhanh trong Android 11

Cách định cấu hình để Wallet truy cập nhanh hoạt động trong trình đơn nguồn trong Android 11, hãy thêm QuickAccessWallet nhắm mục tiêu trong bản dựng và bật trình bổ trợ globalactions.wallet bằng cách thêm dòng in đậm trong mã mẫu bên dưới vào 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>

Chỉ định ứng dụng thanh toán NFC mặc định trong tệp cấu hình cài đặt đang sử dụng def_nfc_payment_component.

Ứng dụng thanh toán NFC mặc định phải hiển thị QuickAccessWalletService để cung cấp thẻ cho Ví truy cập nhanh. Nếu ứng dụng thanh toán NFC mặc định không xuất dịch vụ này, giao diện người dùng wallet bị ẩn.

Chi tiết triển khai QuickAccessWalletService

QuickAccessWalletService có 3 phương thức trừu tượng cần được triển khai: onWalletCardsRequested, onWalletCardSelectedonWalletDismissed. Chiến lược phát hành đĩa đơn sơ đồ trình tự dưới đây minh hoạ trình tự cuộc gọi khi Ví Truy cập nhanh sẽ được xem ngay trước khi thanh toán qua NFC.

Sơ đồ trình tự của Wallet truy cập nhanh

Ví dụ về trình tự cuộc gọi khi người dùng xem Ví Truy cập nhanh
Hình 4. Ví dụ về trình tự cuộc gọi khi Wallet truy cập nhanh đang xem.

Không phải tất cả các lượt xem của Ví truy cập nhanh đều hiển thị khoản thanh toán qua NFC, nhưng Hình 4 ở trên minh hoạ tất cả khả năng của QuickAccessWalletService. Trong ví dụ này, thẻ Truy cập nhanh triển khai các phần tử có đường viền màu xanh dương. Giả định rằng khoản thanh toán các thẻ được lưu trữ trên thiết bị trong cơ sở dữ liệu và được truy cập thông qua giao diện có tên PaymentCardManager. Người này giả định thêm rằng một hoạt động có tên là PaymentActivity hiển thị kết quả của một khoản thanh toán NFC. Quy trình sẽ diễn ra như sau:

  1. Người dùng thực hiện một cử chỉ để kích hoạt Ví Truy cập nhanh.
  2. Giao diện người dùng Wallet Truy cập nhanh (một phần của Giao diện người dùng hệ thống) sẽ kiểm tra gói để xem liệu ứng dụng thanh toán NFC mặc định có thể xuất QuickAccessWalletService.

    • Nếu dịch vụ không được xuất, thì Ví Truy cập nhanh được hiển thị.
  3. Giao diện người dùng của Wallet Truy cập nhanh liên kết với QuickAccessWalletService và gọi onWalletCardsRequested. Phương thức này nhận một đối tượng yêu cầu chứa dữ liệu về số lượng và kích thước của thẻ có thể được cung cấp và một lệnh gọi lại. Bạn có thể gọi lệnh gọi lại từ một luồng trong nền.

  4. QuickAccessWalletService tính toán các thẻ mà ứng dụng muốn hiển thị, sau đó gọi phương thức onSuccess trên lệnh gọi lại được cung cấp. Bây giờ đề xuất dịch vụ thực hiện các thao tác này trên luồng ở chế độ nền.

  5. Ngay khi các thẻ xuất hiện, Giao diện người dùng hệ thống sẽ thông báo cho QuickAccessWalletService mà thẻ đầu tiên được chọn bằng cách gọi onWalletCardSelected.

    • onWalletCardSelected được gọi mỗi khi người dùng chọn một thẻ mới.
    • onWalletCardSelected có thể được gọi ngay cả khi thẻ đã chọn chưa thay đổi.
  6. Khi người dùng đóng Ví truy cập nhanh, giao diện người dùng hệ thống sẽ thông báo QuickAccessWalletService bằng cách gọi onWalletDismissed.

Trong ví dụ trên, người dùng mang điện thoại đến phạm vi thanh toán qua NFC trong khi ví đang hiển thị. Một thành phần chính của việc xử lý NFC là HostApduService (phải được triển khai để xử lý APDU) do trình đọc NFC cung cấp (để biết thêm thông tin, hãy xem Mô phỏng thẻ dựa trên máy chủ). Giả định rằng ứng dụng thanh toán bắt đầu một hoạt động để cho thấy tiến trình và là kết quả của việc tương tác với thiết bị đầu cuối NFC. Tuy nhiên, tính năng Truy cập nhanh Giao diện người dùng của Wallet được hiển thị ở phía trên cùng của cửa sổ ứng dụng, có nghĩa là hoạt động thanh toán bị giao diện người dùng của Ví Truy cập nhanh che khuất. Để khắc phục vấn đề này, ứng dụng phải thông báo cho Giao diện người dùng hệ thống rằng giao diện người dùng của Ví Truy cập nhanh đã loại bỏ. Bạn có thể thực hiện việc này bằng cách tham chiếu đến giới hạn QuickAccessWalletService và gọi sendWalletServiceEvent bằng sự kiện này loại TYPE_NFC_PAYMENT_STARTED.

Triển khai mẫu 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();
    });
  }
}

Để biết thêm thông tin về QuickAccessWalletService, hãy xem Tài liệu tham khảo API QuickAccessWalletService.

Quyền

Mục kê khai cho QuickAccessWalletService phải yêu cầu Ra mắt quyền android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE trong Android 11. Đây là một quyền ở cấp độ chữ ký được giữ lại bởi Giao diện người dùng hệ thống, có nghĩa là chỉ quy trình Giao diện người dùng hệ thống mới có thể liên kết với việc triển khai QuickAccessWalletService. Xin lưu ý rằng các ứng dụng tải không qua cửa hàng có thể xác nhận quyền sở hữu phần thưởng này và có toàn quyền truy cập vào dữ liệu QuickAccessWalletService trên các thiết bị chạy Android 10 trở xuống. Để ngăn chặn điều này, dịch vụ nên kiểm tra phiên bản bản dựng trong onCreate và chỉ bật dịch vụ trên các thiết bị chạy Android 11 trở lên. Không có quyền nào khác cho ứng dụng được yêu cầu ngoài những điều cần thiết để cung cấp thanh toán mô phỏng thẻ máy chủ luôn miễn phí.

Nếu ứng dụng thanh toán NFC mặc định không triển khai hoặc xuất QuickAccessWalletService, giao diện người dùng của Wallet Truy cập nhanh không xuất hiện.

Chế độ cài đặt trong Android 12

Để bật hoặc tắt tính năng Ví truy cập nhanh trên màn hình khoá, người dùng có thể sử dụng nút bật/tắt Hiển thị ví trong phần Cài đặt > Hiển thị > Màn hình khoá. Để vô hiệu hoá ví trong ngăn, người dùng phải chỉnh sửa theo cách thủ công trong ngăn cài đặt nhanh.

Dùng nút bật/tắt để bật hoặc tắt Wallet trên màn hình khoá

Hình 5. Hiện nút bật/tắt ví trên trang Màn hình khoá trong phần Cài đặt.

Chế độ cài đặt trong Android 11

Người dùng có thể tắt tính năng Ví truy cập nhanh trong ứng dụng Cài đặt. Chiến lược phát hành đĩa đơn trang cài đặt được tìm thấy trong Cài đặt > Hệ thống > Cử chỉ > Thẻ và thẻ và vé.

Trang Cài đặt để bật hoặc tắt tính năng Ví truy cập nhanh
Hình 6. Trang Cài đặt để bật hoặc tắt Tính năng Ví truy cập nhanh.

Tuỳ chỉnh

Thêm chế độ xem Wallet truy cập nhanh vào một vị trí khác trong Giao diện người dùng hệ thống

Chiến lược phát hành đĩa đơn Giao diện người dùng của Wallet Truy cập nhanh được xây dựng dưới dạng một trình bổ trợ hệ thống. Mặc dù việc triển khai AOSP tận dụng nó trong GlobalActionsDialog (hiện khi nhấn và giữ nút nguồn), bạn có thể di chuyển tính năng này sau một cử chỉ khác miễn là bạn duy trì hợp đồng do giao diện trình bổ trợ chỉ định.

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);
  }
}

Chiến lược phát hành đĩa đơn Giao diện người dùng của Wallet Truy cập nhanh triển khai GlobalActionsPanelPluginPanelViewController. GlobalActionsDialog nhận một phiên bản của trình bổ trợ wallet bằng cách sử dụng com.android.systemui.Dependency:

GlobalActionsPanelPlugin mPanelPlugin =
    Dependency.get(ExtensionController.class)
        .newExtension(GlobalActionsPanelPlugin.class)
        .withPlugin(GlobalActionsPanelPlugin.class)
        .build()
        .get();

Sau khi kiểm tra để đảm bảo trình bổ trợ này khác rỗng và PanelViewController do onPanelShown trả về không rỗng, hộp thoại sẽ đính kèm View được cung cấp thêm getPanelContent vào View riêng và cung cấp các lệnh gọi lại thích hợp cho các sự kiện hệ thống.

// 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();

Để xoá Wallet Truy cập nhanh khỏi trình đơn nguồn, hãy bỏ qua Mục tiêu QuickAccessWallet trong bản dựng hệ thống. Để xoá tuỳ chọn Truy cập nhanh Wallet từ trình đơn nguồn nhưng thêm vào một chế độ xem khác được cung cấp bởi Giao diện người dùng hệ thống, thêm mục tiêu bản dựng và xoá các tham chiếu đến GlobalActionsPanelPlugin từ GlobalActionsImpl.

Đặt cấu hình mặc định

Android 12

Trên Android 12 trở lên, Ví Truy cập nhanh luôn hiển thị trong ngăn cài đặt nhanh. Chế độ hiển thị của tính năng Truy cập nhanh Wallet trong màn hình khoá được kiểm soát bằng chế độ cài đặt bảo mật sau đây: LOCKSCREEN_SHOW_WALLET. Chế độ cài đặt này kiểm soát việc Ví Truy cập nhanh biểu tượng này xuất hiện ở góc dưới cùng bên phải màn hình khoá. Chế độ cài đặt này được đặt thành true theo mặc định, nhưng người dùng có thể tắt trong phần Cài đặt > Hiển thị > Màn hình khoá > Hiện ví.

Android 11

Trong Android 11, chế độ hiển thị của Ví truy cập nhanh được kiểm soát bởi 2 chế độ cài đặt bảo mật: GLOBAL_ACTIONS_PANEL_ENABLEDGLOBAL_ACTIONS_PANEL_AVAILABLE. Chiến lược phát hành đĩa đơn Chế độ cài đặt AVAILABLE kiểm soát việc có thể bật và tắt tính năng này trong Cài đặt. Cài đặt này được đặt thành true bởi WalletPluginService. Nếu QuickAccessWallet không có trong bản dựng, thì chế độ cài đặt này vẫn giữ nguyên false. Theo mặc định, chế độ cài đặt ENABLED được đặt thành true ở cùng một nơi, nhưng người dùng có thể tắt trong phần Cài đặt. Để thay đổi hành vi mặc định, sửa đổi WalletPluginService#enableFeatureInSettings.

Xác nhận kết quả

Để xác thực việc triển khai Ví truy cập nhanh của bạn, hãy chạy CTS và tài liệu hướng dẫn kiểm thử. Các thay đổi đối với trình bổ trợ cũng phải thực thi kiểm tra điện tâm đồ.

Bài kiểm thử CTS

Chạy kiểm thử CTS tại cts/tests/quickaccesswallet.

Bài kiểm thử thủ công dành cho Android 12

Việc thử nghiệm các tính năng cốt lõi của Ví truy cập nhanh yêu cầu thanh toán qua NFC thiết bị thanh toán (thực hoặc giả) và ứng dụng thanh toán NFC giúp triển khai QuickAccessWalletService (ứng dụng ví). Các tính năng cốt lõi phải được kiểm thử bao gồm: tình trạng còn hàng, trạng thái trống, lựa chọn thẻ và hoạt động trên màn hình khoá.

Phạm vi cung cấp

  • Nếu ứng dụng thanh toán NFC mặc định không hỗ trợ tính năng này, Không truy cập được Wallet trong cả trình đơn cài đặt nhanh và chế độ khoá màn hình.
  • Nếu ứng dụng thanh toán mặc định qua NFC hỗ trợ tính năng này, thì tính năng Truy cập nhanh Bạn có thể truy cập Wallet trong ngăn cài đặt nhanh.
  • Nếu ứng dụng thanh toán mặc định NFC hỗ trợ tính năng này và nếu Chế độ cài đặt của LOCKSCREEN_SHOW_WALLETtrue, Ví Truy cập nhanh đang có thể truy cập trên màn hình khoá.
  • Nếu ứng dụng thanh toán mặc định NFC hỗ trợ tính năng này và nếu Chế độ cài đặt của LOCKSCREEN_SHOW_WALLETfalse, nhưng Ví Truy cập nhanh thì không có thể truy cập trên màn hình khoá.

Trạng thái 0

  • Nếu QuickAccessWalletService được bật và xuất nhưng không bật cung cấp thẻ bất kỳ, ô trong ngăn sẽ xuất hiện như trong ví dụ trong Hình 7. Khi bạn nhấp vào thẻ thông tin này, ứng dụng thanh toán mặc định có hỗ trợ NFC sẽ mở ra.

    Ô ví dụ trong ngăn cho thấy ứng dụng thanh toán NFC mặc định

    Hình 7. Ô ví dụ trong ngăn cho thấy ứng dụng thanh toán NFC mặc định.

  • Nhấp vào chế độ xem trạng thái trống như trong Hình 8 sẽ mở ứng dụng thanh toán NFC mặc định. Chế độ xem trạng thái trống này chỉ hiển thị khi người dùng còn một thẻ trong ví, hãy xoá thẻ đó khỏi phần thông tin chi tiết của thẻ rồi quay lại chế độ xem ví.

  • Màn hình khoá sẽ hiện biểu tượng chiếc ví.

Chế độ xem trạng thái trống trong Ví Truy cập nhanh

Hình 8. Chế độ xem trạng thái trống trong giao diện người dùng của Wallet Truy cập nhanh.

Trạng thái khác 0

  • Nếu ứng dụng ví cung cấp một hoặc nhiều thẻ, thì ô trong ngăn được minh hoạ trong Hình 9.

    Thẻ thông tin mẫu trong ngăn khi ứng dụng ví có một hoặc nhiều thẻ

    Hình 9. Ô ví dụ trong ngăn khi ứng dụng Wallet có một hoặc nhiều thẻ.

  • Khi nhấp vào thẻ thông tin, bạn sẽ thấy một băng chuyền thẻ.

  • Màn hình khoá hiện một nút để mở Ví Truy cập nhanh.

    Giao diện người dùng của Wallet Truy cập nhanh hiển thị một thẻ

    Hình 10. Giao diện người dùng của Wallet Truy cập nhanh, trong đó có một thẻ hiển thị.

  • Nếu thẻ được hiển thị đại diện cho một phương thức thanh toán NFC, điện thoại đến trạm thanh toán NFC, dẫn đến việc phương thức thanh toán đó đang được sử dụng và chế độ xem ví bị đóng.

  • Khi bạn nhấp vào một thẻ xuất hiện, hoạt động chi tiết trên thẻ đó sẽ mở ra.

  • Nếu QuickAccessWalletService cung cấp nhiều thẻ, người dùng có thể vuốt giữa các thẻ.

  • Trình đơn mục bổ sung có một mục: hãy mở phần cài đặt màn hình khoá để người dùng có thể thay đổi tuỳ chọn Show wallet (Hiện ví).

Kiểm thử trạng thái khoá

  • Nếu điện thoại bị khoá, thì chiếc ví sẽ xuất hiện trong trình đơn cài đặt nhanh bóng, với nội dung mô tả là Thêm thẻ nếu không có thẻ nào trong chế độ mặc định ứng dụng thanh toán hoặc mở khoá để sử dụng nếu có thẻ trong ứng dụng thanh toán mặc định.
  • Nếu điện thoại đang khoá, thì chế độ hiển thị của ví trên màn hình khoá sẽ do chế độ cài đặt Secure.LOCKSCREEN_SHOW_WALLET kiểm soát kiểm soát trong phần Cài đặt.
  • Nếu điện thoại bị khoá, LOCKSCREEN_SHOW_WALLET sẽ là false và không có thẻ nào có trong ứng dụng thanh toán NFC mặc định, nên ví sẽ không hiển thị trên màn hình khoá.
  • Nếu điện thoại bị khoá, LOCKSCREEN_SHOW_WALLET sẽ là true và không có thẻ nào có trong ứng dụng thanh toán NFC mặc định, nên ví sẽ không hiển thị trên màn hình khóa.
  • Nếu điện thoại đang khoá, LOCKSCREEN_SHOW_WALLET sẽ là true và các thẻ có trong ứng dụng thanh toán NFC mặc định, ví sẽ hiển thị trên khoá màn hình.
  • Mở khoá điện thoại trong khi ví đang hiển thị trên khoá dẫn đến việc thẻ được truy vấn lại, dẫn đến việc nội dung thẻ khác.

Kiểm thử khả năng hỗ trợ tiếp cận

  • Người dùng TalkBack có thể di chuyển giữa chế độ xem ví bằng cách vuốt sang trái và sang phải và nghe thông tin mô tả nội dung trên các thẻ.
  • Vuốt sang trái và sang phải khi TalkBack đang bật sẽ chọn lần lượt từng thẻ. Người dùng TalkBack có thể chọn và sử dụng một phương thức thanh toán NFC khi thanh toán qua NFC Terminal.

Bài kiểm thử thủ công dành cho Android 11

Việc thử nghiệm các tính năng cốt lõi của Ví truy cập nhanh yêu cầu thanh toán qua NFC thiết bị thanh toán (thực hoặc giả) và ứng dụng thanh toán NFC giúp triển khai QuickAccessWalletService (ứng dụng ví). Các tính năng cốt lõi phải được kiểm thử bao gồm tình trạng còn hàng, trạng thái ban đầu, lựa chọn thẻ và hoạt động trên màn hình khoá.

Phạm vi cung cấp

  • Nếu chế độ cài đặt GLOBAL_ACTIONS_PANEL_ENABLEDtrue và là giá trị mặc định Ứng dụng thanh toán NFC hỗ trợ tính năng này, người dùng có thể truy cập vào Ví truy cập nhanh.
  • Nếu chế độ cài đặt GLOBAL_ACTIONS_PANEL_ENABLEDfalse và là giá trị mặc định Ứng dụng thanh toán NFC hỗ trợ tính năng này, nhưng Ví truy cập nhanh thì không dễ sử dụng.
  • Nếu chế độ cài đặt GLOBAL_ACTIONS_PANEL_ENABLEDtrue và là giá trị mặc định Ứng dụng thanh toán NFC không hỗ trợ tính năng này, ví dụ: Quick Access Wallet không thể truy cập.
  • Nếu chế độ cài đặt GLOBAL_ACTIONS_PANEL_ENABLEDfalse và là giá trị mặc định Ứng dụng thanh toán NFC không hỗ trợ tính năng này, ví dụ: Quick Access Wallet không thể truy cập.

Trạng thái 0

  • Nếu QuickAccessWalletService được bật và xuất nhưng không bật khi cung cấp thẻ bất kỳ, giao diện người dùng của Wallet Truy cập nhanh sẽ hiển thị chế độ xem trạng thái trống.
  • Khi bạn nhấp vào chế độ xem trạng thái trống, ứng dụng Wallet sẽ mở ra.

    Chế độ xem trạng thái trống trong giao diện người dùng của Wallet Truy cập nhanh
    Hình 11. Chế độ xem trạng thái trống trong tính năng Truy cập nhanh Giao diện người dùng của Wallet.

Trạng thái khác 0

  • Nếu ứng dụng Wallet cung cấp một hoặc nhiều thẻ, thì các thẻ đó sẽ xuất hiện trong giao diện người dùng của Ví Truy cập nhanh.

    Giao diện người dùng của Wallet Truy cập nhanh hiển thị một thẻ
    Hình 12. Giao diện người dùng của Wallet Truy cập nhanh có một thẻ hiển thị.
  • Nếu thẻ được hiển thị đại diện cho một phương thức thanh toán NFC, điện thoại đến trạm thanh toán NFC, dẫn đến việc phương thức thanh toán đó đang được sử dụng và chế độ xem ví bị đóng.

  • Thao tác nhấp vào một thẻ được hiển thị sẽ đóng chế độ xem ví và mở hoạt động chi tiết của thẻ đó.

  • Nếu QuickAccessWalletService cung cấp nhiều thẻ, người dùng có thể vuốt giữa các thẻ.

  • Trình đơn mục bổ sung chứa hai mục nhập: một mục mở ra ứng dụng Wallet và một thao tác mở ra hộp thoại Hiển thị thẻ và thẻ và vé trong phần Cài đặt.

Kiểm thử trạng thái khoá

  • Nếu điện thoại bị khoá, khả năng hiển thị của ví sẽ do Chế độ cài đặt Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT, có thể là kiểm soát trong phần Cài đặt.
  • Nếu điện thoại bị khoá và POWER_MENU_LOCK_SHOW_CONTENT đang false, thì wallet không được hiển thị.
  • Nếu điện thoại bị khoá và POWER_MENU_LOCK_SHOW_CONTENT đang true, thì wallet được hiển thị.
  • Mở khoá điện thoại trong khi ví đang hiển thị trên khoá dẫn đến việc thẻ được truy vấn lại, dẫn đến việc nội dung thẻ khác.

Kiểm thử khả năng hỗ trợ tiếp cận

  • Người dùng TalkBack có thể chuyển đến chế độ xem ví bằng cách vuốt sang trái và sang phải và nghe thông tin mô tả nội dung trên các thẻ.
  • Vuốt sang trái và phải khi bật TalkBack sẽ chọn lần lượt từng thẻ. Người dùng TalkBack có thể chọn và sử dụng một phương thức thanh toán qua NFC khi thanh toán qua NFC thiết bị đầu cuối.