【发布时间】:2021-09-17 17:20:45
【问题描述】:
请帮忙,我在教程中为 MediaPlayer 发布了一个版本,但它不起作用,几次播放音频后它就不再起作用了。这是我的代码,如何修复?
我已将原始资源放入数组中,以便 MediaPlayer 可以为每个项目播放不同的音频
public class NumbersActivity extends AppCompatActivity {
private MediaPlayer mMediaPlayer;
private MediaPlayer.OnCompletionListener mOnComplitionListener = new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
releaseMediaPlayer();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.word_list);
final ArrayList<Word> words = new ArrayList<Word>();
words.add(new Word("one", "lutti", R.drawable.number_one, R.raw.number_one));
words.add(new Word("two", "otiiko", R.drawable.number_two, R.raw.number_two));
words.add(new Word("three", "tolookosu", R.drawable.number_three, R.raw.number_three));
words.add(new Word("four", "oyyisa", R.drawable.number_four, R.raw.number_four));
words.add(new Word("five", "massokka", R.drawable.number_five, R.raw.number_five));
words.add(new Word("six", "temmokka", R.drawable.number_six, R.raw.number_six));
words.add(new Word("seven", "kenekaku", R.drawable.number_seven, R.raw.number_seven));
words.add(new Word("eight", "kawinta", R.drawable.number_eight, R.raw.number_eight));
words.add(new Word("nine", "wo'e", R.drawable.number_nine, R.raw.number_nine));
words.add(new Word("ten", "na'aacha", R.drawable.number_ten, R.raw.number_ten));
WordAdapter wordAdapter = new WordAdapter(this, words, R.color.category_numbers);
ListView listView = (ListView) findViewById(R.id.list);
listView.setAdapter(wordAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
releaseMediaPlayer();
Word word = words.get(position);
MediaPlayer mMediaPlayer = MediaPlayer.create(NumbersActivity.this, word.getmAudio());
mMediaPlayer.start();
mMediaPlayer.setOnCompletionListener(mOnComplitionListener);
}
});
}
private void releaseMediaPlayer() {
// If the media player is not null, then it may be currently playing a sound.
if (mMediaPlayer != null) {
// Regardless of the current state of the media player, release its resources
// because we no longer need it.
mMediaPlayer.release();
// Set the media player back to null. For our code, we've decided that
// setting the media player to null is an easy way to tell that the media player
// is not configured to play an audio file at the moment.
mMediaPlayer = null;
}
}
【问题讨论】:
标签: java android android-mediaplayer release