Acceso rápido a Billetera

La función Acceso rápido a Billetera, disponible en Android 11 permite que el usuario accede a tarjetas de pago y pases relevantes directamente desde el menú de encendido. Uso principal se incluyen la selección de la forma de pago adecuada antes de realizar una transacción en una terminal NFC y acceder rápidamente a vuelos y otros pases para los próximos eventos.

En Android 12 o versiones posteriores, la Billetera de Acceso rápido está disponible desde el panel, como se muestra en la Figura 1 y la Figura 2.

Función Acceso rápido a Billetera en panel
Figura 1: Función Acceso rápido a Billetera (dispositivo bloqueado)
Función Acceso rápido a Billetera en panel
Figura 2: Función Acceso rápido a Billetera (dispositivo desbloqueado)

En Android 11, la función está disponible en el menú de encendido, como se muestra en Figura 3:

Función de Acceso rápido a Billetera en el menú de encendido
Figura 3: Función de Acceso rápido a la Billetera .

Requisitos

Tu dispositivo debe tener NFC para usar la función Acceso rápido a la Billetera. La función se vincula a QuickAccessWalletService de la app predeterminada de pagos NFC, lo que significa que el dispositivo también debe ser compatible con NFC Emulación de tarjeta basada en host (HCE).

Descripción general de las funciones

Acceso rápido a Wallet tiene dos partes: la IU de Acceso rápido a Wallet y el proveedor de la tarjeta de Acceso rápido a la Billetera.

En Android 12 o versiones posteriores, la IU de la Billetera se ejecuta en el sistema IU y se encuentra en frameworks/base/packages/SystemUI/src/com/android/systemui/wallet En Android 11, la IU de la Billetera, ubicada en platform/packages/apps/QuickAccessWallet: debe estar instalado y estar incluido en la lista blanca.

El proveedor de la tarjeta de Acceso rápido a la Billetera es la app predeterminada de pagos NFC. Los usuarios pueden tener varias apps de pago NFC instaladas simultáneamente, pero solo la predeterminada La app de pagos NFC puede mostrar tarjetas en el menú de encendido. Puedes especificar qué tipo de NFC app de pago está configurada como predeterminada inicialmente, pero los usuarios pueden seleccionar una en Configuración. Si solo hay instalada una app de pagos NFC, esta se convierte en de forma predeterminada automáticamente (consulta CardEmulationManager)

Implementación

Para proporcionar tarjetas a la IU de Acceso rápido a Billetera, la opción de pago con NFC las apps deben implementar QuickAccessWalletService Las aplicaciones de pago deben incluir una entrada de manifiesto que anuncie el servicio.

Para garantizar que solo la IU del sistema pueda vincularse a QuickAccessWalletService, el La aplicación de pagos NFC debe solicitar la android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE. Requisitos permiso garantiza que Solo la IU del sistema se puede vincular a 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>

En el archivo en formato XML vinculado, se incluye información adicional sobre la billetera:

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

A continuación, la app de pagos debe implementar 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
    }
}

Si HostApduService comienza a controlar una transacción NFC y, como consecuencia, inicia una actividad para mostrar el progreso y el resultado del pago, debe también intenta obtener una referencia al QuickAccessWalletService vinculado y llama QuickAccessWalletService#sendEvent con un tipo de evento de TYPE_NFC_PAYMENT_STARTED Esto hace que la IU de Acceso rápido de Wallet sea descartada para permitir que el usuario vea la actividad de pago sin obstrucciones.

Para obtener documentación adicional sobre la implementación de QuickAccessWalletService, consulta QuickAccessWalletService y las TestQuickAccessWalletService Prueba de CTS

Habilita la IU de Acceso rápido a Billetera en Android 11

Si deseas configurar la Billetera de Acceso rápido para que esté disponible en el menú de encendido, sigue estos pasos: en Android 11, incluye el QuickAccessWallet objetivo en la compilación y habilitar el complemento globalactions.wallet agregando la línea en negrita de la siguiente muestra de código al 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>

Especifica la app predeterminada de pagos NFC en el archivo de configuración usando def_nfc_payment_component.

La app predeterminada de pagos NFC debe exponer QuickAccessWalletService para proporcionar tarjetas a Acceso rápido a Wallet. Si la app predeterminada de pagos NFC no exporta este servicio, la IU de la billetera está oculta.

Detalles de la implementación de QuickAccessWalletService

