zoukankan      html  css  js  c++  java
  • android 播放音乐媒体文件(四)

    mMediaPlayer 播放网络mp3
    1.异步准备
    使用
    mMediaPlayer.prepareAsync();

    2.监听prepareAsync结果
    使用MediaPlayer.OnPreparedListener

    3.获取长度
    在public void onPrepared(MediaPlayer mp) 方法中可以获得长度
    int duration = mMediaPlayer.getDuration();

    4.获取缓存进度
    使用:MediaPlayer.OnBufferingUpdateListener


    大概代码像下面这样:

    mMediaPlayer = new MediaPlayer();
    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    
    mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            btPlayStop.setEnabled(true);
            int duration = mMediaPlayer.getDuration();
            sbMusicProcess.setMax(duration);
            mHandler.sendEmptyMessage(1);
            mMediaPlayer.start();
            btPlayStop.setChecked(PLAYING);
        }
    });
    try {
        mMediaPlayer.setDataSource(mp3url);
    } catch (IOException e) {
        e.printStackTrace();
    }
    mMediaPlayer.prepareAsync();
    
    mMediaPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
        @Override
        public void onBufferingUpdate(MediaPlayer mp, int percent) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    sbMusicProcess.setSecondaryProgress((sbMusicProcess.getMax() * process / 100));
                }
            });
        }
    });
    
    mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            mp.reset();
            btPlayStop.setChecked(READY);
        }
    });

    prepare 与prepareAsync()的区别

    后台推荐网络和异步使用。

    prepareAsync()工作原理分析

    参考:

    http://blog.csdn.net/hejjunlin/article/details/52420803

    至此MediaPlayer已可以满足基本的音乐播放需求。 

  • 相关阅读:
    【转】Android——设置颜色的三种方法
    Eclipse Android安装APP时覆盖安装问题
    自定义数组,实现输出改数组的长度、最大值和最小值
    用程序实现对数组a[45,96,78,6,18,66,50]中的元素进行排序
    PHP面试题2
    PHP面试题
    gulp
    移动端base.css
    笔记
    mouseover和mouseout事件在鼠标经过子元素时也会触发
  • 原文地址:https://www.cnblogs.com/mamamia/p/7944048.html
Copyright © 2011-2022 走看看