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 = 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
자바
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;