Cómo mantener los hotspots entre sesiones de conducción

En esta página, se describe cómo puedes configurar a los usuarios para que mantengan hotspots entre sesiones de conducción, de manera similar a la experiencia de conducción con Wi-Fi en AAOS.

public class CarSettings {
  ...

  @SystemApi
  public static final class Global {
    ...

    /**
     * Enables persistent tethering when set to {@code "true"}.
     *
     * <p>When enabled, tethering is started when the car is started given
     * that the hotspot was enabled at shutdown and all tethering sessions
     * will remain on even if no devices are connected to it.
     *
     * <p>When disabled, hotspot will turn off automatically if no devices
     * are connected and will no longer persist through drives.
     *
     * @hide
     */
    @SystemApi
    public static final String ENABLE_PERSISTENT_TETHERING =
           "android.car.ENABLE_PERSISTENT_TETHERING";
  }
}

Para mantener la conexión compartida, usa ENABLE_PERSISTENT_TETHERING a través de la API de Settings, que también se puede usar para realizar consultas.

Permisos

El uso de la API de CarWifiManager está restringido. Este nuevo permiso se crea para proteger el acceso.

public boolean canControlPersistApSettings() { ... }

Los niveles de protección para este permiso son los siguientes:

Nuevo permiso Permiso Nivel de protección
READ_PERSIST_TETHERING_SETTINGS Firma | Con privilegios

El comportamiento de persistencia se establece de forma predeterminada como no compatible. Se configura una superposición de recursos (config_enablePersistTetheringCapabilities) para bloquear la capacidad de conservar el tethering. Para mantener de forma intencional la conexión compartida, establece el valor en true para habilitar la función además de la habilitación de la preferencia del usuario, ya que otras apps del sistema con el permiso WRITE_SECURE_SETTINGS también pueden controlar este parámetro de configuración.

La siguiente API determina si el comportamiento está habilitado. Llama a esta API antes de cambiar ENABLE_PERSISTENT_TETHERING.

/**
 * CarWifiManager provides API to allow for applications to perform Wi-Fi specific
 * operations.
 *
 * @hide
 */
@SystemApi
public final class CarWifiManager extends CarManagerBase {
 /**
  * Returns {@code true} if the persist tethering settings are able to be
  * changed.
  *
  * @hide
  */
 @SystemApi
 @RequiresPermission(Car.PERMISSION_READ_PERSIST_TETHERING_SETTINGS)
 public boolean canControlPersistApSettings() { ... }
}