[英]Audio file not playing with mediaController?
嘗試使用MediaController通過URL播放音頻文件
但是我得到了錯誤:
09-11 10:28:23.970:E / MediaPlayer(912):嘗試在沒有有效Mediaplayer的情況下調用getDuration 09-11 10:28:23.970:E / MediaPlayer(912):錯誤(-38,0)09-11 10:28:23.990:E / MediaPlayer(912):嘗試在錯誤狀態下執行seekTo:mPlayer = 0x5d425340,mCurrentState = 0
我在SO上找到了各種答案,但沒有解決。 我嘗試調用getDuration()
在onPrepared()
mMediaPlayer = new MediaPlayer();
mMediaController = new MediaController(this);
mMediaController.setMediaPlayer(TextToSpeechActivity.this);
mMediaController.setAnchorView(findViewById(R.id.audioView));
try {
mMediaPlayer.setDataSource(getSoundUrl());
mMediaPlayer.prepare();
} catch (IOException e) {
Log.e("PlayAudioDemo", "Could not open file for playback.", e);
}
mMediaPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mHandler.post(new Runnable() {
public void run() {
//did not help
int duration = mMediaPlayer.getDuration();
mMediaController.show(10000);
mMediaPlayer.start();
}
});
}
});
getSoundUrl()
將URL返回到getSoundUrl()
wav),它可以工作,因為如果不實現媒體控制器,則歌曲會播放。 代碼很長,所以讓我知道我需要添加哪一部分。
我設法解決了myslef:
我添加了更多調試:
try {
mMediaPlayer.setDataSource(getSoundUrl());
mMediaPlayer.prepare();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
然后,不是使用setOnPreparedListener()
設置setOnPreparedListener()
,而是在Activity中實現了OnPreparedListener,如下所示:
public class TextToSpeechActivity
extends FragmentActivity implements MediaPlayerControl, OnPreparedListener {
然后onPrepared()
:
public void onPrepared(MediaPlayer mediaPlayer) {
Log.d("mylog", "onPrepared");
mMediaController.setMediaPlayer(this);
mMediaController.setAnchorView(findViewById(R.id.audioView));
mHandler.post(new Runnable() {
public void run() {
mMediaController.setEnabled(true);
mMediaController.show();
}
});
}
和瞧!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.