我想使用MediaPlayer
从原始文件夹播放声音文件,但我不想使用MediaPlayer.create()
方法,因为我想多次播放并希望保留{{1}对象。我成功地编译了下面的代码,但它什么也没玩,我听不到任何声音。
MediaPlayer
永远不会调用onPrepared()方法.. 我做错了吗?
答案 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();
}
}