一、需求来源
为完善上一版本(4JPlayer.v1.0)中存在的不足和增加一些新的功能,从而来进一步学习Android SDK的相关知识点。
二、功能概要和涉及知识点
- 欢迎界面显示图片和动态点状进度条,并停留一段时间之后跳转到主界面
- Activity:调用finish()方法来结束当前Activity和startActivity()来开启一个新的Activity。
- Handler:调用sendEmptyMessageDelayed()方法来延迟发送消息和重写handleMessage()方法来接收消息,并用switch-case进行分类处理。
- Thread:定义一个线程类,该类extends Thread,通过传递Handler对象进行实例化,在run()方法中调用Handler对象的sendEmptyMessageDelayed()方法发送消息。
- 主界面由4个Tab组成
- 组件:TabHost、TabWidget和FrameLayout组件。
- 类:TabActivity、TabHost和TabHost.TabSpec类
- 其中2个Tab(Local Tab和Remote Tab)的内容由ListView来进行布局,并且ListItem中包含文字、图片和按钮(需监听onClick事件)
- 组件:ListVew、TextView、ImageView和ImageButton组件。
- 类:SimpleAdapter和通过extends BaseAdapter来自定义一个Adapter类,并监听ImageButton的onClick事件。
- 从服务器上获取mp3文件列表
- 下载XML文件:涉及到URL、HttpURLConnection类
- 解析XML文件:通过extends DefaultHandler来自定义一个Handler类,并重写startElement()、endElement()和characters()方法来进行标签解析;还涉及到SAXParserFactory和XMLReader类。
- 后台从服务器下载mp3文件,并写入到SDCard中去(给予下载开始提示信息)
- 下载开始提示信息:通过Toast.makeText()实现。
- 后台从服务器下载mp3文件:通过extends Service来自定义一个Service类,并重写onStartCommand()方法,在该方法中开启一个Thread来进行下载。当然,同样也涉及到URL、HttpURLConnection类。
- 将mp3文件写入到SDCard中去:涉及到一些文件和IO流的操作。
- 罗列SDCard中mp3文件
- 当前的实现方法:直接遍历sdcard\mp3目录下后缀为“.mp3”的文件。
- 更完善的实现方法:通过getContentResolver().query()方法返回一个承载sdcard上所有音频文件记录的Cursor对象,音频文件信息存放在data\data\com.android.providers.media\databases\external-**.db中,对应的Uri为:MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;具体实现请参考>>http://blog.csdn.net/Android_Tutor/archive/2010/07/18/5743183.aspx(由于我编码完之后才知晓有这种更完备的方案,但改动太大,所以这个版本暂时就没做修改,下一版本可能会修改成这种方案。)
- 音乐播放控制:播放、暂停、上一首和下一首(可以循环播放)
- Service:通过extends Service定义一个Serivce,用于后台进行歌曲播放控制。
- MediaPlayer:reset()、prepare()、start()、pause()
- 播放音乐时有动态的SeekBar和动态的数字计时器
- 组件:SeekBar
- Thread:在用于播放音乐Service中,新建一个线程,该线程中通过Handler每隔1000ms发送一次消息。
- Handler:在音乐播放控制Activity中,通过Handler的handleMessage()方法接收消息,并移动进度条和设置数字计时器。
- 当按后退键退出Activity之后,会在Status Bar显示播放信息
- 涉及到Notification和PendingIntent类的相关方法。
三、尚欠缺的功能
- 拖动播放
- 多播放列表
- 歌词同步
四、更多信息
—-EOF—-
by Vincent4J from vc4j.com @ 2011-04-13 17:58
卢松松博客看到贵站,过来看看,支持一下!
欢迎回访我的博客:http://www.ytq1118.com/
什么情况?文章还没写完?
原本打算写的,一些事情给搁置了,清明节把这个实现。
既然都来了,就留下一点痕迹吧,博主技术功底很强,说实话我都看不懂,我只会用..
Pingback: 4JPlayer.v1.0.2-软件评测 | Vincent4J
啊呀呀,,看到这些就头疼,,,不错博主满有才的。。。支持
卢松松博客看到贵站,过来看看,支持一下!
欢迎回访我的博客:http://www.4cseo.com/