QuickAccessWalletService tiene tres métodos abstractos que se deben implementar: onWalletCardsRequested, onWalletCardSelected y onWalletDismissed. El del diagrama de secuencia que se muestra a continuación, se ilustra una secuencia de llamadas cuando se configura se ve inmediatamente antes de un pago NFC.

Diagrama de secuencia de Acceso rápido a Billetera

Ejemplo de secuencia de llamadas cuando se visualiza la Billetera de Acceso rápido
Figura 4: Ejemplo de la secuencia de llamadas cuando el Acceso rápido a Billetera es visto.

No todas las visualizaciones de Acceso rápido a Billetera van seguidas de un pago NFC, pero En la figura 4 anterior, se ilustran todas las capacidades de QuickAccessWalletService En este ejemplo, la tarjeta Acceso rápido a Wallet proveedor implementa los elementos indicados en azul. Se supone que el pago Las tarjetas se almacenan en el dispositivo, en una base de datos, y se puede acceder a ellas a través de un interfaz llamada PaymentCardManager. Además, se supone que una actividad La llamada PaymentActivity muestra el resultado de un pago NFC. El flujo procede de la siguiente manera:

  1. El usuario realiza un gesto para abrir la Billetera de Acceso rápido.
  2. La IU de Acceso rápido a Wallet (parte de la IU del sistema) verifica el paquete. para ver si la app predeterminada de pagos NFC exporta QuickAccessWalletService

    • Si no se exporta el servicio, la Billetera de Acceso rápido no se que se muestra.
  3. La IU de Acceso rápido de Wallet se vincula a QuickAccessWalletService y llama a onWalletCardsRequested. Este método toma un objeto de solicitud que contengan datos sobre la cantidad y el tamaño de las tarjetas que se pueden proporcionar y una devolución de llamada. Se puede llamar a la devolución de llamada desde un subproceso en segundo plano.

  4. QuickAccessWalletService procesa las tarjetas que quiere mostrar, Luego, llama al método onSuccess en la devolución de llamada proporcionada. Es Se recomendó que el servicio realizara estas acciones en un subproceso en segundo plano.

  5. Apenas se muestran las tarjetas, la IU del sistema notifica QuickAccessWalletService que indica que se seleccionó la primera tarjeta mediante una llamada onWalletCardSelected

    • Se llama a onWalletCardSelected cada vez que el usuario selecciona una nueva tarjeta.
    • Se podría llamar a onWalletCardSelected incluso si la configuración la tarjeta seleccionada no haya cambiado.
  6. Cuando el usuario descarta la Billetera de Acceso rápido, la IU del sistema notifica QuickAccessWalletService llamando a onWalletDismissed.

En el ejemplo anterior, el usuario lleva el teléfono al alcance de un pago NFC terminal mientras se muestra la billetera. Un componente clave para manejar NFC pagos es de HostApduService, que debe implementarse para procesar APDU que proporciona el lector de NFC (para obtener más información, consulta Emulación de tarjetas basada en el host). Se supone que la app de pagos inicia una actividad para mostrar el progreso y resultado de la interacción con la terminal NFC. Sin embargo, el Acceso rápido de Google Wallet se muestra en la parte superior de la ventana de la aplicación, lo que significa que la la actividad de pagos está oculta debido a la IU de Acceso rápido a Billetera. Para rectificar esto, el la app debe notificar a la IU del sistema que la IU de Acceso rápido a Wallet debe descartada. Puede hacerlo obteniendo una referencia al límite QuickAccessWalletService y llamando a sendWalletServiceEvent con el evento escribe TYPE_NFC_PAYMENT_STARTED.

Implementación de muestra de 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();
    });
  }
}

Para obtener más información sobre QuickAccessWalletService, consulta Referencia de la API de QuickAccessWalletService.

Permisos

La entrada de manifiesto para QuickAccessWalletService debe requerir la Se introdujo el permiso android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE en Android 11 Este es un permiso de nivel de firma por la IU del sistema, lo que significa que solo el proceso de la IU del sistema puede vincularse a implementaciones de QuickAccessWalletService Ten en cuenta que las apps transferidas pueden reclamar esto. permiso y obtén acceso completo a los datos de QuickAccessWalletService en los dispositivos con Android 10 o una versión anterior. Para evitar esto, se recomienda que el servicio Comprobar la versión de compilación en onCreate y habilitar el servicio solo en dispositivos con Android 11 y versiones posteriores. No hay otros permisos de la app más allá de los necesarios para proporcionar el pago por emulación de tarjeta de host de Google Cloud.

