Portfel z szybkim dostępem

Funkcja portfela szybkiego dostępu od Android 11 pozwala użytkownikowi uzyskać dostęp do kart płatniczych i odpowiednich biletów bezpośrednio z menu zasilania. Częste zastosowanie wyboru odpowiedniej formy płatności przed dokonaniem płatności z użyciem terminala NFC i szybkiego dostępu do lotów oraz innych kart. o nadchodzących wydarzeniach.

Na Androidzie 12 lub nowszym portfel Szybki dostęp jest dostępna w obszarze powiadomień, tak jak na ilustracjach 1 i 2.

Funkcja Szybki dostęp w cieniu
Rysunek 1. funkcja Portfela w szybkim dostępie (urządzenie zablokowane).
Funkcja Szybki dostęp w cieniu
Rysunek 2. Funkcja Szybki dostęp do Portfela (urządzenie odblokowane).

W Androidzie 11 ta funkcja jest dostępna w menu zasilania, jak pokazano na Rysunek 3.

Funkcja Szybki dostęp – Portfel w menu zasilania
Rysunek 3. Funkcja Portfela w szybkim dostępie jest aktywna

Wymagania

Aby można było korzystać z Portfela szybkiego dostępu, urządzenie musi obsługiwać komunikację NFC. Funkcja wiąże się z QuickAccessWalletService domyślnej aplikacji płatniczej NFC, co oznacza, (urządzenie musi również obsługiwać komunikację NFC) HCE (host-based card emulation, HCE);

Omówienie funkcji

Portfel Szybki dostęp składa się z dwóch części: interfejsu Portfela szybkiego dostępu oraz dostawcy karty Portfela szybkiego dostępu.

Na Androidzie 12 lub nowszym interfejs Portfela działa w systemie interfejsu użytkownika i znajduje się w: frameworks/base/packages/SystemUI/src/com/android/systemui/wallet W Android 11, interfejs Portfela, który znajduje się na platform/packages/apps/QuickAccessWallet musi zostać zainstalowana i umieszczona na białej liście.

Dostawca karty Portfela szybkiego dostępu to domyślna aplikacja płatnicza NFC. Użytkownicy mogą mieć zainstalowanych wiele aplikacji do płatności z użyciem NFC, ale tylko domyślne. Aplikacja płatnicza NFC może wyświetlać karty w menu zasilania. Możesz określić, która komunikacja NFC aplikacja płatnicza jest początkowo domyślna, ale użytkownicy mogą wybrać inną aplikację w Ustawieniach. Jeśli zainstalowana jest tylko jedna aplikacja płatnicza z użyciem NFC, staje się ona domyślnie (zobacz CardEmulationManager).

Implementacja

Aby udostępnić karty w interfejsie Portfela szybkiego dostępu, płatność NFC muszą zaimplementować aplikacje QuickAccessWalletService Aplikacje do wykonywania płatności muszą zawierać wpis w pliku manifestu reklamujący tę usługę.

Aby mieć pewność, że tylko interfejs systemu może być powiązany z polem QuickAccessWalletService, Aplikacja płatnicza NFC musi wymagać: android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE. To wymaganie daje gwarancję, tylko interfejs systemu może powiązać z elementem 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>

Dodatkowe informacje o portfelu znajdują się w połączonym pliku 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"/>

Następnie aplikacja płatnicza musi zaimplementować 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
    }
}

Jeśli HostApduService zacznie obsługiwać transakcję NFC i w rezultacie rozpoczyna aktywność, aby wyświetlić postęp i wynik płatności, również spróbuj uzyskać odwołanie do powiązanego elementu QuickAccessWalletService i wywołaj QuickAccessWalletService#sendEvent z typem zdarzenia TYPE_NFC_PAYMENT_STARTED Sprawia to, że interfejs Portfela w szybkim dostępie są zamykane, dzięki czemu użytkownik może nie przesłonić procesu płatności.

Dodatkową dokumentację dotyczącą wdrażania funkcji QuickAccessWalletService znajdziesz tutaj: QuickAccessWalletService oraz TestQuickAccessWalletService test CTS.

