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已可以满足基本的音乐播放需求。 

  • 相关阅读:
    centos安装字体
    【C++ Primer | 15】访问控制与继承、继承中的类作用域
    树与二叉树 | 哈夫曼树
    【C++ Primer | 10】泛型算法
    【APUE | 03】文件I/O
    二叉树
    图论算法
    【深度探索C++对象模型 | 02】构造函数语意学
    【APUE | 08】进程控制
    c++重点理解
  • 原文地址:https://www.cnblogs.com/mamamia/p/7944048.html
Copyright © 2011-2022 走看看