Si la app predeterminada de pagos NFC no implementa ni exporta QuickAccessWalletService, no se muestra la IU de Acceso rápido a Billetera.

Configuración de Android 12

Para habilitar o inhabilitar Acceso rápido a Billetera desde la pantalla de bloqueo, los usuarios pueden hacer lo siguiente: usa el botón de activación Mostrar billetera en Configuración > Pantalla > Pantalla de bloqueo. Para inhabilitar la billetera en el panel, los usuarios deben editar manualmente en el panel de Configuración rápida.

Activa o desactiva la función para habilitar o inhabilitar la billetera desde la pantalla de bloqueo

Figura 5: Muestra el botón de activación de la billetera en la página de bloqueo de pantalla en Configuración.

Configuración de Android 11

Los usuarios pueden desactivar la función Acceso rápido a la Billetera desde la app de Configuración. El de la página de configuración se encuentra en Configuración > Sistema > Gestos > Tarjetas y pases.

Página de configuración para habilitar o inhabilitar la función Acceso rápido a Wallet
Figura 6: página de configuración para habilitar o inhabilitar la Función Acceso rápido a Billetera

Personalización

Agrega la vista de Acceso rápido de Wallet a otra ubicación en la IU del sistema

El IU de Acceso rápido a Wallet se construye como complemento del sistema. Si bien la implementación del AOSP lo usa GlobalActionsDialog (se muestra cuando mantienes presionado el botón de encendido), puedes mover la función detrás de un gesto diferente siempre y cuando mantengas el contrato especificado por la interfaz del complemento.

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

El IU de Acceso rápido a Wallet implementa GlobalActionsPanelPlugin y PanelViewController. GlobalActionsDialog obtiene una instancia del complemento de Wallet con com.android.systemui.Dependency:

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

Después de verificar que el complemento no es nulo y que PanelViewController que muestra onPanelShown no es nulo, el diálogo adjunta el View proporcionado de getPanelContent a su propio View y proporciona devoluciones de llamada apropiadas para eventos del sistema.

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

Para quitar Acceso rápido a Billetera del menú de encendido, omite el Destino QuickAccessWallet de la compilación del sistema Cómo quitar el Acceso rápido Wallet desde el menú de encendido, pero agregarlo a una vista diferente de la IU del sistema. incluir el destino de compilación y quitar las referencias a GlobalActionsPanelPlugin de GlobalActionsImpl

Establece la configuración predeterminada

Android 12

En Android 12 o versiones posteriores, la Billetera de Acceso rápido es siempre visible en el panel de Configuración rápida. Visibilidad del Acceso rápido La Billetera en la pantalla de bloqueo está protegida por la siguiente configuración de seguridad: LOCKSCREEN_SHOW_WALLET Este parámetro de configuración controla si el Acceso rápido el ícono se muestra en la esquina inferior derecha de la pantalla de bloqueo. Este parámetro de configuración se establece en true de forma predeterminada, pero el usuario puede desactivarla en Configuración > Pantalla > Pantalla de bloqueo > Mostrar billetera.

Android 11

En Android 11, la visibilidad de Acceso rápido a la Billetera está controlada por dos parámetros de configuración seguros: GLOBAL_ACTIONS_PANEL_ENABLED y GLOBAL_ACTIONS_PANEL_AVAILABLE. El El parámetro de configuración AVAILABLE controla si la función se puede activar o desactivar en Configuración. Esta configuración se estableció en true WalletPluginService Si no se incluye QuickAccessWallet en la compilación, la configuración permanece false La configuración ENABLED se establece en true de forma predeterminada en el mismo lugar. pero el usuario puede desactivarla en Configuración. Para cambiar el comportamiento predeterminado, modificar WalletPluginService#enableFeatureInSettings

Validación

Para validar tu implementación de la Billetera de Acceso rápido, ejecuta el CTS y la implementación y pruebas. Los cambios en el complemento también deberían evaluar el estado pruebas roboleléctricas.

Pruebas del CTS

Ejecuta las pruebas del CTS ubicadas en cts/tests/quickaccesswallet

Pruebas manuales para Android 12