Włączanie interfejsu Portfela w ramach szybkiego dostępu na Androidzie 11

Aby skonfigurować Portfel szybkiego dostępu, aby był dostępny w menu zasilania w Androidzie 11 dodaj QuickAccessWallet w kompilacji i włącz wtyczkę globalactions.wallet, dodając pogrubiony wiersz w przykładowym kodzie poniżej do overlay/frameworks/base/packages/SystemUI/res/values/config.xml.

&#x3C;resources>
    ...
    &#x3C;!-- SystemUI Plugins that can be loaded on user builds. -->
    &#x3C;string-array name="config_pluginWhitelist" translatable="false">
        &#x3C;item>com.android.systemui</item>
        &#x3C;item>com.android.systemui.plugin.globalactions.wallet</item>
    &#x3C;/string-array>
&#x3C;/resources>

Określ domyślną aplikację płatniczą NFC w plik konfiguracji ustawień za pomocą funkcji def_nfc_payment_component.

Domyślna aplikacja płatnicza NFC musi udostępniać QuickAccessWalletService aby udostępnić karty do Portfela szybkiego dostępu. Jeśli domyślna aplikacja płatnicza NFC nie eksportuje tej usługi, interfejs Portfela jest ukryty.

Szczegóły implementacji usługi QuickAccessWalletService

QuickAccessWalletService udostępnia 3 abstrakcyjne metody, które należy wdrożyć: onWalletCardsRequested, onWalletCardSelected i onWalletDismissed. schemat sekwencji poniżej przedstawia sekwencję wywołań, gdy portfel szybkiego dostępu jest sprawdzana bezpośrednio przed płatnością NFC.

Schemat sekwencji do Portfela szybkiego dostępu

Przykładowa sekwencja wywołań, gdy wyświetlany jest Portfel szybkiego dostępu
Rysunek 4. Przykładowa sekwencja wywołań, gdy

Nie po wszystkich wyświetleniach Portfela szybkiego dostępu następuje płatność przez NFC, Rysunek 4 powyżej ilustruje wszystkie możliwości QuickAccessWalletService W tym przykładzie: dostawca stosuje elementy zaznaczone na niebiesko. Zakładamy, że płatność są przechowywane na urządzeniu w bazie danych i można uzyskać do nich dostęp interfejsu o nazwie PaymentCardManager. Zakładamy też, że działanie PaymentActivity pokazuje wynik płatności z użyciem NFC. Sposób działania wygląda tak:

  1. Użytkownik wykonuje gest, aby otworzyć Portfel szybkiego dostępu.
  2. Interfejs Portfela szybkiego dostępu (część interfejsu systemu) sprawdza pakiet by sprawdzić, czy eksportowana jest domyślna aplikacja płatnicza NFC QuickAccessWalletService

    • Jeśli usługa nie zostanie wyeksportowana, Portfel szybkiego dostępu nie zostanie wyeksportowany wyświetlenie.
  3. Interfejs Portfela Szybki dostęp jest powiązany z QuickAccessWalletService oraz dzwoni pod numer onWalletCardsRequested. Ta metoda przyjmuje obiekt żądania zawierające dane o liczbie i rozmiarze dostępnych kart. i oddzwonienie. Wywołanie zwrotne można wywołać z wątku w tle.

  4. QuickAccessWalletService oblicza karty, które chce wyświetlić, a następnie wywołuje metodę onSuccess w podanym wywołaniu zwrotnym. Jest zalecił wykonanie tych działań przez usługę w wątku w tle.

  5. Gdy tylko karty się wyświetlą, interfejs systemu powiadomi o tym QuickAccessWalletService o tym, że wywołano pierwszą kartę onWalletCardSelected

    • Funkcja onWalletCardSelected jest wywoływana za każdym razem, gdy użytkownik wybierze opcję nową kartę.
    • Funkcja onWalletCardSelected może zostać wywołana nawet wtedy, gdy obecnie Wybrana karta nie uległa zmianie.
  6. Gdy użytkownik zamknie portfel szybkiego dostępu, interfejs systemu powiadomi go o tym QuickAccessWalletService, dzwoniąc pod numer onWalletDismissed.

