媒体播放器中的实时音频口吃()?

时间:2013-04-25 17:55:28

标签: android media-player live-streaming

我是android新手。我正在制作一个实时音频流应用程序(来自URL的流)。一旦我弹奏,音频播放,但每半秒钟就有一个口吃。我检查了计算机上的实时音频URL,它播放完美。我在另一个我正在制作的音频流应用程序中使用相同的模拟器检查它,它也在那里完美播放。流文件是.mp3。我添加了代码。

    public class StreamAudioFromUrlSampleActivity extends Activity implements OnClickListener, OnTouchListener, OnCompletionListener, OnBufferingUpdateListener{
    private Button btn_play,
                    btn_pause,
                    btn_stop;
    //private SeekBar seekBar;
    private MediaPlayer mediaPlayer;
    private int lengt

hOfAudio;
    private final String URL = "**some url**";
    //private final Handler handler = new Handler();
    /*private final Runnable r = new Runnable() {   
        @Override
        public void run() {
            //updateSeekProgress();                 
        }
    };*/

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        init();mediaPlayer = new MediaPlayer();
    }

    private void init() {
        btn_play = (Button)findViewById(R.id.btn_play);
        btn_play.setOnClickListener(this);
        btn_pause = (Button)findViewById(R.id.btn_pause);
        btn_pause.setOnClickListener(this);
        btn_pause.setEnabled(false);
        btn_stop = (Button)findViewById(R.id.btn_stop);
        btn_stop.setOnClickListener(this);
        btn_stop.setEnabled(false);

        //seekBar = (SeekBar)findViewById(R.id.seekBar);
        //seekBar.setOnTouchListener(this);


        //mediaPlayer.setOnBufferingUpdateListener(this);
        //mediaPlayer.setOnCompletionListener(this);

    }

    @Override
    public void onBufferingUpdate(MediaPlayer mediaPlayer, int percent) {
        //seekBar.setSecondaryProgress(percent);
    }

    @Override
    public void onCompletion(MediaPlayer mp) {
        btn_play.setEnabled(true);
        btn_pause.setEnabled(false);
        btn_stop.setEnabled(false);
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (mediaPlayer.isPlaying()) {
            //SeekBar tmpSeekBar = (SeekBar)v;
            //mediaPlayer.seekTo((lengthOfAudio / 100) * tmpSeekBar.getProgress() );
        }
        return false;
    }

    @Override
    public void onClick(View view) {

        try {
            mediaPlayer.setDataSource(URL);
            mediaPlayer.prepare();
            //lengthOfAudio = mediaPlayer.getDuration();
        } catch (Exception e) {
            Log.e("Error", "error"+e);
        }

        switch (view.getId()) {
        case R.id.btn_play:
            playAudio();
            break;
        case R.id.btn_pause:
            pauseAudio();
            break;
        case R.id.btn_stop:
            stopAudio();
            break;
        default:
            break;
        }

        //updateSeekProgress();
    }

    private void updateSeekProgress() {
        if (mediaPlayer.isPlaying()) {
            //seekBar.setProgress((int)(((float)mediaPlayer.getCurrentPosition() / lengthOfAudio) * 100));
        //  handler.postDelayed(r, 1000);
        }
    }

    private void stopAudio() {
        mediaPlayer.stop();
        btn_play.setEnabled(true);
        btn_pause.setEnabled(false);
        btn_stop.setEnabled(false);
        mediaPlayer.release();
        //seekBar.setProgress(0);
    }

    private void pauseAudio() {
        mediaPlayer.pause();
        btn_play.setEnabled(true);
        btn_pause.setEnabled(false);
    }

    private void playAudio() {try{
        Thread.sleep(10000);}catch(InterruptedException x){}
        mediaPlayer.start();
        btn_play.setEnabled(false);
        btn_pause.setEnabled(true);
        btn_stop.setEnabled(true);
    }
}

0 个答案:

没有答案