Para probar las funciones principales de Acceso rápido a la Billetera, se requiere un pago NFC (real o falsa) y una app de pagos NFC que implemente QuickAccessWalletService (app de billetera) Funciones principales que se deben probar incluyen: disponibilidad, estado cero, selección de tarjeta y comportamiento en la pantalla de bloqueo.

Disponibilidad

  • Si la app predeterminada de pagos NFC no admite la función, la opción No se puede acceder a la Billetera en la configuración rápida ni en el bloqueo en la pantalla.
  • Si la app predeterminada de pagos NFC admite esta función, el Acceso rápido Puedes acceder a Billetera desde el panel de configuración rápida.
  • Si la app predeterminada de pagos NFC admite la función y si la El parámetro de configuración de LOCKSCREEN_SHOW_WALLET es true, mientras que la Billetera de Acceso rápido es accesible en la pantalla de bloqueo.
  • Si la app predeterminada de pagos NFC admite la función y si la El parámetro de configuración de LOCKSCREEN_SHOW_WALLET es false, pero la Billetera de Acceso rápido no es accesible en la pantalla de bloqueo.

Sin estado

  • Si se habilita y exporta QuickAccessWalletService, pero no proporcionar ninguna tarjeta, el mosaico de la pantalla aparece como se muestra en el de la Figura 7. Si haces clic en el mosaico, se abrirá la app predeterminada de pagos NFC.

    Ejemplo de mosaico en el panel que muestra la app predeterminada de pagos NFC

    Figura 7: Ejemplo de mosaico en el panel que muestra la app predeterminada de pagos NFC.

  • Si haces clic en la vista de estado vacío como se muestra en la Figura 8, se abrirá el la app predeterminada de pagos NFC. Esta vista de estado vacío solo se muestra cuando al usuario le queda una tarjeta en la billetera, se quita la tarjeta de los detalles de la tarjeta y vuelve a la vista de billetera.

  • La pantalla de bloqueo muestra el ícono de la billetera.

Vista de estado vacía en Acceso rápido a Billetera

Figura 8: Vista de estado vacía en la IU de Acceso rápido de Wallet.

Estado distinto de cero

  • Si la app de la billetera proporciona una o más tarjetas, el mosaico en el panel aparece como se muestra en la Figura 9.

    Ejemplo de tarjeta en el panel cuando la app de la billetera tiene una o más tarjetas

    Figura 9: Ejemplo de tarjeta en el panel cuando la app de Billetera tiene una o más tarjetas.

  • Cuando se hace clic en el mosaico, se muestra un carrusel de tarjetas.

  • La pantalla de bloqueo muestra un botón que abre Acceso rápido a Wallet.

    IU de Acceso rápido a Billetera que muestra una tarjeta

    Figura 10: IU de Acceso rápido a Billetera en la que aparece una tarjeta.

  • Si la tarjeta que se muestra representa una forma de pago NFC, mantén presionado el teléfono a una terminal de pago NFC genera el uso de esa forma de pago. y se descarta la vista de billetera.

  • Si haces clic en una tarjeta que se muestra, se abrirá la actividad detallada de esa tarjeta.

  • Si QuickAccessWalletService proporciona varias tarjetas, el usuario puede deslizarse entre tarjetas.

  • El menú ampliado contiene una entrada: abre la configuración de la pantalla de bloqueo para que el usuario pueda cambiar la opción Mostrar billetera.

Pruebas de estado de bloqueo

  • Si el teléfono está bloqueado, podrás ver la billetera en la configuración rápida sombreado con la descripción Add a card si no existe ninguna tarjeta en la configuración predeterminada con la app de pagos predeterminada o desbloquear para usarla si hay tarjetas en la app de pagos predeterminada.
  • Si el teléfono está bloqueado, la visibilidad de la Billetera en la pantalla de bloqueo se controlado por la configuración Secure.LOCKSCREEN_SHOW_WALLET, que se que se controla en Configuración.
  • Si el teléfono está bloqueado, el valor de LOCKSCREEN_SHOW_WALLET es false y no tiene tarjeta en la app predeterminada de pagos NFC, la billetera no se muestra en pantalla de bloqueo.
  • Si el teléfono está bloqueado, el valor de LOCKSCREEN_SHOW_WALLET es true y no tiene tarjeta en la app predeterminada de pagos NFC, la billetera no se muestra en pantalla de bloqueo.
  • Si el teléfono está bloqueado, el valor de LOCKSCREEN_SHOW_WALLET es true y las tarjetas existen en la app predeterminada de pagos NFC, la billetera se muestra en la cerradura en la pantalla.
  • Desbloquear el teléfono mientras se muestra la billetera en la cerradura pantalla genera la solicitud de las tarjetas, lo que puede resultar en contenido diferente de la tarjeta.

