Android Media Player只播放一次声音

时间:2014-05-14 12:54:39

标签: android media-player

public void playClickSound() {
AssetFileDescriptor afd;
MediaPlayer sound = new MediaPlayer();  
    try {

        sound.setAudioStreamType(AudioManager.STREAM_MUSIC);
        afd = getAssets().openFd("click.mp3");

sound.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
        sound.prepare();
        sound.start();

    } catch (IllegalStateException e) {

    } catch (IOException e) {
        e.printStackTrace();
    }

}

这是我播放声音的代码。我在mu GUI中的几个按钮上调用此方法。 它第一次按下按钮时工作正常,但第二次我得到IllegalStateException。 我应该怎么做才能使这项工作?

1 个答案:

答案 0 :(得分:2)

您需要管理媒体播放器的生命周期。按照以下流程,应该解决:

RefreshPlayer()
{
if (mediaPlayer != null) {
             {
                mediaPlayer.stop();
                mediaPlayer.reset();    
            }
        }
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        try {
            mediaPlayer.setDataSource(getSherlockActivity(),
                    Uri.fromFile(new File(VidPath)));
            mediaPlayer.setLooping(true);
            mediaPlayer.prepare();
            mediaPlayer.start();

        } catch (IllegalArgumentException e) 
        {
            e.printStackTrace();

        } catch (IllegalStateException e) 
        {
            e.printStackTrace();

        } catch (IOException e) 
        {
            e.printStackTrace();
        }
    }