我可以用单个MediaPlayer播放多首歌曲吗?

时间:2013-09-16 15:32:12

标签: android

我有2首歌曲。我为这两首歌都使用了单选按钮,所以当选择第一首时,它应该播放第一首歌,当我点击第二首歌时。应该播放第二首歌。我使用了播放,暂停和停止按钮,所以当我选择第一首歌并点击播放时,应该播放第一首歌。如何使用媒体播放器播放2首歌曲。以前我使用了2个媒体播放器播放不同的歌曲。如何使用一个媒体播放器 以前我用这两个歌曲的语句

mediaPlayer = MediaPlayer.create(getApplicationContext(),R.drawable.inno); 

mediaPlayer1 = MediaPlayer.create(getApplicationContext(),R.drawable.rocky); 

我的问题是我想只为这两首歌使用一个媒体播放器

2 个答案:

答案 0 :(得分:1)

你最好不要懒惰,并自己寻找解决方案。 @ 1Up几乎回答了你的问题。关于第二个问题:This is Uri

答案 1 :(得分:0)

继续使用两个媒体播放器,在这种情况下,这样做是没有问题的。仅使用一个引用意味着每次要更改剪辑或停止它并调用setDataSource(context,URI)时都必须重新创建它。

如果您只使用一个对媒体播放器的引用,则每次必须播放时,用户必须等待剪辑准备就绪,而在您的实现中,两个声音剪辑都可以随时播放。

无论如何,这是一个setDataSource示例:

MediaPlayer mp = MediaPlayer.create(context, firstSongUriOrRes);

public void play(int clip)
{
    if(mp.isPlaying())    //Stop the mediaplayer if it's already playing
        mp.stop();
    switch(clip)          //Choose the clip to be played
    {
        case 0:
            mp.setDataSource(context, firstSongUriOrRes);
            break;
        case 1:
            mp.setDataSource(context, secondSongUriOrRes);
            break;
    }
    mp.prepare();
    mp.start();           //Start the mediaplayer
}

使用setDataSource的另一种方法是将音频文件放在资产目录中并使用以下代码:

AssetFileDescriptor fd = context.getAssets().openFd("pathInsideAssets/fileName");
mp.setDataSource(fd.getFileDescriptor(), fd.getStartOffset(), fd.getDeclaredLength());