page.title=도킹 상태와 유형 확인 및 모니터링
parent.title=배터리 수명 최적화
parent.link=index.html

trainingnavtop=true
previous.title= 배터리 수준 및 충전 상태 모니터링
previous.link=battery-monitoring.html
next.title= 연결 상태 확인 및 모니터링
next.link=connectivity-monitoring.html

@jd:body

<div id="tb-wrapper"> 
<div id="tb">

<h2>강의 목표</h2>
<ol>
  <li><a href="#CurrentDockState">오디오 포커스 요청</a></li>
  <li><a href="#DockType">현재 도크 유형 확인</a></li>
  <li><a href="#MonitorDockState">도크 상태 또는 유형 변경사항 모니터링</a></li>
</ol>


<h2>참고자료</h2>
<ul>
  <li><a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a>
</ul>

</div> 
</div>

<p>Android 기기는 여러 종류의 도크로 도킹될 수 있습니다. 여기에는 카폰 또는 홈 도크와 디지털 및 아날로그 도크가 포함됩니다. 많은 도크가 도킹된 기기에 전기를 공급하므로 일반적으로 충전 상태와 도크 상태는 밀접한 관련이 있습니다.</p>

<p>전화의 도크 상태가 업데이트 빈도에 어떻게 영향을 미치는지는 앱에 따라 다릅니다. 스포츠 센터 앱이라면 데스크톱 도크에서 업데이트 빈도를 높이고 카폰 도크에 연결된 경우 업데이트를 완전히 사용 중지해도 좋습니다. 반대로 교통 상황을 제공하는 앱이라면 카폰 도크에서 업데이트를 최대화해도 좋습니다.</p>

<p>도크 상태는 스티키 {@link android.content.Intent}로 브로드캐스트되어 기기가 도킹되었는지 여부와 도킹되었다면 어떤 종류의 도크인지 알아낼 수 있습니다. </p>


<h2 id="CurrentDockState">현재 도킹 상태 확인</h2> 
 
<p>도크 상태의 세부사항은 {@link android.content.Intent#ACTION_DOCK_EVENT} 액션의 스티키 브로드캐스트 내에 추가로 포함됩니다. 스티키 브로드캐스트이므로 {@link android.content.BroadcastReceiver}를 등록할 필요가 없습니다. 다음 스니펫에 표시된 브로드캐스트 수신기와 같이 간단히 {@link android.content.Context#registerReceiver registerReceiver()}를 호출하여 {@code null}에 제출할 수 있습니다. </p>

<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
Intent dockStatus = context.registerReceiver(null, ifilter);</pre>

<p>{@code EXTRA_DOCK_STATE} 추가로부터 현재 도킹 상태를 추출할 수 있습니다.<p>

<pre>int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1);
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>


<h2 id="DockType">현재 도크 유형 확인</h2> 

<p>4가지 유형의 도크가 있습니다. 
<ul><li>카폰</li>
<li>데스크</li>
<li>저가형(아날로그) 데스크</li>
<li>고가형(디지털) 데스크</li></ul></p>

<p>마지막 두 가지 옵션은 API 수준 11의 Android에만 제공되어 있으므로, 디지털 또는 아날로그에 상관하지 않고 관심 있는 세 가지 도크 유형에 대해 확인하는 것이 좋습니다.</p>

<pre>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;</pre>


<h2 id="MonitorDockState">도크 상태 또는 유형 변경사항 모니터링</h2> 

<p>도킹 상태가 바뀌면 {@link android.content.Intent#ACTION_DOCK_EVENT} 액션이 브로드캐스트됩니다. 기기의 도크 상태 변경사항을 모니터링하려면 아래에 표시된 대로 애플리케이션 매니페스트에서 브로드캐스트 리시버를 등록하세요.</p>

<pre>&lt;action android:name="android.intent.action.ACTION_DOCK_EVENT"/></pre>

<p>이전 단계에서 설명한 기술을 사용하여 리시버 구현에서 도크 유형 및 상태를 추출할 수 있습니다.</p>
