设置使用MediaPlayer的歌曲数组 [英] Setting an array of songs using MediaPlayer

查看:125
本文介绍了设置使用MediaPlayer的歌曲数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有5首歌曲,我需要后,其他玩的,它必须循​​环从第一首完成5首歌。 我如何使用的MediaPlayer来实现这一目标?

解决方案

 公共类MediaPlayerExample扩展活动实现MediaPlayer.OnCompletionListener {
 INT []歌曲;
MediaPlayer的媒体播放器;
INT current_index = 0;
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);

歌曲=新INT [] {R.raw.song1,R.raw.song2,R.raw.song3,R.raw.song4};

媒体播放器= MediaPlayer.create(这一点,歌曲[0]);

mediaPlayer.setOnCompletionListener(本);

mediaPlayer.start();

}
@覆盖
    公共无效onCompletion(MediaPlayer的MP){
        玩();

    }

 私人无效播放()
    {
        current_index =(current_index +1)%4;
        AssetFileDescriptor AFD = this.getResources()openRawResourceFd(听歌[current_index])。

        尝试
        {
            mediaPlayer.reset();
            mediaPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getDeclaredLength());
            媒体播放器prepare()。
            mediaPlayer.start();
            afd.close();
        }
        赶上(抛出:IllegalArgumentException E)
        {
            Log.e(TAG,无法播放音频队列中做的异常:+ e.getMessage(),E);
        }
        赶上(IllegalStateException异常E)
        {
            Log.e(TAG,无法播放音频队列中做的异常:+ e.getMessage(),E);
        }
        赶上(IOException异常E)
        {
            Log.e(TAG,无法播放音频队列中做的异常:+ e.getMessage(),E);
        }
    }
}
 

I have 5 songs which i need to play one after the other, and it must loop from the first song after finishing the 5th song. How do I use the MediaPlayer to achieve this?

解决方案

public class MediaPlayerExample extends Activity implements MediaPlayer.OnCompletionListener {
 int [] songs;
MediaPlayer mediaPlayer;
int current_index = 0; 
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

songs= new int[] {R.raw.song1,R.raw.song2,R.raw.song3,R.raw.song4};

mediaPlayer = MediaPlayer.create(this, songs[0]);

mediaPlayer.setOnCompletionListener(this);

mediaPlayer.start();

}
@Override
    public void onCompletion(MediaPlayer mp) {
        play();

    }

 private void play()
    {
        current_index = (current_index +1)% 4;
        AssetFileDescriptor afd = this.getResources().openRawResourceFd(songs[current_index]);

        try
        {   
            mediaPlayer.reset();
            mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength());
            mediaPlayer.prepare();
            mediaPlayer.start();
            afd.close();
        }
        catch (IllegalArgumentException e)
        {
            Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e);
        }
        catch (IllegalStateException e)
        {
            Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e);
        }
        catch (IOException e)
        {
            Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e);
        }
    }
}

这篇关于设置使用MediaPlayer的歌曲数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