嗨我已閱讀一些post具有相同的問題,但無法找到確切的或我必須說我一直在尋找的答案。那麼我只是想知道如何獲得mediaplayer上設置的音頻文件的播放級別。我已經嘗試了int volume_level = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
,但從我看到的。我只能獲取設備上的當前音量。那麼我想達到的是添加一個動畫,隨着我的音頻播放水平。這裏是我到目前爲止的代碼:通過獲取mediaPlayer的振幅來生成進度條
播放音頻方法的調用之前:
audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
回放的方法:
public void playAudio(String record_path) throws IOException{
if(audioPlayer!=null && mpStatus == State.Paused){
/*play from paused state*/
audioPlayer.start();
mpStatus = State.Playing;
}
else
{
/*play from start of recording*/
setMediaPlayer(record_path);
audioPlayer.start();
mpStatus = State.Playing;
}
}
和螺紋:
private class playBackRunnable extends Thread {
final long start_time = System.currentTimeMillis();
public void run() {
while(chk_play.isChecked()){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
return;
} catch (Exception e) {
return;
}
final long elapsed = System.currentTimeMillis() - start_time;
final String elapsed_time = util.getAsTime((int) elapsed);
runOnUiThread(new Runnable() {
@Override
public void run() {
int volume_level = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
int amp = (int)(volume_level * 100.f)/100;
Log.v("Volume Level", String.valueOf(amp));
if(chk_play.isChecked()){
prog_volume.setProgress(amp);
//txt_rectime.setText(elapsed_time);
if(amp <= 40){
prog_volume.setProgressDrawable(getResources().getDrawable(R.drawable.progress_green));
}else if(amp <= 60){
prog_volume.setProgressDrawable(getResources().getDrawable(R.drawable.progress_yellow));
}else if(amp <= 80){
prog_volume.setProgressDrawable(getResources().getDrawable(R.drawable.progress_orange));
}else {
prog_volume.setProgressDrawable(getResources().getDrawable(R.drawable.progress_red));
}
}
}
});
}
}
}
希望有人能幫助我。提前致謝。
編輯:
新增audioPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
audioPlayer.prepare()之前,仍無法正常工作。
您是否得到任何解決方案? – user1517153
不是。但我想我可能會在下次再嘗試這樣做。 :d – KaHeL