我在Android上工作,我正在为音频歌曲创建一个播放器。我想只播放一首歌只需30秒。之后,玩家必须关闭。如果我再次按START
按钮,应该重新开始。
这是创建媒体播放器的代码:
MediaPlayer mediaPlayer = new MediaPlayer();
public void songPreview(String songURL){
try{
mediaPlayer=new MediaPlayer();
mediaPlayer.setDataSource(songURL);
mediaPlayer.prepare();
mediaPlayer.start();
} catch(Exception ex){
ex.printStackTrace();
}
}
请建议我使用什么代码才能播放我的歌曲30秒后它会停止播放,如果我想再次播放,那么我必须按开始按钮。
注意:请提供我30秒后停止媒体播放器的逻辑。
提前谢谢。
答案 0 :(得分:10)
使用countdownTimer完成您的目标,您可以手动将倒数计时器设置为30秒。倒计时结束时,它将完成方法并执行完成方法代码 ::
CountDownTimer cntr_aCounter = new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
mp_xmPlayer2.start();
}
public void onFinish() {
//code fire after finish
mp_xmPlayer2.stop();
}
};cntr_aCounter.start();
答案 1 :(得分:6)
private void playSoundForXSeconds(final Uri soundUri, int seconds) {
if(soundUri!=null) {
final MediaPlayer mp = new MediaPlayer();
try {
mp.setDataSource(Settings.this, soundUri);
mp.prepare();
mp.start();
}catch(Exception e) {
e.printStackTrace();
}
Handler mHandler = new Handler();
mHandler.postDelayed(new Runnable() {
public void run() {
try {
mp.stop();
}catch(Exception e) {
e.printStackTrace();
}
}
}, seconds * 1000);
}
}
答案 2 :(得分:0)
此方法在给定时间后跳转到轨道的末尾,并允许本机onCompleted回调执行其工作。您显然需要扩展代码以处理在播放完成之前触发的任何暂停事件。
private static void startMedia(final MediaPlayer mediaPlayer, @Nullable Integer previewDuration) {
mediaPlayer.start();
if( previewDuration != null) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
mediaPlayer.seekTo(mediaPlayer.getDuration());
}
}, previewDuration);
}
}