使用MediaPlayer从res / raw播放声音文件

时间:2014-03-04 07:58:12

标签: android audio media-player

我想使用MediaPlayer从原始文件夹播放声音文件,但我不想使用MediaPlayer.create()方法,因为我想多次播放并希望保留{{1}对象。我成功地编译了下面的代码,但它什么也没玩,我听不到任何声音。

MediaPlayer

永远不会调用onPrepared()方法.. 我做错了吗?

2 个答案:

答案 0 :(得分:0)

private void playButtonSound(final Context context, final int resourceId)
    {
        final MediaPlayer mediaPlayer = MediaPlayer.create(context, resourceId);
        if (mediaPlayer != null)
        {
            mediaPlayer.setOnCompletionListener(new OnCompletionListener()
            {
                @Override
                public void onCompletion(MediaPlayer mediaPlayer)
                {
                    if (mediaPlayer != null)
                    {
                        mediaPlayer.stop();
                        mediaPlayer.release();
                        mediaPlayer = null;
                    }
                }
            });
            mediaPlayer.start();
        }
    }

像这样调用这个方法。

playButtonSound(PopScreenActivity.this, R.raw.soundfilename);

答案 1 :(得分:0)

首先,希望您使用以下内容初始化MediaPlayer:

mPlayerLoopSound = new MediaPlayer();

接下来,请务必致电:

mPlayerLoopSound.setAudioStreamType(AudioManager.STREAM_MUSIC);

其中:

  

设置此MediaPlayer的音频流类型。有关流类型的列表,请参阅AudioManager。必须在prepare()或prepareAsync()之前调用此方法,以便此后目标流类型生效。

然后,在OnPreparedListener()中,当调用onPrepared()时,请注意它具有的参数:MediaPlayer mp。这是可以播放的MediaPlayer,因此您可以使用它:

@Override
public void onPrepared(MediaPlayer mp) {
    if(!mp.isPlaying()) {
        mp.setVolume(1.0f, 1.0f);
        mp.start();
    }
}