2010-12-21 4 views
4

내 응용 프로그램에서는 볼륨 키 이벤트를 캡처하기 위해 onKeyDown()onKeyUp() 함수를 재정의했습니다. 응용 프로그램 볼륨을 제어하기 위해 이러한 이벤트를 사용합니다. 내 음악을 재생할 때 음악 스트림을 사용합니다. 이와 같은 이벤트를 감지하면 맞춤 토스트 (Android와 비슷한 알림)도 표시됩니다. 나는이 걸릴에 직면 해요 문제는 다음과 같습니다볼륨 키 제어

  1. 안드로이드는 항상 소리가 같은 강도로 항상 재생됩니다
  2. 해당 볼륨 키 이벤트에 소리를한다. 높은 볼륨의 큰 소리로 소리와 대한 낮은 소리 : 내가 원하는 무엇

다음과 같은 방법으로 기본 사운드가 재생되는 강도를 (또한 스트림있는 재생)을 제어하는 ​​것입니다 가능한 경우 낮은 볼륨. 방금 ​​설정 한 강도로 기본 사운드를 재생하지 못하게하고 내 사용자 지정 사운드를 재생하는 방법.

답변

0

비슷한 기능을 쓰는 이상한 이유가 있습니다. 스트림 볼륨을 높이면 Android에서 소리가 커지는 것처럼 보입니다.

am.setStreamVolume(AudioManager.STREAM_MUSIC, progress,AudioManager.FLAG_PLAY_SOUND); 

그게 내 응용 프로그램에서 사용했던 것입니다.

AudioManager am = (AlarmManager) getSystemService(AUDIO_SERVICE); 

당신이 그것을 해제해야하는지 "0"값으로 AudioManager.FLAG_PLAY_SOUND 대체 할 수있는 사운드를 비활성화하려면 : 오전는 서면에 의해 얻을 수있는 AudioManager의 인스턴스입니다.

AudioManager에서 사운드를 대체 할 수 있는지 확실하지 않지만 onKeyDown 메소드 내부에서 MediaPlayer로 해당 사용자 정의 사운드를 재생할 수는 있습니다.

희망이 도움이됩니다. 당신은 단순히이 볼륨 키 위해 호출되는 활동의 방법에 과부하 수 실제로 소리가, onKeyUp에 (...)에 재생

9

:

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP) || (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)) { 
     return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 

이 나를 위해 일을 :)