接上一篇 android播放音频文件(MediaPlayer)和录音(MediaRecorder)--录音,接着开始讲播放网络音频文件的功能。

二、播放音频文件

传递网络音频的URL播放音频文件。

manager.player("http://5.26923.com/download/ring/000/100/96163302708ec2cf1f9d67c846aac59e.amr");

接下来,根据传递的URL,判断需要播放的网络音频是否已经缓存到本地,如果已经缓存到本地,则播放本地缓存的音频文件,如果没有缓存到本地则播放网络音频文件并且同时下载网络音频文件缓存到本地。

/**  * 播放音频文件  * @param url 音频文件url地址  */ public void player(String url) {    // 如果当前正在播放,则直接返回  if(player.isPlaying()){        Log.i("MediaManager", "MediaPlayer is playing……");        return;    }    try {        String path = fileUtils.exists(url); // 判断是否存在缓存文件  if(path != null) { // 存在缓存文件  // 直接播放缓存文件  player.setDataSource(path); // 设置数据源  player.prepare(); // 准备(File), 同步  player.start(); // 播放音频文件  }else { // 不存在音频缓存文件,则边存边播  // 异步下载音频文件  new AudioAsyncTask().execute(url);            player.setDataSource(url); // 设置数据源为网络文件  player.prepareAsync(); // 准备(InputStream), 异步  player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {                @Override                public void onPrepared(MediaPlayer mp) {                    // 准备完成后, 开始播放音频文件  mp.start();                }            });        }    } catch (IOException e) {        e.printStackTrace();    }}
使用异步下载音频文件到本地

/**  * 异步下载音频文件  */ private class AudioAsyncTask extends AsyncTask<String, Void, Void> {    @Override    protected Void doInBackground(String... params) {        try {            URL url = new URL(params[0]); // 构建URL  // 构造网络连接  HttpURLConnection conn = (HttpURLConnection) url.openConnection();            // 保存音频文件  fileUtils.saveFile(conn.getInputStream());            conn.disconnect(); // 断开网络连接  } catch (IOException e) {            e.printStackTrace();        }        return null;    }}
使用异步下载音频文件到本地

/**     * 异步下载音频文件     */    private class AudioAsyncTask extends AsyncTask<String, Void, Void> {        @Override        protected Void doInBackground(String... params) {            try {                URL url = new URL(params[0]); // 构建URL                // 构造网络连接                HttpURLConnection conn = (HttpURLConnection) url.openConnection();                // 保存音频文件                fileUtils.saveFile(conn.getInputStream());                conn.disconnect(); // 断开网络连接            } catch (IOException e) {                e.printStackTrace();            }            return null;        }    }

到此,播放网络音频文件和录音的功能就实现完成了,由于网络上有很多关于MediaPlayer和MediaRecorder的讲解,并且代码里的注释也比较详细,所以这两篇博客我的讲解都比较少,大部分都是代码片段,同时下面也会附上 源码的下载地址。


源代码

更多相关文章

  1. android 录音和播放
  2. Android的SoundPool
  3. Android(安卓)音视频开发总结
  4. android播放网络音频
  5. android 播放视频 Android(安卓)播放音频
  6. Android性能调优
  7. RestHttp
  8. Android(安卓)音乐播放器
  9. (4.1.12)Android高效加载大图、多图解决方案,有效避免程序OOM

随机推荐

  1. Android 编译App报错 找不到android.supp
  2. android studio3导入opencv4人脸识别例程
  3. android 语言简写对应表
  4. Android Animation --- 无限360度旋转
  5. Android(安卓)学习笔记-2011年7月
  6. 【置顶】Errors occurred during the bui
  7. android-------开发常用框架汇总
  8. android ping 网络延迟
  9. Android(安卓)SwitchButton(滑动开关)
  10. Android(安卓)DownloadManager 使用