【发布时间】:2014-09-01 11:06:43
【问题描述】:
我正在开发一个移动应用程序,我需要在其中播放声音文件。按下音量按钮时,我需要通过我的应用程序增加/减少音量。 我正在使用媒体播放器播放并使用 SetVolume(left, right) 函数来设置音量。
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,其中 0.0f 表示最小值,1.0f 表示最大值。
但我想设置一些东西,比如 40dB、50dB、60dB 等。 每次按下音量按钮时,我都想增加或减少 5dB。
如何将 0.0f - 1.0f 范围转换为 dB 值?
还有其他最好的方法吗?
【问题讨论】:
标签: android audio android-mediaplayer android-audiomanager