2012-09-24 4 views
11

사용자가 볼륨 키를 위로 또는 아래로 누르면 내 브로드 캐스트 수신기에서이를 감지 할 수 있습니까? 전체 코드가 필요합니다. 여기볼륨 키 업/다운 용 Android BroadCastReceiver

IntentFilter filter = new IntentFilter(); 
filter.addAction("android.media.VOLUME_CHANGED_ACTION"); 

onReceive 방법은

public void onReceive(Context arg0, Intent intent) { 
     KeyEvent ke = (KeyEvent)intent.getExtras().get(Intent.EXTRA_KEY_EVENT); 
     if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP) { 
       System.out.println("I got volume up event"); 
     }else if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) { 
       System.out.println("I got volume key down event"); 
     } 
    } 

그것은 나에게 널의 KeyEvent를 제공합니다 ... 어떤 생각이 내 의도 필터입니다?

답변

11

인 텐트에는 EXTRA_KEY_EVENT를 추가 할 수 없습니다. 새 볼륨을 포함하는 추가 android.media.EXTRA_VOLUME_STREAM_VALUE가 있습니다.

int volume = (Integer)intent.getExtras().get("android.media.EXTRA_VOLUME_STREAM_VALUE"); 

이전 값을 저장하면 볼륨 높이기 또는 줄이기를 누를 수 있습니다.

+0

답장을 보내 주셔서 감사하지만 전화가 조용하거나 진동이 있거나 벨소리 볼륨이 첫 단계 일 때 동일한 볼륨 값 = 1을 부여합니다. 어떻게 내가 전화를 감지 할 수있는 조용한 또는 진동 또는 첫 번째 가치가 있습니까? –

+1

AudioManager를 사용하여 진동 모드, 자동 모드 또는 일반 모드 중 어느 모드인지 감지 할 수 있습니다. http://stackoverflow.com/questions/2048427/how-can-i-detect-whether-the-android-phone-in-silent -mode-programatically – Theus

+0

max에서 볼륨을 변경할 때 앱을 시작했지만 뮤직 플레이어가 기기에서 실행 중일 때 볼륨 변경에 대해 내 앱을 열지 않으려는 경우 도움이됩니다. –