tôi đã thiết lập:Android: Media Player Thời gian phát hành
mSeekBar.setMax(mp.getDuration()); // 8480
Sau khi hoàn thành Audiofile, Những gì tôi nhận được là:
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mediaPlayer)
{
Log.e("onComplete>>", ""+mediaPlayer.getCurrentPosition());
// mediaPlayer.getCurrentPosition() = 8192
Log.e("getDuration", ""+mediaPlayer.getDuration());
// mediaPlayer.getDuration() = 8480
if(mediaPlayer.getCurrentPosition()>=mediaPlayer.getDuration())
{
// Why never get called???
}
}
});
Vì vậy, Tại sao vị trí hiện tại MediaPlayer không bao giờ đạt tổng số thời gian của tệp Audio?
Hoặc về mặt kỹ thuật chúng ta có thể nói như sau:
Why Not?
mediaPlayer.getCurrentPosition()==mediaPlayer.getDuration()
Tại sao Luôn
mediaPlayer.getCurrentPosition() < mediaPlayer.getDuration() trong OnCompletion người nghe?
Ví dụ:
Tôi có một Chơi Symbol để tiến hành khởi Player. Bây giờ, khi tôi nhấn phát biểu tượng nó sẽ chuyển đổi thành biểu tượng Tạm dừng.
Tôi có Maxduration của audiodfile.
Bây giờ tôi muốn chuyển đổi Tạm dừng biểu tượng đến Phát Ký hiệu khi tệp âm thanh được phát hoàn toàn. SO những gì tôi đang làm là kiểm tra:
if(mediaPlayer.getCurrentPosition()>=mediaPlayer.getDuration())
{
// Convert Imagview from Pause to Play
// But never get called
}
đầu ra của 'Log.i là gì ("onComplete >>", "" + mediaPlayer.getCurrentPosition()); Log.i ("getDuration", "" + mediaPlayer.getDuration()); ' –
vị trí hiện tại luôn nhỏ hơn GetDuration. –
Hmm .. Tôi tìm thấy một [vấn đề thread] (https://code.google.com/p/android/issues/detail?id=38627) cho cùng, nhưng không biết nếu có ai tìm thấy giải pháp hoặc giải thích nào được nêu ra. và [this] (http://www.anddev.org/multimedia-problems-f28/mediaplayer-getcurrentposition-t20032.html), là tốt. –