도킹 상태와 유형 확인 및 모니터링

Android 지원 기기는 여러 종류의 도크에 도킹할 수 있습니다. 여기에는 차량 도크, 홈 도크, 디지털 또는 아날로그 도크가 포함됩니다. 많은 도크가 도킹된 기기에 전원을 제공하므로 일반적으로 도크 상태는 충전 상태와 밀접하게 연결되어 있습니다.

앱은 도크 상태에서 휴대전화의 업데이트 속도에 영향을 미칩니다. 스포츠 뉴스 앱이 데스크톱 도크에 있을 때는 업데이트 빈도를 높이고 기기가 차량에 도킹되어 있으면 업데이트를 완전히 사용 중지할 수 있습니다. 반대로 백그라운드 서비스에서 교통상황을 업데이트하고 있는 경우에는 차량에 도킹되어 있을 때 업데이트를 최대화할 수도 있습니다.

또한 도크 상태는 고정 Intent로 브로드캐스트되므로 기기가 도킹되어 있는지 여부와 도킹된 경우 어떤 종류의 도크에 있는지 쿼리할 수 있습니다.

현재 도크 상태 확인

도크 상태 세부정보는 ACTION_DOCK_EVENT 작업의 고정 브로드캐스트에 추가 항목으로 포함됩니다. 고정이므로 registerReceiver()를 호출하여 null를 broadcast receiver로 전달할 수 있습니다. 다음 스니펫은 이 프로세스를 완료하는 방법을 보여줍니다.

Kotlin

val dockStatus: Intent? = IntentFilter(Intent.ACTION_DOCK_EVENT).let { ifilter ->
    context.registerReceiver(null, ifilter)
}

자바

IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
Intent dockStatus = context.registerReceiver(null, ifilter);

다음과 같이 EXTRA_DOCK_STATE 엑스트라에서 현재 도크 상태를 추출할 수 있습니다.

Kotlin

val dockState: Int = dockStatus?.getIntExtra(EXTRA_DOCK_STATE, -1) ?: -1
val isDocked: Boolean = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED

자바

int dockState -1;
if (dockStatus != null) {
  dockState = dockStatus.getIntExtra(EXTRA_DOCK_STATE, -1);
}
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;

현재 도크 유형 확인

기기가 도킹되어 있다면 다음 네 가지 유형의 도크 중 하나에 도킹할 수 있습니다.

  • 자동차
  • 데스크
  • 저사양(아날로그) 데스크
  • 고급(디지털) 데스크

마지막 두 옵션은 Android API 수준 11에서만 도입되었습니다. 따라서 디지털 방식인지 아날로그 방식인지에 관심을 가지기보다는 도크 유형에만 집중하여 세 가지를 모두 확인해보는 것이 좋습니다.

Kotlin

val isCar: Boolean = dockState == EXTRA_DOCK_STATE_CAR
val isDesk: Boolean = dockState == EXTRA_DOCK_STATE_DESK
        || dockState == EXTRA_DOCK_STATE_LE_DESK
        || dockState == EXTRA_DOCK_STATE_HE_DESK

Java

boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
                 dockState == EXTRA_DOCK_STATE_LE_DESK ||
                 dockState == EXTRA_DOCK_STATE_HE_DESK;