Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

차고 모드

차량에 유휴 시간의 기간을 제공하기 위해, 주차장 모드에서 작업하는 것이 깨어 있도록 시스템을 유지 JobScheduler가 와 제약 게으름을 실행할 수 있습니다.

차고 모드란 무엇입니까?

전화와 같은 연결된 장치에서 사용자는 장치가 안정적이고 최신 상태이며 최적화되어 있는지 확인하기 위해 시스템에 의존합니다. 그 상태를 달성하기 위해, 안드로이드 플랫폼은 제공 유휴 시간 사용자가 장치와 상호 작용하지 않는 경우 응용 프로그램이 작업을 수행 할 수있는 동안 창을여십시오. 사용자가 확장 된 기간 동안 만지지 않는 때 전화가 유휴 상태로 간주됩니다 (60 분 이상) 화면이 꺼집니다. 자동차는 사용하지 않는 전화는 달리, 그것은 어떤 차가 더가 없음을 의미 꺼져 유휴 시간 창을여십시오. 차고 모드는 차에서 유휴 시간을 보장합니다.

사용자가 자동차의 전원을 끄면 시스템이 차고 모드로 들어갑니다. 자동차가 차고 모드에 있는 동안 시스템 전원이 켜지고 디스플레이가 꺼지며 JobScheduler 대기열의 유휴 작업이 실행됩니다. 차고 모드를 구현하려면, 참조 장치 구현 가이드 라인 아래를.

기기 구현 가이드라인

차량을 끌 때는 차고 모드를 활성화하려면, 차량 HAL (VHAL)를 보내야합니다 AP_POWER_STATE_REQ 상태로 SHUTDOWN_PREPARE 에 파라미터 세트를 SHUTDOWN_ONLY 또는 CAN_SLEEP .

국가를 위해 SHUTDOWN_PREPARE 효과적는 VHAL는 대한 두 개의 매개 변수 (상태와 추가 매개 변수)를 지정해야합니다 AP_POWER_STATE_REQ 명령을 사용합니다. 이는 일자리 예정 검출 차고 모드, 입력 장치 수 JobScheduler를 일시 중지하거나 작업이 완료 될 때까지 종료 하나에 진행에서 시스템을 방지합니다.

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

차고 모드의 경우 프레임워크는 필요한 기간이 초과되거나 모든 작업이 실행될 때까지 시스템이 종료될 때까지 종료 시간을 연장하도록 VHAL에 요청합니다. CDD에 정의된 특정 상황에서 기기 구현은 시스템을 더 빨리 종료할 수 있습니다. (안드로이드 호환성 요구 사항에 대한 자세한 내용은 안드로이드를 참조 호환성 정의 문서 (CDD)를 하십시오.) VHAL 주차장 모드 완료되기 전에 시스템을 종료해야하는 경우 VHAL는 발행 할 수 SHUTDOWN_PREPARE 하는 파라미터 세트와 SHUTDOWN_IMMEDIATELY 또는 SLEEP_IMMEDIATELY . 장치 구현은 시스템을 계속 실행하기 위해 필요한 자원을 사용할 수 있습니다 일반적으로 할 때, 특정 상황에서 이것을 사용할 수 있습니다. 예를 들어 배터리 용량이 부족한 경우.

차고 모드

응용 프로그램 개발자는 차고 모드로 어떻게 작업합니까?

응용 프로그램 및 서비스는 차고 모드와 직접 상호 작용하지 않습니다. 대신에 일정 작업 애플 리케이션 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());