차고 모드

차고 모드는 차량에 유휴 시간을 제공하기 위해 시스템을 그렇게 해서 JobScheduler 제약 조건 유휴 상태를 실행할 수 있습니다.

차고 모드란?

스마트폰과 같이 연결된 기기에서 사용자는 시스템을 사용하여 기기가 안정적이고, 최신 상태이고, 최적화되어 있는지 확인합니다. 이 상태를 달성하기 위해 Android 플랫폼은 는 유휴 상태 시간 사용자가 작업을 수행하지 않을 때 앱이 작업을 수행할 수 있는 기간 장치와 상호 작용할 수 있습니다. 사용자가 터치하지 않으면 휴대전화는 유휴 상태로 간주됩니다. 장시간 (60분 이상) 동안 재생되고 화면이 꺼집니다. 휴대전화와 달리 자동차를 사용하지 않을 때는 꺼집니다. 즉, 자동차를 없음 유휴 시간 창 차고 모드는 자동차에서 유휴 시간을 보장합니다.

사용자가 자동차의 시동을 끄면 시스템이 차고 모드로 전환됩니다. A는 자동차가 차고 모드이고 시스템 전원이 켜져 있고 디스플레이가 꺼져 있으며 JobScheduler 큐의 유휴 작업이 실행됩니다. 차고 모드를 구현하려면 다음을 참고하세요. 기기 구현 가이드라인

기기 구현 가이드라인

차고 모드를 활성화하려면 차량 시동을 걸 때 차량 HAL (VHAL) 전송해야 함 SHUTDOWN_PREPARE 상태의 AP_POWER_STATE_REQ 매개변수를 SHUTDOWN_ONLY 또는 CAN_SLEEP로 설정합니다.

SHUTDOWN_PREPARE 상태가 유효하려면 VHAL이 AP_POWER_STATE_REQ 명령어에 두 매개변수(상태 및 추가 매개변수)를 지정해야 합니다. 이렇게 하면 기기가 차고 모드로 전환되고 이 명령어는 JobScheduler 드림 작업이 종료될 때까지 시스템이 정지 또는 종료로 진행되지 않도록 완료됩니다.

기기 구현이 Android 프레임워크에 어떻게 연결되나요?

차고 모드의 경우 프레임워크는 VHAL에 종료 시간을 연장하도록 요청합니다. 모든 작업이 실행될 때까지 이 때 시스템이 종료됩니다. CDD에 정의된 특정 상황에서 기기 구현은 시스템을 더 빨리 종료할 수 있습니다. 자세히 알아보기 Android 호환성 요구사항에 대한 자세한 내용은 Android 호환성 정의 문서 (CDD).

차고 모드가 완료되기 전에 VHAL이 시스템을 종료해야 하는 경우 VHAL은 다음을 실행할 수 있습니다. 매개변수가 다음과 같이 설정된 SHUTDOWN_PREPARE SHUTDOWN_IMMEDIATELY 또는 SLEEP_IMMEDIATELY입니다. 기기 구현은 일반적으로 오직 특정 상황에서만 이 속성을 사용할 수 있습니다. 리소스를 사용할 수 없을 때 비용을 절감할 수 있습니다 예를 들어 배터리 용량이 부족한 경우가 해당됩니다.

차고 모드

그림 1. 차고 모드 흐름

앱 개발자는 차고 모드를 어떻게 사용하나요?

앱과 서비스는 차고 모드와 직접 상호작용하지 않습니다. 대신 앱이 작업을 JobScheduler 이러한 일자리의 제약을 받는 유휴 상태는 차고 모드 중에 실행됩니다.

다음 코드는 차고 모드 중에 실행되도록 작업을 예약하는 방법을 보여 줍니다.

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

차고 모드 디버그

차고 모드를 디버그하려면 다음 단계를 따르세요.
  1. 차고 모드와 관련된 로깅 카테고리를 사용 설정하려면 다음과 같이 합니다.
    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. Logcat 출력을 검토하여 차고 모드가 시작되는지 확인합니다.
    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. 차고 모드가 종료(취소 또는 완료)되었음을 나타내는 Logcat 출력을 확인합니다.
    [GarageMode]: GarageMode was canceled
    
    드림 또는
    [GarageMode]: GarageMode completed normally
    

    차고 모드는 위에서 설명한 대로 차량의 전원 상태에 따라 다릅니다.

  4. Logcat 출력을 검토하여 올바른 전원 상태가 입력되었는지 표시합니다.
    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