APP开发流程实例讲解-儒释道网络电台八天开发全程
项目发起
APP开发流程实例讲解-儒释道网络电台八天开发全程
起因
浏览净空法师网站时,看到有一个”儒释道网络电台“,可惜没有相应的APP,不能在手机上观看。正巧最近在研究安卓应用开发,于是就想做这样一个APP。一者可弘法利生,再者可增长技艺,何乐而不为。
可行性探究
通过查看网页的源码,发现它提供两种流播放式:RTMP和HTML5 。在APP里播放RTMP流还需要Flash Player,那可是个费电的东西。看来只能使用HTM5格式的流了。
HTML5格式的流地址如下:
视频流:http://bj2.hwadzan.net:1935/liveedgelist/_definst_/livetv/playlist.m3u8
音频流:http://bj2.hwadzan.net:1935/liveedgelist/_definst_/livetvaudio/playlist.m3u8
打开我的VLC播放器,可以成功播放。看来这个项目是可以做的。
资料查询并尝试
那么我如果要做Android APP难道要做一个HTML5 APP吗?Android是否支持直接播放m3u8的流呢。上网查了一下,说是高版本的Android是支持的,到底支持情况如何呢?在官网查的媒体支持情况说明网址:https://developer.android.com/guide/appendix/media-formats.html ,在这个上面只说了支持的编码。我以前搞过一段RED5的研究,知道RTMP流其实是H.264编码,我估计应该是H.264编码,这个编码只要Android 3.0+就有了。那么上面的m3u8是什么编码的,是否支持呢?看来只能试一下了。
新建项目,关键代码如下:
public void onClick(View view) {
<pre style="background-color:#ffffff;color:#000000;font-family:'DejaVu Sans Mono';font-size:9.0pt;"> String <span style="color:#660e7a;font-weight:bold;">mp3 </span>= <span style="color:#008000;font-weight:bold;">"http://bj2.hwadzan.net:1935/liveedgelist/_definst_/livetvaudio/playlist.m3u8"</span>;
Uri uri = Uri.parse(mp3); mediaPlayer = new MediaPlayer(); mediaPlayer.reset(); mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { mediaPlayer.start(); } }); mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { @Override public boolean onError(MediaPlayer mediaPlayer, int i, int i1) { Toast.makeText(MainActivity.this, "出错", Toast.LENGTH_SHORT).show(); return false; } }); try { //mediaPlayer.setDataSource("http://mms.3bu.com/ring/ring/200808151615132.mp3");//OK mediaPlayer.setDataSource(MainActivity.this, uri); mediaPlayer.prepareAsync(); } catch (IOException e) { e.printStackTrace(); } }
上面的代码很简单,看起来很正常,但是第一次运行报错了!!什么原因,原来没加权限

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
运行还出错!!什么原因,原来我的手机WIFI没开

终于听到声音了,成功!
前一段时间我做过一个音乐播放器的例子。这个应该比那例子还简单。不过要做一个完整的APP,我的经验是,没有简单的。因为要做一个完整的APP,需要考虑的问题并不仅仅是实现功能,而是还需要考虑许多必须要考虑的内容。比如:功能的取舍,用户体验的老师,界面的美化,当然也包括所有代码的设计和实现,还包括整个APP开发过程中所产生的各种想法和走的弯路,哈。
决定发起项目
于是我产生了将我制作《儒释道网络电台》APP的全过程详细的记录下来的冲动,想将一个APP产生的全过程完整的展现出来,做为我个人最近学习的一个总结。
初步计划在一周内完工,每天工作两个小时,并发布一篇博客文章。七天的工作内容初步设定如下:
第一天:功能和界面初步设计完成
第二天:在Android Studio中完成界面设计
第三天:完成播放控制,使用service来进行播放,使用通知
第四天:其它数据的获取和显示
第五天:界面美化,及优化
第六天:调试
第七天:微调优化后发布
源码地址 https://code.youkuaiyun.com/do168/buddhismnetworkradio