我编写了一个程序,希望它可以抓住远程mp3媒体播放器的持续时间
和持续时间可以在timer.schedule中运行,mp3完成后,它可以更改为另一首歌曲和下一个viewflipper。
这是我的代码:
TimerTask t4=new TimerTask() {
@Override
public void run() {
int duration=0;
url = "http://demo.akkyschool.com/mp3/"+filename[tmp];//filename[tmp] is st02_01.mp3
mediaplayer.reset();
try {
mediaplayer.setDataSource(url);
mediaplayer.getDuration();
mediaplayer.prepare();
duration= mediaplayer.getDuration();
} catch (IOException e) { }
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
mediaplayer.reset();
try {viewflipper.addView(getImageView(draw[tmp]),tmp+1,params);
mediaplayer.setDataSource(url);
mediaplayer.prepare();
mediaplayer.start();
} catch (IOException e) { }
tmp++;
viewflipper.startFlipping();
if(tmp==5){tmp=0;}
}
});
}
}, duration);
}
};
我不知道为什么它关闭。
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nihon.aki2/com.nihon.aki2.Childstory}: java.lang.IllegalArgumentException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.IllegalArgumentException
谢谢。
答案 0 :(得分:1)
第一
如果需要持续时间,则需要下载音频,然后将其加载到MediaPlayer
第二
设置OnPreparedListener
,然后start
设置音频,也设置getDuration
mediaplayer.setOnPreparedListener(new
MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// mp.start();
duration = mp.getDuration();
}
});