W powyższym przykładzie użytkownik ustawia telefon w zasięgu płatności NFC. w dowolnym momencie wyświetlania portfela. Kluczowy element obsługi NFC Płatności to HostApduService, które należy wdrożyć, aby przetwarzać oferty na Androida dostarczany przez czytnik NFC (więcej informacji znajdziesz w Emulacja kart hosta). Zakładamy, że aplikacja płatnicza rozpoczyna aktywność, aby wyświetlić postęp w wyniku interakcji z terminalem NFC. Jednak Szybki dostęp U góry okna aplikacji wyświetla się interfejs Portfela, co oznacza, że aktywność związana z płatnościami jest zasłonięta przez interfejs Portfela w szybkim dostępie. Aby to naprawić, aplikacja musi powiadomić interfejs systemu o tym, że powinien odrzucono. Można to zrobić, uzyskując odwołanie do granicy QuickAccessWalletService i wywołuję sendWalletServiceEvent ze zdarzeniem wpisz TYPE_NFC_PAYMENT_STARTED.

Przykładowa implementacja 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();
    });
  }
}

Więcej informacji na temat QuickAccessWalletService: Dokumentacja API QuickAccessWalletService.

Uprawnienia

Wpis w pliku manifestu dotyczący domeny QuickAccessWalletService musi wymagać atrybutu Wprowadzono uprawnienie android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE Android 11. Posiadane jest uprawnienie na poziomie podpisu przez interfejs systemu, co oznacza, że tylko proces interfejsu systemu może powiązać z implementacjami QuickAccessWalletService Pamiętaj, że aplikacje zainstalowane z innego urządzenia mogą zgłosić własność uprawnienia i pełny dostęp do danych QuickAccessWalletService na urządzeniach z Androidem 10 lub starszym. Aby temu zapobiec, zaleca się, aby usługa sprawdź wersję kompilacji w onCreate i włącz usługę tylko na urządzeniach z Androidem 11 lub nowszym. Brak innych uprawnień aplikacji są wymagane oprócz tych niezbędnych do obsługi płatności emulacją karty hosta usług Google.

Jeśli domyślna aplikacja płatnicza z użyciem NFC nie jest zaimplementowana lub eksportowana QuickAccessWalletService, interfejs Portfela w szybkim dostępie nie jest widoczny.

Ustawienia w Androidzie 12

Aby włączyć lub wyłączyć Portfel z szybkim dostępem na ekranie blokady, użytkownicy mogą: użyj przełącznika Pokaż portfel w Ustawieniach > Wyświetlacz > Ekran blokady Aby wyłączyć portfel w cieniu, użytkownicy muszą ręcznie edytować w sekcji Szybkie ustawienia.

Przełącz, aby włączyć lub wyłączyć portfel na ekranie blokady

Rysunek 5. Pokaż przełącznik portfela na stronie Ekran blokady w Ustawieniach.

Ustawienia w Androidzie 11

Użytkownicy mogą wyłączyć funkcję Portfela szybkiego dostępu w aplikacji Ustawienia. strona ustawień znajduje się w Ustawienia > System > Gesty > Karty i .

Strona ustawień umożliwiająca włączanie i wyłączanie funkcji Portfela szybkiego dostępu
Rysunek 6. Strona ustawień umożliwiająca włączenie lub wyłączenie Funkcja Szybki dostęp: Portfel.

Dostosowywanie

Dodaj widok Portfela Szybki dostęp do innej lokalizacji w interfejsie systemu

Interfejs Portfela w szybkim dostępie została stworzona wtyczka systemowa. Chociaż implementacja AOSP korzysta z niego GlobalActionsDialog (widoczne po długim naciśnięciu przycisku zasilania) możesz przenieść funkcję za innym gestem. tak długo, jak będziesz przestrzegać umowy określonej przez interfejs wtyczki.

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

