内容发布更新时间 : 2024/12/23 5:35:37星期一 下面是文章的全部内容请认真阅读。
基于Android平台的手机音乐播放器的设计与实现
}
}
}
return super.onOptionsItemSelected(item);
效果如图5-20,图5-21。
图5-20 对收藏组中的音乐操作界面 图5-21 对收藏组操作界面
- 42 -
结 论
本设计开发的是Android手机平台的音乐播放器应用程序,实现了播放器的基本功能:播放,暂停、停止、上一首/下一首、音轨调节、歌手图片显示、本地音乐管理、网络曲库管理、下载管理、收藏管理等功能。使我对Android音乐播放器系统的整体设计有一个深入的了解,对整个流程也会有一个清晰的认识。开发Android音乐播放器,要抓住开发的核心部分,音乐播放器大体由播放主界面、播放列表、菜单、播放设置、文件浏览、歌曲搜索六大核心组成,只要掌握了这六部分的开发,音乐播放器就能初具规模。而其它的功能都是在这六个功能的基础上去补充添加的,但是这是功能的确是必不可少的功能,否则就不能算是音乐播放器了。
本设计运用的系统平台是现今最热门的Android系统,是一个开源的基于Linux系统的手机平台。是以Java语言编写+SQLite数据库支持+SharePreference配置文件的组合方式进行数据管理。实现了音乐播放器的系统编程。
本次设计对播放器的系统结构框架做了精心的构思与设计,采用主要开发工具是Eclipse3.5+Java语言的支持,Android Development Tool的插件,和Android SDK2.1版本的全面结合,才使整个音乐播放器系统得以实现。
总之,经过几个月的Android系统技术知识的学习和对音乐播放器的构思与设计,使我对Android系统有了一定的了解,让我对Android系统上的开发流程和开发模式有了深入的了解,这对我以后的Android项目开发有很大的帮助。
- 43 -
基于Android平台的手机音乐播放器的设计与实现
参考文献
[1] 余志龙.Google Android SDK开发范例大全[M].北京:人民邮电出版社,2009.13-122. [2] E2ECloud工作室.深入浅出Google Android[M].北京:人民邮电出版社,2009.22-87. [3] 李刚.疯狂java讲义[M].北京:电子工业出版社2008.5-187. [4] 李刚.疯狂Android讲义[M].北京:电子工业出版社2011.77-109.
[5] Mark L.Murphy.Android开发入门教程[M].北京:人民邮电出版社2010.10-91. [6] 赛奎春.JAVA工程应用与项目实践[J].微型机与应用,2002.3(8):5-8.
[7] 孙东卫,张冀红,李声利.数据库访问技术研究[J].现代电子技术. 2008.8(12):5-8. [8] Bruce Tate. Bitter Java [M]. Manning Publications,2002.46-52. [9] G.Cornell,Horstmann. Core Java [M]. SunSoft Press, 1996.56-58.
[10] Bruce Eckel. Thinging in Java Third Edition [M]. Pearson Education,2008.93-98. [11] 余俊新,J2EE中对象关系映射的研究与实现[J].计算机技术与发展,2007.17(3):90. [12] 杨德刚,J2EE平台在电子商务系统中的应用研究[J].商场现代化,2007.6-99.
[13] 陶以政,吴志杰,唐定勇.基于J2EE的应用框架技术研究[J].计算机工程与设计,2007.28(4):8-26. [14] 苗晓辉.基于J2EE的数据持久化的研究与实现[J].计算机工程,2007.33(5):2-72. [15] 刘静茹.基于J2EE技术的第三方逆向物流信息系统的构建[J].价值工程,2007.93-96. [16] 陈鹏,程勇.J2EE项目开发实用案例[J].北京:科技出版社,2006.
[17] 程伟. 开发者突击:JSP网络开发经典模块实现全集[J].北京:电子工业出版社,2008.
- 44 -
附录 源代码
(1)动画效果代码
public class ActivitySplash extends Activity { private void setupView(){
ImageView _ivSplash=(ImageView)findViewById(R.id.ivSplash);
Animation _anim=AnimationUtils.loadAnimation(this, android.R.anim.fade_in); _ivSplash.setAnimation(_anim);
_anim.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationEnd(Animation animation) { Intent intent=new Intent(ActivitySplash.this, ActivityMusicPlay.class); startActivity(intent); finish(); } }); }
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splash); setupView(); } }
(2)播放界面代码
public class ActivityMusicPlay extends Activity { private ImageButton playPauseBtn, nextBtn, previousbtn, ibtnHome;// 播放控制的按钮 private ImageButton musiclist;// 播放列表按钮 private TextView title; // private TextView artist; // private TextView album; // 当前用于显示歌曲信息的控件 private TextView current; // private TextView duration;// private ImageView ivAlbumPic; private SeekBar sb; private int progress = 0;// 进度条的进度 private int status = 2;// 音乐播放状态 private StatusUpdateReceiver doStatusUpdate; private TimeUpdateReceiver doTimeUpdate; private InfoUpdateReceiver doInfoUpdate; String titles; String artists;
- 45 -
基于Android平台的手机音乐播放器的设计与实现
String albumname; // 播放状态更新接受器 public class StatusUpdateReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { status = intent.getIntExtra(\ Log.i(\接收到的播放状态\ switch (status) { case Const.STATUS_PLAYING: playPauseBtn.setImageResource(R.drawable.desktop_pausebt); break; case Const.STATUS_PAUSED: playPauseBtn.setImageResource(R.drawable.desktop_playbt); break; case Const.STATUS_STOPPED: playPauseBtn.setImageResource(R.drawable.desktop_playbt); break; default: break; } } } // 歌曲信息更新接受器 public class InfoUpdateReceiver extends BroadcastReceiver { @Override public void onReceive(Context content, Intent i) { int totalms = i.getIntExtra(\ Date totalTime = new Date(totalms); String ts = (totalTime.getSeconds() < 10) ? (\ totalTime.getSeconds()); titles = i.getStringExtra(\ title.setText(titles); artists = i.getStringExtra(\ artist.setText(artists); albumname = i.getStringExtra(\ album.setText(albumname); duration.setText(totalTime.getMinutes() + ts); String albumPicPath = i.getStringExtra(\ Bitmap bm = BitmapTools.getbiBitmap(albumPicPath); if (bm != null) { ivAlbumPic.setImageBitmap(bm); } } } /* 时间更新的广播也是在Servcie里广播的 根据Service的信息 */ public class TimeUpdateReceiver extends BroadcastReceiver { @Override public void onReceive(Context content, Intent i) { int curms = i.getIntExtra(\ int totalms = i.getIntExtra(\ Date curTime = new Date(curms); // 下面是将广播来的当前毫秒数转换成00:00的格式
- 46 -