Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Modo garaje

Para proporcionar períodos de tiempo de inactividad en los vehículos, el modo Garaje mantiene despierto el sistema para que los trabajos en el JobScheduler limitados con el ocio puede ser ejecutado.

¿Qué es el modo garaje?

En dispositivos conectados, como teléfonos, los usuarios confían en el sistema para garantizar que los dispositivos sean estables, actualizados y optimizados. Para lograr ese estado, la plataforma Android proporciona un tiempo de inactividad de la ventana durante la cual las aplicaciones pueden realizar tareas cuando el usuario no lo hace interactuar con el dispositivo. Un teléfono es considerado como inactivo cuando el usuario no lo toca por tiempo prolongado (más de 60 minutos o más) y la pantalla se apaga. A diferencia de un teléfono, cuando no se está utilizando un coche, que se apaga, lo que significa que el coche no tiene tiempo de inactividad ventana. El modo de garaje garantiza el tiempo de inactividad en un automóvil.

Cuando el usuario apaga un automóvil, el sistema ingresa al modo de garaje. Mientras un automóvil está en el modo de garaje, el sistema se enciende, la pantalla se apaga y se ejecutan los trabajos inactivos en la cola de JobScheduler. Para poner en práctica el modo Garaje, consulte las directrices de implementación de dispositivos de abajo.

Pautas de implementación de dispositivos

Para activar el modo Garaje, cuando se apaga el vehículo, el HAL vehículo (Vhal) debe enviar AP_POWER_STATE_REQ con el estado SHUTDOWN_PREPARE con el conjunto de parámetros a SHUTDOWN_ONLY o CAN_SLEEP .

Para el estado SHUTDOWN_PREPARE sea eficaz, el Vhal debe especificar los dos parámetros (estado y el parámetro adicional) para el AP_POWER_STATE_REQ comando. Esto permite que el dispositivo para acceder al modo de garaje, que detecta programado puestos de trabajo en el JobScheduler y evita que el sistema de procedimiento para suspender o apagar hasta que se completen los trabajos.

¿Cómo se conectan las implementaciones de dispositivos al marco de Android?

Para el modo de garaje, el marco solicita al VHAL que extienda el tiempo de apagado hasta que se exceda la duración requerida o se hayan ejecutado todos los trabajos, momento en el que se apagará el sistema. En circunstancias específicas definidas en el CDD, las implementaciones de dispositivos pueden apagar el sistema antes. (Para más detalles sobre los requisitos de compatibilidad de Android, consulte el Android Definición de documento de compatibilidad (CDD) .) Si el Vhal debe apagar el sistema antes de que finalice modo de garaje, el Vhal puede emitir SHUTDOWN_PREPARE con el conjunto de parámetros a SHUTDOWN_IMMEDIATELY o SLEEP_IMMEDIATELY . Implementaciones dispositivo puede utilizar esta bajo circunstancias específicas solamente, por lo general cuando los recursos necesarios para mantener el sistema en funcionamiento no están disponibles. Por ejemplo, cuando la capacidad de la batería es insuficiente.

Modo garaje

¿Cómo trabajan los desarrolladores de aplicaciones con el modo Garage?

Las aplicaciones y los servicios no interactúan directamente con el modo Garage. En su lugar, las aplicaciones programar trabajos en el JobScheduler . Esos trabajos limitados por la pereza se ejecutan durante el modo de garaje.

El siguiente código muestra cómo programar un trabajo para que se ejecute durante el modo de garaje:

public class MyGarageModeJob extends JobService { ... }

Context context = ...;
int jobId = ...;

ComponentName myGarageModeJobName = new componentName(context,
                                                      MyGarageModeJob.class);

JobInfo.Builder infoBuilder = new JobInfo.Builder(jobId, myGarageModeJobName)
                    .setRequiresDeviceIdle(true);

// Example of an optional constraint:
infoBuilder.setRequiredNetworkType(NetworkType.NETWORK_TYPE_UNMETERED);

JobScheduler jobScheduler = (JobScheduler) context
                    .getSystemService(Context.JOB_SCHEDULER_SERVICE);

jobScheduler.schedule(infoBuilder.build());

Modo de depuración de garaje

Para depurar el modo de garaje:
  1. Para habilitar el registro categorías relevantes a modo de garaje:
    adb shell stop
    adb shell setprop log.tag.GarageMode VERBOSE
    adb shell setprop log.tag.Finsky VERBOSE
    adb shell setprop log.tag.CAR.POWER VERBOSE
    adb shell setprop log.tag.JobScheduler.Connectivity VERBOSE
    adb shell start
    
  2. Para revisar la salida Logcat para indicar que el modo de garaje está empezando:
    GarageMode: [Controller]: CPM state changed to SHUTDOWN_PREPARE
    GarageMode: [GarageMode]: Entering GarageMode
    GarageMode: [Controller]: Sending broadcast with action: com.android.server.jobscheduler.GARAGE_MODE_ON
    
  3. Para determinar que la producción logcat para indicar el modo Garaje está terminado (cancelado o completado):
    [GarageMode]: GarageMode was canceled
    
    o,
    [GarageMode]: GarageMode completed normally
    

    Modo Garaje depende del estado de alimentación del vehículo como se describe anteriormente.

  4. Revisar la salida Logcat para indicar la potencia correcta se introducen estados:
    CAR.POWER: starting shutdown prepare without Garage Mode
    GarageMode: [Controller]: CPM state changed to SHUTDOWN_PREPARE
    GarageMode: [GarageMode]: Entering GarageMode
    CAR.POWER: send shutdown prepare
    CAR.POWER: setPowerState=SHUTDOWN_PREPARE(7) param=0