Interfejs Portfela w szybkim dostępie implementuje GlobalActionsPanelPlugin i PanelViewController. GlobalActionsDialog pobiera instancję wtyczki portfela za pomocą funkcji com.android.systemui.Dependency:

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

Po sprawdzeniu, czy wtyczka nie ma wartości null i czy PanelViewController zwracana przez funkcję onPanelShown ma wartość inną niż null, okno zawiera dołączone View przez getPanelContent do jej własnej wartości View i wyświetla odpowiednie wywołania zwrotne dla zdarzeń systemowych.

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

Aby usunąć Portfel szybkiego dostępu z menu zasilania, pomiń QuickAccessWallet cel z kompilacji systemu. Aby usunąć Szybki dostęp z menu zasilania, ale dodaj go w innym widoku interfejsu systemu uwzględnij cel kompilacji i usuń odwołania do GlobalActionsPanelPlugin od GlobalActionsImpl

Ustaw konfiguracje domyślne

Android 12

Na Androidzie 12 i nowszych Portfel z szybkim dostępem jest zawsze widoczne w obszarze szybkich ustawień. Widoczność Szybkiego dostępu Portfel na ekranie blokady jest objęty tym bezpiecznym ustawieniem: LOCKSCREEN_SHOW_WALLET To ustawienie określa, czy Portfel z szybkim dostępem jest widoczna w prawym dolnym rogu ekranu blokady. Obecne ustawienie: true (domyślnie), ale użytkownik może je wyłączyć w Ustawieniach > Wyświetlacz > Ekran blokady > Pokaż portfel.

Android 11

W Androidzie 11 widoczność Portfela w Szybkim dostępie jest ograniczona przez 2 bezpieczne ustawienia: GLOBAL_ACTIONS_PANEL_ENABLED i GLOBAL_ACTIONS_PANEL_AVAILABLE. Ustawienie AVAILABLE określa, czy tę funkcję można włączać i wyłączać w Ustawienia. To ustawienie ma wartość true przez użytkownika WalletPluginService Jeśli w kompilacji nie uwzględniono QuickAccessWallet, ustawienie się nie zmieni false Ustawienie ENABLED ma w tym samym miejscu domyślną wartość true. ale użytkownik może je wyłączyć w Ustawieniach. Aby zmienić działanie domyślne: modyfikuj: WalletPluginService#enableFeatureInSettings.

Weryfikacja

Aby sprawdzić poprawność implementacji Portfela szybkiego dostępu, uruchom CTS i ręcznie testów. Zmiany wtyczki powinny uwzględniać również dołączone testów roboelektrycznych.

Testy CTS

Uruchom testy CTS na stronie cts/tests/quickaccesswallet

Testy ręczne na Androidzie 12

Testowanie podstawowych funkcji portfela szybkiego dostępu wymaga płatności NFC terminala (prawdziwego lub fałszywego) oraz aplikacji płatniczej z NFC, QuickAccessWalletService (aplikacja portfela). Główne funkcje, które należy przetestować m.in. dostępność, stan zero, wybór karty i działanie ekranu blokady.

Dostępność

  • Jeśli domyślna aplikacja płatnicza NFC nie obsługuje tej funkcji, Portfel nie jest dostępny ani w szybkich ustawieniach, ani w blokadzie ekranu.
  • Jeśli domyślna aplikacja płatnicza NFC ją obsługuje, Portfel jest dostępny w sekcji Szybkich ustawień.
  • Jeśli domyślna aplikacja płatnicza NFC ją obsługuje, Ustawienie LOCKSCREEN_SHOW_WALLET ma wartość true, a Portfel Szybki dostęp to dostępne na ekranie blokady.
  • Jeśli domyślna aplikacja płatnicza NFC ją obsługuje, Ustawienie LOCKSCREEN_SHOW_WALLET ma wartość false, a Portfel Szybki dostęp – nie dostępne na ekranie blokady.

