MediaPlayer的复位时间长 [英] MediaPlayer Reset takes long time

查看:306
本文介绍了MediaPlayer的复位时间长的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序中使用服务的MediaPlayer 流媒体音乐,而是试图重设媒体播放器时,我有一个问题播放下一首曲目。媒体播放器复位时间长,导致UI冻结了一会儿,当快速多次preSS下一虽然我把它称为在另一个线程。

My app is streaming music using Service and MediaPlayer, but i have a problem when trying to reset the mediaplayer to play next track. resetting mediaplayer takes long time and causes UI to freeze for a while when press next quickly multiple times although I call it in another thread.

下面是我的code的片段,我用它来从我的列表播放曲目

Here is my snippet of code which i use to play track from my list

private void playTrack(int position) {
    if (!isAudioFocusAvailable())
        return;
    try {
        sendBufferingStarted();
        // Problem is here
        mPlayer.reset();
        mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mPlayer.setDataSource(mTracks.get(mCurrentPosition).getUrl());
        mIsBuffering = true;
        mPlayer.prepareAsync();
        mIsPaused = false;
        acquireWifiWakeLock();
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
    }

}

任何建议,以避免重置和UI冻结问题

Any suggestions to avoid resetting and UI freeze problems

推荐答案

试试这个code,它可以帮助

try this code it may help

public void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);

    if(!isPlaying){
        mPlayer = new MediaPlayer();
        mPlayer.setDataSource(soundid[position]);
        mPlayer.prepare();
        mPlayer.start();
        isPlaying = true; // reproducir es true

    }else{

        isPlaying = false;
        mPlayer.stop();
        mPlayer.reset();
        mPlayer.setDataSource(soundid[position]);
        mPlayer.prepare();
        mPlayer.start();
        isPlaying = true;

    }

    mPlayer.setOnCompletionListener(new OnCompletionListener() {

        public void onCompletion(MediaPlayer mPlayer) {
            mPlayer.release();
            isPlaying = false;
        }

    });
}

这篇关于MediaPlayer的复位时间长的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