-1

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

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

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

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

4

2 回答 2

1

You better stop being lazy and search for the solution on your own aswell. @1Up pretty much answered your question. For your second question: This is Uri

于 2013-09-16T18:31:30.673 回答
0

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

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

无论如何,这是一个 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());
于 2013-09-16T15:44:42.740 回答