Stan zerowy

  • Jeśli usługa QuickAccessWalletService jest włączona i wyeksportowana, ale nie jest ani karty, kafelek w cieniu jest widoczny przykład na rys. 7. Kliknięcie kafelka powoduje otwarcie domyślnej aplikacji płatniczej przez NFC.

    Przykładowy kafelek w cieniu z domyślną aplikacją płatniczą NFC

    Rysunek 7. Przykładowy kafelek w cieniu przedstawiający domyślną aplikację płatniczą NFC.

  • Kliknięcie pustego widoku stanu, jak pokazano na rys. 8, powoduje otwarcie domyślną aplikacją płatniczą NFC. Pusty widok stanu jest wyświetlany tylko wtedy, gdy użytkownik ma jedną kartę w portfelu, usuwa ją ze szczegółów karty a następnie do widoku portfela.

  • Na ekranie blokady widoczna jest ikona portfela.

Pusty widok stanu w Portfelu szybkiego dostępu

Rysunek 8. Pusty widok stanu w interfejsie Portfela szybkiego dostępu.

Stan inny niż zero

  • Jeśli w aplikacji portfela dostępnych jest co najmniej 1 karta, kafelek w cieniu jak pokazano na rys. 9.

    Przykładowy kafelek w cieniu, gdy aplikacja portfela ma co najmniej 1 kartę

    Rysunek 9. Przykładowy kafelek w cieniu, gdy aplikacja portfela ma co najmniej 1 kartę.

  • Kliknięcie kafelka powoduje wyświetlenie karuzeli kart.

  • Ekran blokady pokazuje przycisk otwierający Portfel szybkiego dostępu.

    Widok interfejsu Portfela w szybkim dostępie z wyświetloną kartą

    Rysunek 10. Widok interfejsu Portfela w Szybkim dostępie z wyświetloną kartą.

  • Jeśli wyświetlana karta reprezentuje formę płatności z użyciem NFC, przytrzymaj gdy zbliżysz telefon do terminala płatniczego, użyj tej formy płatności a widok portfela zostanie zamknięty.

  • Kliknięcie wyświetlonej karty otwiera szczegółową aktywność związaną z tą kartą.

  • Jeśli QuickAccessWalletService dostarczył(a) kilka kart, użytkownik może przesuwać karty.

  • Rozszerzone menu zawiera jeden wpis: otwórz ustawienia ekranu blokady, użytkownik może zmienić opcję Pokaż portfel.

Testy stanu blokady

  • Jeśli telefon jest zablokowany, portfel jest widoczny w szybkich ustawieniach Obszar roboczy z opisem Dodaj kartę, jeśli domyślnie nie ma karty. w aplikacji płatniczej lub odblokuj, aby używać, jeśli w domyślnej aplikacji płatniczej są karty.
  • Jeśli telefon jest zablokowany, widoczność portfela na ekranie blokady będzie zależy od ustawienia Secure.LOCKSCREEN_SHOW_WALLET, które jest możesz zmienić w Ustawieniach.
  • Jeśli telefon jest zablokowany, karta LOCKSCREEN_SHOW_WALLET jest false i nie ma karty znajduje się w domyślnej aplikacji płatniczej NFC, portfel nie będzie widoczny na ekranu blokady.
  • Jeśli telefon jest zablokowany, karta LOCKSCREEN_SHOW_WALLET jest true i nie ma karty znajduje się w domyślnej aplikacji płatniczej NFC, portfel nie będzie widoczny na ekranu blokady.
  • Jeśli telefon jest zablokowany, karta LOCKSCREEN_SHOW_WALLET jest true, a karty w domyślnej aplikacji płatniczej NFC, portfel jest widoczny na zamku ekranu.
  • odblokowywanie telefonu, gdy portfel jest widoczny na zamku. powoduje ponowne wysłanie zapytań o karty, co może spowodować różne treści karty.

Testy ułatwień dostępu

  • Użytkownicy TalkBack mogą poruszać się po widoku portfela, przesuwając palcem w lewo i w prawo oraz słuchanie opisów treści na kartach.
  • Przesuwanie palcem w lewo i w prawo przy włączonej funkcji TalkBack powoduje kolejne karty. Użytkownicy TalkBack mogą wybrać i używać formy płatności NFC podczas płatności z użyciem NFC złącze.

