通过网络播放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 工程
本程序设定的逻辑是: 设计一个可以接收影片网址的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 工程
相关文章推荐
- 有个傻B说破解了我的软件—哈哈!黄金屋手机MP3.MP4.3GP.电影.下载系统
- android通过网络下载文字和Mp3的例子
- [教程]手机通过网络(网上邻居)播放PC共享视频的方法
- 手机通过usu共享给电脑网络(win10),电脑变卡的解决办法
- [p2p]手机是否可以通过JXTA网络与PC机/PocketPC/WindowsMobile实现P2P呢?
- Python 网络爬虫 009 (编程) 通过正则表达式来获取一个网页中的所有的URL链接,并下载这些URL链接的源代码
- Android通过发送Intent播放本地视频和网络视频
- android 手机通过 usb 共享电脑网络
- 网络采集软件核心技术剖析系列(5)---将任意博主的全部博文下载到内存中并通过Webbrower显示(将之前的内容综合到一起)
- Flash播放mp4的两个问题:编码问题和需要下载完后才能播放的问题
- android网络下载mp3文件不全问题
- Uart2Socket:将PC的串口信息通过WiFi网络传输至安卓Android手机上
- 解决下载MP3等文件自动播放完美解决方法
- android手机通过USB共享电脑网络
- Android手机如何通过USB共享网络给Mac?
- html制作简单框架网页二 实现自己的影音驿站 操作步骤及源文件下载 (可播放mp4、avi、mpg、asx、swf各种文件的视频播放代码)
- 【Android】入门级连接网络示例: 网页浏览和播放网络MP3
- 通过ASIHTTPRequest实现简单流媒体视频播放下载
- [小经验]如何设置IBM笔记本R60通过普通电视播放影片
- android录制音频通过网络传输到服务器播放