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

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

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

또한 도크 상태는 고정 Intent로 브로드캐스트되므로 기기가 도킹되어 있는지, 도킹되어 있다면 어떤 유형의 도크인지 쿼리할 수 있습니다.

현재 도크 상태 확인

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

Kotlin

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

Java

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

Java

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;