您的位置:首页 > 理论基础 > 计算机网络

通过网络播放mp3和手机下载看3gp(mp4)影片-- Runnable 的运用

2012-02-29 23:28 417 查看
本博客先介绍android 手机下载 3gp

本程序设定的逻辑是: 设计一个可以接收影片网址的EditText 输入框, 将该网址的影片下载至手机的SD卡上,以暂存的文件夹名称命名, 当单击播放时,之前的影片被停止,根据网址新下载下来的影片,最后SD卡上可能存了一堆缓存的影片文件,因此当退出程序时,需要记录回收删除哪些 "临时文件"。

注意这里播放按钮的事件处理是: 正在播放中的影片,按播放时不回放、不停止,判断输入的网址与正在播放的网址不同时,要停止正在播放中的影片,并启动线程下载新影片,

逻辑设计是一旦影片下载完成,便进入MediaPlayer.perpare() 与MediaPlayer.start() 。

在setDataSource 方法里,使用了File.createTempFile 方法创建下载的临时文件,因此每一次下载的影片临时文件的文件名都是不重复的,这里将下载文件所创建的临时文件的路径存入fileDownloaded_List 列表中



具体代码请参见 EX08_15 工程

下面介绍通过网络 播放mp3: 关于Runnable 存储FileOutputStream 技巧

程序运行原理是通过Runnable 发起线程,在线程中下载远程网站的mp3文件,通过网络传输(URLConnection) 的方式进行下载. 当下载完毕后,线程继续进行MediaPlayer.prepare() 与 MediaPlayer.start() 来播放音乐; 而当离开或关闭程序的同时,删除刚才下载的临时文件。

注意以下代码:

/* 捕捉使用 MediaPlayer 缓冲区的更新事件 */

mMediaPlayer01.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {

@Override

public void onBufferingUpdate(MediaPlayer mp, int percent) {

Log.i(TAG, "Update buffer: " + Integer.toString(percent)+ "%");

}

});

在程序中,setOnBufferingUpdateListener 接口并没有将加载百分比输出至LogCat ,意味着以 下载(Downloading) 的方式 所取得的File 流方法, 并不会让 MediaPlayer 以流的方式来播放, 而是与一般存储在本地磁盘的播放方式一样.

要实现下载mp3 至 SD卡,可以通过 VideoView 传入URI 对象的方法,通过MediaPlayer 的setDataSource() 让远程的mp3 进行缓冲流的播放.也就是不是直接把 URL 字符串传入,而是通过以下方式:

MediaPlayer mp = new MediaPlayer();

mp.setDataSource(

Ex08_08.this,Uri.parse("http://www.dubblogs.cc:8751/Android/Test/Media/mp3/test.mp3");

)

try{

mp.prepare();

}catch(Exception ex){ }

mp.start();

具体代码请参见 EX08_08 工程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