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

本博客先介绍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  工程


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值