媒体播放器正在准备时的进度栏
|
我试图弄清楚在媒体播放器准备流式文件时如何显示“正在加载。请稍候...”的进度条。现在发生的是在歌曲准备好之后显示。我怎样才能解决这个问题?
mediaPlayerLoadingBar =ProgressDialog.show(PlaylistActivity.this, \"\", \"Loading. Please wait...\", true);
/*dubstep stream*/
try {
dubstepMediaPlayer.setDataSource(dubstepPlaylistString[0]);
dubstepMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
dubstepMediaPlayer.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();
}
dubstepMediaPlayer.start();
if(dubstepMediaPlayer.isPlaying()){
mediaPlayerLoadingBar.dismiss();
}`
编辑:
这是我现在拥有的代码:
`switch(pSelection){
情况1:
new AsyncTask<Void, Void, Void>(){
@Override
protected void onPreExecute(){
mediaPlayerLoadingBar =ProgressDialog.show(PlaylistActivity.this, \"\", \"Loading. Please wait...\", true);
try {
dubstepMediaPlayer.setDataSource(dubstepPlaylistString[0]);
} catch (IllegalArgumentException 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();
}
dubstepMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
//mediaPlayerLoadingBar =ProgressDialog.show(PlaylistActivity.this, \"\", \"Loading. Please wait...\", true);
return null;
}
protected void onPostExecute(Void result){
//mediaPlayerLoadingBar =ProgressDialog.show(PlaylistActivity.this, \"\", \"Loading. Please wait...\", true)
dubstepMediaPlayer.prepareAsync();
dubstepMediaPlayer.start();
mediaPlayerLoadingBar.dismiss();
}
}.execute();`
没有找到相关结果
已邀请:
5 个回复
膝垫富顷
不要忘记在这里关注您的仿制药!
芦歉竭皑
疏腔傻小雹
这是mediaplayerclass。
这是main.xml
丧泉缝锋
对象上说
时,它实际上在内部进行了一些准备工作,例如-设置文件的提取器,设置音频解码器以解码编码的音频文件以及设置音频接收器以播放原始音频数据,从解码器解码。现在所有这一切都需要时间,它不是瞬时的。 因此,在您的原始代码中,您检查媒体播放器
,然后将其关闭,但问题在于此时媒体播放器还没有播放音频,因此从未调用过关闭,因此它始终可见。 您需要做的是实现侦听器
,并在应用程序中调用方法
时,在该方法中调用dismiss
。
死狸蔽垂藐