2013-10-19 1 views
0

내 목표는 도킹 상태 변경에 반응하는 앱을 만드는 것입니다. 을 기반으로하면 ACTION_DOCK_EVENT은 끈적 거리는 방송이므로 BroadcastReceiver가 필요하지 않으므로 이는 매우 쉬운 작업입니다.핸들 도크 상태 변경

문제는 간단한 로그 메시지를 게시하거나 건배를 표시하는 것처럼 "무언가를하도록"관리하지 못하는 것입니다. 나는 문서 페이지에서 예를 주변에 fiddeling되었습니다

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

이 Eclipse를 사용 unused.I는, 사전 안드로이드 3.1부터, 내 응용 프로그램 클래스에서이 코드를 실행하려고 나에게 의도 dockStaus을 말해줍니다 리시버를 다시 부팅 할 때마다 다시 등록해야합니다.

답변

1

독 상태 세부 정보는 ACTION_DOCK_EVENT 동작의 끈적한 브로드 캐스트에 추가로 포함됩니다. 끈적 거리기 때문에 BroadcastReceiver를 등록 할 필요가 없습니다. registerReceiver()를 호출하여 다음 스 니펫에 나와있는 것처럼 브로드 캐스트 리시버로 null을 전달할 수 있습니다. 의 ACTION_DOCK_EVENT 동작이 방송

장치가 도킹 또는 도킹 해제 할 때마다
 int dockState = (dockStatus == null ? 
      Intent.EXTRA_DOCK_STATE_UNDOCKED : 
      dockStatus.getIntExtra(Intent.EXTRA_DOCK_STATE, -1)); 
     boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED; 
     boolean isCar = dockState == Intent.EXTRA_DOCK_STATE_CAR; 

입니다 :

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

은 당신의 여분 EXTRA_DOCK_STATE에서 현재 도킹 상태를 추출 할 수 있습니다. 기기의 독 상태의 변화를 모니터링하려면 애플리케이션 스 니펫 아래에 표시된대로 애플리케이션 리포지토리에 브로드 캐스트 리시버를 등록하기 만하면됩니다. action android : name = "android.intent.action.ACTION_DOCK_EVENT"

희망이 있습니다.