随着电子产品的飞速发展,广播电台几乎已经远离了人们的娱乐生活,但是近年来由于网络电台的兴起,广播电台又逐渐有了市场,手机上如果有一个网络电台软件,使用率应该是比较高的。目前的主流智能手机平台中,iphone和symbian都已经有了这类软件,android平台虽然推出的时间不是很长,但是也已经有这类软件了,最近我也正在Android上做这方面的工作,下面就把我的一些经验介绍一下。网络电台种类目前的网络电台网站一般是基于以下三种协议的:mms、rtsp、http其中mms是微软公司提出的网络流媒体协议,通常采用wma格式的文件,Android现在还不支持这种协议,也不支持wma格式,原因比较明显,竞争对手嘛。rtsp是RealNetworks公司提出的,Android是支持这种协议的,但是这种协议通常采用rm格式的文件,Android是不支持的。http协议Android是肯定支持的,而且这种协议一般采用mp3的文件格式,Android也支持。综上,我们要在Android上开发网络电台软件,那么只能选择http协议mp3格式的网络电台网站,这样的网站主要包括shoutcast和icecast两大类。这两类有微小差别,基本上是相同的,下面主要以shoutcast为主进行说明。MediaPlayer熟悉Android的人可能都知道有MediaPlayer这样一个类,用于媒体播放,而且这个类是支持流媒体播放的,这个类支持的协议包括rtsp、http等,但是我们还不能直接用这个类来播放网络电台,主要有两个原因:1.上面提到的shoutcast电台并不是直接采用http协议,MediaPlayer无法正常连接到shoutcast电台2.MediaPlayer能够正常解析的URL必须是http://............/*.*的形式,也就是说url中必须包括文件名,shoutcast电台的url不符合这样的形式.因此需要做一些转换的工作。shoutcast协议上面已经提到,shoutcast网络电台是采用http协议的,其实这种说法并不准确,shoutcast电台采用的是shoutcast协议,这种协议与http略有不同,客户端与服务器间通讯过程如下:向服务器发送GET请求,内容如下:HTTP/1.0User-Agent:AndroidInternetRadioAccept:audio/mpeg服务器端返回如下:ICY200OK(signifyingthattheserverwassuccessful)〖黑软手机资讯频道〗icy-notice1:ThisstreamrequiresWinamp(redundantnotice)ActivityApp画面部分代码SCClient通过shoutcast协议连接网络电台,获取电台音频数据流HTTPServer提供http连接,将SCClient接收到的音频数据转发给MediaPlayer类MediaPlayer音频播放类,通过访问http://127.0.0.1/a.mp3:port与HTTPServer建立连接获取数据流RadioServer网络电台服务器在Android上开发网络收音机,核心部分在于将shoutcast协议的数据流转换为MediaPlayer类可播放的形式,也就是上图中的SCClient和HTTPServer,本文只是介绍了大体实现方案,具体编码中还会有一些细节问题(例如MediaPlayer连接HTTPServer时,需要有一个contentlenth,这个值应该指定为无穷大)需要解决。

更多相关文章

  1. Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
  2. Android无驱usb音频实现
  3. Android(安卓)总结4种线程中操作UI界面的方法
  4. Android推送通知的实现--采用MQTT协议实现Android消息推送
  5. Jenkins配置Android深坑
  6. Android:RxJava 结合 Retrofit 优雅实现 网络请求轮询
  7. Android网络基础1——网络分层
  8. Android(安卓)获取本机的mac和wifi的BSSID(mac)以及其他信息
  9. android如何利用基于Http 协议的WebService服务来获取远程数据库

随机推荐

  1. Android开机自动启动app
  2. android加速度传感器Accelerometer
  3. 【Android】Mac系统Android开发环境搭建
  4. Eclipse开发Android应用程序入门
  5. Android(安卓)Contacts的使用(二)
  6. Android百分比布局初探
  7. 使用 Android(安卓)NDK 的一般方法:
  8. Android(安卓)DeepLink原理与应用(2)
  9. Android(安卓)NDK环境搭建(Windows环境)
  10. 必须知道的Android屏幕自适应解决方案