Pruebas de accesibilidad

  • Los usuarios de TalkBack pueden navegar por la vista de billetera deslizando el dedo hacia la izquierda y la derecha y escucha las descripciones del contenido de las tarjetas.
  • Si deslizas el dedo hacia la izquierda y la derecha con TalkBack habilitado, se seleccionará cada tarjeta de a una. Los usuarios de TalkBack pueden seleccionar y usar una forma de pago NFC en un pago NFC terminal.

Pruebas manuales para Android 11

Para probar las funciones principales de Acceso rápido a la Billetera, se requiere un pago NFC (real o falsa) y una app de pagos NFC que implemente QuickAccessWalletService (app de billetera) Funciones principales que se deben probar incluyen disponibilidad, estado cero, selección de tarjeta y comportamiento en la pantalla de bloqueo.

Disponibilidad

  • Si la configuración de GLOBAL_ACTIONS_PANEL_ENABLED es true y la predeterminada La aplicación de pagos NFC es compatible con esta función, y se puede acceder a la Billetera de Acceso rápido.
  • Si la configuración de GLOBAL_ACTIONS_PANEL_ENABLED es false y la predeterminada La app de pagos NFC es compatible con esta función, pero la Billetera de Acceso rápido no accesible.
  • Si la configuración de GLOBAL_ACTIONS_PANEL_ENABLED es true y la predeterminada La app de pagos NFC no admite la función, el Acceso rápido a Wallet no es accesible.
  • Si la configuración de GLOBAL_ACTIONS_PANEL_ENABLED es false y la predeterminada La app de pagos NFC no admite la función, el Acceso rápido a Wallet no es accesible.

Sin estado

  • Si se habilita y exporta QuickAccessWalletService, pero no proporcionar tarjetas, la IU de Acceso rápido a Wallet muestra la vista de estado vacío.
  • Si haces clic en la vista de estado vacío, se abrirá la app de la billetera.

    Vista de estado vacía en la IU de Acceso rápido a Billetera
    Figura 11: Vista de estado vacía en Acceso rápido IU de la Billetera

Estado distinto de cero

  • Si la app de la billetera proporciona una o más tarjetas, estas se muestran en la IU de Acceso rápido a Wallet.

    IU de Acceso rápido a Billetera que muestra una tarjeta
    Figura 12: IU de Acceso rápido a Billetera con una tarjeta que se muestra.
  • Si la tarjeta que se muestra representa una forma de pago NFC, mantén presionado el teléfono a una terminal de pago NFC genera el uso de esa forma de pago. y se descarta la vista de billetera.

  • Al hacer clic en una tarjeta que se muestra, se descarta la vista de la billetera y se abre el la actividad detallada de esa tarjeta.

  • Si QuickAccessWalletService proporciona varias tarjetas, el usuario puede deslizarse entre tarjetas.

  • El menú ampliado contiene dos entradas: una que abre la app de la billetera. y uno que abre el menú Mostrar tarjetas y pases en Configuración.

Pruebas de estado de bloqueo

  • Si el teléfono está bloqueado, la visibilidad de la billetera está controlada por el Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT, que se puede que se controla en Configuración.
  • Si el teléfono está bloqueado y el valor de POWER_MENU_LOCK_SHOW_CONTENT es false, la Wallet no se muestra.
  • Si el teléfono está bloqueado y el valor de POWER_MENU_LOCK_SHOW_CONTENT es true, la Wallet.
  • Desbloquear el teléfono mientras se muestra la billetera en la cerradura la pantalla genera que las tarjetas se vuelvan a consultar, lo que puede provocar que contenido diferente de la tarjeta.

Pruebas de accesibilidad

  • Los usuarios de TalkBack pueden navegar por la vista de billetera deslizando el dedo hacia la izquierda o la derecha. y escucha las descripciones del contenido de las tarjetas.
  • Si deslizas el dedo hacia la izquierda y la derecha con TalkBack habilitado, se seleccionará cada tarjeta de a una. Los usuarios de TalkBack pueden seleccionar y usar una forma de pago NFC en un pago NFC terminal.