모바일 앱에서 사운드 파일을 재생해야합니다. 볼륨 버튼을 누르면, 내 애플 리케이션을 통해 볼륨을 늘리거나 줄일 필요가있다. 미디어 플레이어를 사용하여 볼륨을 설정하기 위해 SetVolume (왼쪽, 오른쪽) 기능을 재생하고 사용하고 있습니다.내 Android 모바일 애플리케이션을 사용하여 볼륨을 데시벨로 설정하는 방법은 무엇입니까?
MediaPlayer mp;
float left = 0.0f;
float right = 0.6f;
public void OnPlay(View v){
mp = MediaPlayer.create(this, R.raw.twofiftybeep);
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// Playing the file continuously
mp.setVolume(left, right);
mp.start();
}
});
}
public void OnStop(View v){
mp.stop();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int action = event.getAction();
int keyCode = event.getKeyCode();
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
left= left + 0.05f;
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
left = left - 0.05f;
return true;
default:
return super.dispatchKeyEvent(event);
}
}
그러나 SetVolume 0.0f를 파라미터는 최소이고 1.0F가 최대이고와 1.0f 0.0f를 내지.
하지만 40dB, 50dB, 60dB 등을 설정하고 싶습니다. 모든 볼륨 버튼을 누른 상태에서 5dB를 증가 또는 감소시키고 싶습니다.
어떻게 0.0f - 1.0f 범위를 dB 값 변환으로 할 수 있습니까?
다른 방법이 있습니까?
안녕 Jaket, 나는이 전환으로 약간 혼동 스럽다. 어떻게 1.0이 0dB로 변환 될 것입니까? 왜냐하면 내가 (1.0f, 1.0f)의 볼륨을 설정하면 0dB 일 수없는 모바일 사운드를들을 수 있기 때문입니다. 예를 들어 Samsung S3 폰은 최대 81dB의 사운드를 제공합니다. API 설명에 따라 MediaPlayer.SetVolume (1.0f, 1.0f)은 휴대 전화로 최대 볼륨을 제공합니다. 모바일 하드웨어 설계에 따라 모바일마다 다를 수 있습니다. 그래서 삼성 S3 폰에서이 API를 사용한다면 ~ 81dB 정도 가깝습니다. 나는 여전히 수학적 전환 이상으로 혼란 스럽다. 내가 몇 가지 기본을 놓치면 변명해라. –
dB는 항상 상대적인 값입니다. 디지털에서는 1.0 (20 * log10 (1) == 0) 인 전체 스케일 진폭에 상대적입니다. 휴대 전화로 스피커의 출력까지 변환하려면 이득을 알아야합니다. 만약 당신이 말했듯이, S3가 풀 스케일 (0dBFS)에서 81dB의 최대 출력 (dBSPL I는 추정)을 가졌다면 당신은 간단히 81을 더할 수 있습니다 - 그래서 -5dBFS == + 76dBSPL – jaket