Testy ręczne na Androidzie 11

Testowanie podstawowych funkcji portfela szybkiego dostępu wymaga płatności NFC terminala (prawdziwego lub fałszywego) oraz aplikacji płatniczej z NFC, QuickAccessWalletService (aplikacja portfela). Główne funkcje, które należy przetestować obejmują dostępność, stan zero, wybór karty i działanie ekranu blokady.

Dostępność

  • Jeśli GLOBAL_ACTIONS_PANEL_ENABLED ma wartość true i ustawienie domyślne Aplikacja do płatności NFC obsługuje tę funkcję, a portfel Szybki dostęp jest dostępny.
  • Jeśli GLOBAL_ACTIONS_PANEL_ENABLED ma wartość false i ustawienie domyślne Aplikacja do płatności NFC obsługuje tę funkcję, a portfel szybkiego dostępu nie i łatwo dostępnych rozwiązań.
  • Jeśli GLOBAL_ACTIONS_PANEL_ENABLED ma wartość true i ustawienie domyślne Aplikacja płatnicza z użyciem NFC nie obsługuje tej funkcji – portfela szybkiego dostępu nie są dostępne.
  • Jeśli GLOBAL_ACTIONS_PANEL_ENABLED ma wartość false i ustawienie domyślne Aplikacja płatnicza z użyciem NFC nie obsługuje tej funkcji – portfela szybkiego dostępu nie są dostępne.

Stan zerowy

  • Jeśli usługa QuickAccessWalletService jest włączona i wyeksportowana, ale nie jest ani karty, interfejs Portfela w szybkim dostępie wyświetli pusty widok stanu.
  • Kliknięcie pustego widoku stanu otwiera aplikację portfela.

    Pusty widok stanu w interfejsie Portfela szybkiego dostępu
    Rysunek 11. Pusty widok stanu w Szybkim dostępie Interfejs Portfela.
    .

Stan inny niż zero

  • Jeśli aplikacja Portfel obsługuje co najmniej jedną kartę, zostaną one wyświetlone. w interfejsie Portfela szybkiego dostępu.

    Widok interfejsu Portfela w szybkim dostępie z wyświetloną kartą
    Rysunek 12. Interfejs Portfela Szybki dostęp z kartą
    .
  • Jeśli wyświetlana karta reprezentuje formę płatności z użyciem NFC, przytrzymaj gdy zbliżysz telefon do terminala płatniczego, użyj tej formy płatności a widok portfela zostanie zamknięty.

  • Kliknięcie wyświetlanej karty powoduje zamknięcie widoku portfela i otwarcie szczegółowe dane o aktywności związanej z tą kartą.

  • Jeśli QuickAccessWalletService dostarczył(a) kilka kart, użytkownik może przesuwać karty.

  • Rozszerzone menu zawiera dwie pozycje: jedną otwierającą aplikację Portfel i otwierające Pokaż karty karty w Ustawieniach.

Testy stanu blokady

  • Gdy telefon jest zablokowany, widoczność portfela jest określana przez Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT, którym może być możesz zmienić w Ustawieniach.
  • Jeśli telefon jest zablokowany, a POWER_MENU_LOCK_SHOW_CONTENT ma stan false, nie jest wyświetlany.
  • Jeśli telefon jest zablokowany, a POWER_MENU_LOCK_SHOW_CONTENT ma stan true, Portfel Google jest wyświetlany.
  • odblokowywanie telefonu, gdy portfel jest widoczny na zamku. powoduje ponowne wysłanie zapytania do karty, co może spowodować różne treści karty.

Testy ułatwień dostępu

  • Użytkownicy TalkBack mogą poruszać się po widoku portfela, przesuwając palcem w lewo i w prawo oraz słuchanie opisów treści na kartach.
  • Przesunięcie palcem w lewo i w prawo przy włączonym TalkBack powoduje kolejne karty. Użytkownicy TalkBack mogą wybrać formę płatności z NFC i z niej korzystać podczas płatności z użyciem NFC złącze.