当前位置:文档之家› Android在线音乐播放器项目大纲

Android在线音乐播放器项目大纲

功能:
网络音乐列表加载
音乐下载
本地音乐管理

工具类和实体类
Music----封装音乐信息
HttpTool
请求网络资源返回输入流的方法
请求网络资源返回字节数组的方法
请求网络资源返回资源长度的方法
--请求网络资源返回HttpEntity的方法
StreamTool
将输入流转换为字节数组的方法
将输入流的内容保存到指定路径的方法
--readDdata 将一个输入流的内容写到一个输出流中的方法
BitmapTool
将输入流中的内容按指定的收缩比例缩小返回bitmap的方法
将指定字节数组,按指定的宽高保持纵横比缩小返回bitmap
ImageLoader
loadImage
从缓存中获取一个位图对象
如果缓存中不存在或该位图已被释放则返回null
开启新线程,加载图片。图片下载完成后
调用对调对象的方法向adapter回传图片
否则返回位图对象
MusicXmlParser
parse
根据传入的输入流解析xml
解析xml使用MusicHandler对象。

Musichandler
endElement
判断结束标签的标签名是否为music
当一条music信息解析完成时,通过一个主线程传入的
handler对象,发送消息回主线程,更新界面
MusicListAdapter
Music集合
addMusic
向集合中添加一条新的music,并通知更新界面
getView
从集合中获取指定位置的一条数据
将该数据显示在一个view上
并将该view返回
几个知识点:
listView的优化
1)重用convertView
2)使用ViewHolder重用converView中的控件
3)图片的异步加载
调用ImageLoader对象的loadImage方法
获取一个bitmap对象或null
如果为null,则显示默认图片
否则显示bitmap对象
调用loadImage方法时 传入一个callback对象
在callback对象的回调方法中,更新指定的imageview
LoadedMusicListAdapter
已下载的音乐信息集合
addItems(新集合){
将新集合的内容追加到原集合的末尾
更新界面
}

DBOpenHelper
创建数据库和表结构
MusicDao
提供对已下载音乐信息表的增删改查等方法
MusicpageControl
提供获取分页数据的方法



MusicClientActivity(在线音乐列表)
1、创建一个Handler对象
handleMessage方法中对传回的消息进行处理
如果传回的消息是一条音乐解析完成,则将该音乐对象
添加到adapter的集合中,并更新listView
如果传回的消息是所有

xml解析完成
则显示提示toast
2、ServiceConnection conn = new ServiceConnection(){
serviceDisconnected 方法中
binder = null ;
serviceconnected 方法中
binder = (MyBinder)service;
}
MyBinder binder;
3、oncreate
1)启动downloadservice
binservice获得一个binder对象

2)加载一个Listview对象
创建一个MusicListAdapter对象(空集合)
在listview中设置adapter对象
在listview上添加 item单击事件的监听器
当单击某个item时,通过binder对象,调用addTask方法
该方法向service中的任务队列添加新任务

开启新线程,在新线程中下载和解析xml(传入一个handler对象)
在新线程中解析xml时,每解析一条music信息
则从子线程向主线程发送一条消息

3) 如果音乐下载目录不存在,则创建该目录
4) 实例化 receiver对象
4、内部类InnerReceiver
onReceive(Intent intent){
updateUI(intent);
}
并创建InnerReceiver类的对象
5、在OnResume方法中 注册该广播接收器
6、在onPause方法中 取消注册
7、在Activity中添加一个方法updateUI,对受到的广播进行处理
当收到servcie中发送的下载完成的广播时
更新listview

DownloadService
1、MyBinder类
public void addTask(Music music)//添加新任务的方法
向任务队列添加新任务
通知下载线程开始下载
2、线程队列 ArrayList
3、Thread对象-----下载线程
4、handler对象----对下载线程中传回的消息进行处理
5、isUnbind属性---用于标识当前的service是否已经解绑定
6、onBind方法中
返回一个Mybinder类的对象
7、onCreate方法中
初始化线程队列
初始化下载线程
轮询(死循环){
循环读取任务队列中的任务,并下载
while(任务队列.size()>0){
开始下载
下载完成
下载失败时
都通过handler发送相应的消息
回主线程

}

if(isUnbind)//如果service已经解绑定,则stopservice、退出循环结束线程

线程进入等待状态
}
启动下载线程
初始化handler
handleMessage方法中
开始下载时,在通知栏显示一个通知
下载中,根据从StreamTool的下载方法中传回的
消息中的进度,更新通栏的通知
下载完成,清除通知栏的通知
向本地的下载表中添加新纪录

发送广播,提示下载完成
下载失败,清除通知栏的通知

LoadedManageActivity(下载管理)
1、onCreate方法
初始化listview对象
调用MusicPageControl对象,获取分页数据
使用获取的分页数据创建一个adapter
在listview上设置adapter
为listView添加onscroll事件的监听器
当滚动状态发生变化时
判断是否滚动到了listview的最底部
如果是 则加载下一页数据并通过adapter更新界面



相关主题
文本预览
相关文档 最新文档