【问题标题】:Android Media Player release doesn't workAndroid 媒体播放器版本不起作用
【发布时间】: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


    【解决方案1】:

    https://stackoverflow.com/a/38811972/3675925

    reset mediaPlayer 并更改 dataSource 将是您代码中更好的选择。

    简单的音频播放器:

    https://github.com/Pankaj-Desai/AudioPlayer/blob/master/app/src/main/java/com/example/audioplayer/Player.java

    【讨论】:

    • 感谢您的关注,但我还是有问题。我在 releaseMediaPlayer 方法中添加了 reset before release 并且它没有引起任何更改,而且您提供的音频播放器代码与我的有点不同,我只制作了一个带有不同单词的 listView,当您单击其中一个项目时, app应该说的。我根本不了解数据源。再次感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多