1、软件技术毕业设计论文Android手机音乐播放器武汉职业技术学院毕业设计论文 课程名称:面向对象课程设计 题 目:Android手机音乐播放器 专 业:软件技术 班 级:软件 姓 名: 学 号:指导老师: 2011 年12月15日至2011年12月25日程序设计任务书设计题目: 手机音乐播放器设计目的本课程的设计的目的是通过实践使同学们经历android开发全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。结合具体的开发案例,理解并初步掌握系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作能力。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰
2、写等具体要求)主要任务:1 完成主界面设计2 选择要播放的文件,构成播放列表3 实现播放、暂停、结束功能4 实现音量调节和循环播放选择功能5 实现后台运行设计报告撰写格式要求:大标题:黑体 三号字 加粗小标题:宋体 四号字 加粗正文: 宋体 五号字时间安排:16周-19周消化资料、系统调查 1天 系统分析 1天总体设计 2天 实施计划(编写代码) 3天撰写报告 1天 演示、验收 1天具体要求1、明确课程设计的目的和重要性,认真领会课程设计的题目,学会设计的基本方法与步骤,学会如何运用前修知识与收集、归纳相关资料解决具体问题的方法。严格要求自己,要独立思考,按时、独立完成课程设计任务。2、设计报
3、告:要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。设计报告正文字数不少于0.2万字(不包括附录)指 导 教 师 签 字: 年 月 日系 主 任 签 字: 年 月 日1、播放器的主要功能 1、自动查找sd卡中的音乐播放文件,生成播放列表。 2、具有播放,暂停,下一曲,上一曲,循环播放的功能。 3、打接电话时音乐停止,挂掉电话后重新回到播放界面继续播放音乐。 4、可以进行后台播放功能。 5、若新增MP3格式的音乐文件可以自动将该音乐文件添加到播放列表。2、使用到的相关知识 Android各种页面布局,Android中的MediaPlayer媒体创建,Android
4、中service后台控制播放方法,Intent意图进行Activity之间进行多页面跳转,Button按钮事件监听控制,3、实现该音乐播放器的整体思路要实现这个音乐播放器。首先应该考虑到的就是他的功能,要有后台播放功能以及显示正在播放的文件和把手机中的音乐文件以列表的形式显示在手机上,这就要使用到listview类。另外在本地歌曲列表和正在播放的歌曲之间要进行动态菜单的跳转故而想到用tabhost这个容器进行布局。后台播放创建一个类继承service方法,在该类中使其具有播放暂停下一首上一首的功能的方法,从而是它在各个Activity之间进行跳转的时候为其他的类提供相应的方法。创建一个新建文件
5、类和过滤文件信息的类,用以存贮特定的文件信息和当用户改变文件夹终不改的内容的时候同步更新播放列表。于接打电话这个问题,创建一个类进行监听,当电话进来或出去的时候调用service方法停止音乐播放并记下播放点。4、在实现过程遇到的相关问题以及解决的办法 对于刚接触Android开发的我们,在很多的知识点上还是不是很理解,鉴于此在制作的过程难免会遇到各种问题,解决的办法就是通过XX,goolge各种搜索引擎。1、首先在开始动手构思音乐播放器界面的时候就遇到了难题,要实现动态菜单(本地音乐、正在播放的歌曲);2、如何实现后台播放;3、如何进行多页面之间的跳转;4、如何进行电话监听;5、如何将sd卡中
6、的MP3音乐文件过滤读取到播放列表中;6、如何自动添加更新播放列表;7、对于listview中点击Item时触发相应的播放事件;5、得到MP3界面图展示 : 六、具体实现步骤1、创建main.xml布局文件。通过tabhost进行布局显示本地播放和正在播放。实现的主要代码及步骤效果图: (1)main.xml (2)创建TabViewActivity类继承TabActivity类向tabhost容器中加入动态menu以及创建一个music类进行sd卡的音乐文件的存取和读取,创建utilFile进行文件的创建和判断。 在SD卡创建存放MP3的目录代码片段:public void createDi
7、rInSDCard() throws IOException if(new File(FileUtils.MUSIC).exists() = false) File file = new File(MUSIC); file.mkdir(); 在SD卡上创建文件代码片段:public File creatFile(String fileName) throws IOException File file = new File(MUSIC+fileName); file.createNewFile(); return file; /* * 判断文件是否存在 */ public boolean is
8、FileExist(String fileName) File file = new File(MUSIC + fileName); return file.exists(); 向tabhost容器中加入动态菜单项的代码片段: public void initializePlayer() / 因为继承了TabActivity,所以可以用getTabHost()获取TabHost, tabHost = this.getTabHost(); / 设置Intent指向的类 intent = new Intent(this, LocalListActivity.class); / 创建一个tabSpe
9、c,并设置它的标签和要跳转到的Intent tabSpec = tabHost.newTabSpec(local).setIndicator(本地歌曲) .setContent(intent); / 将tabSpec添加到tabHost(这样就把一个分页的标签添加进去了) tabHost.addTab(tabSpec); /添加第二个标签 intent = new Intent(this, PlayingMusicActivity.class); tabSpec = tabHost.newTabSpec(playingMusic).setIndicator(歌曲播放) .setContent(
10、intent); tabHost.addTab(tabSpec);(3)创建Mp3Info类,定义初始话音乐信息private static final long serialVersionUID = 1L; private String id ; private String mp3Name; private String author; private String lrcName ; private String lrcSize ; public Mp3Info() public Mp3Info(String id, String mp3Name, String author, Stri
11、ng lrcName, String lrcSize) super(); this.id = id; this.mp3Name = mp3Name; this.author = author; this.lrcName = lrcName; this.lrcSize = lrcSize; public String toString() return Mp3Info author= + author + , id= + id + , lrcName= + lrcName + , lrcSize= + lrcSize + , mp3Name= + mp3Name + ; public Strin
12、g getId() return id; public void setId(String id) this.id = id; public String getMp3Name() return mp3Name; public void setMp3Name(String mp3Name) this.mp3Name = mp3Name; public String getAuthor() return author; public void setAuthor(String author) this.author = author; public String getLrcName() ret
13、urn lrcName; public void setLrcName(String lrcName) this.lrcName = lrcName; public String getLrcSize() return lrcSize; public void setLrcSize(String lrcSize) this.lrcSize = lrcSize; 2、创建playmusic.xml布局文件用以显示播放下一首上一首控制按钮和显示正在播放的音乐文件的名字 具体代码片段: 3、创建一个playmusicService类行进后台控制音乐播放功能为Playmusic类用以控制音乐播放功能的
14、方法。Service代码片段:public class PlayMusicService extends Service private static MediaPlayer mediaPlayer; private static final String MUSIC_PATH = /sdcard/Music/; / 歌曲是否正在播放 public static boolean isPlaying = false; / 当前播放的歌曲 public static int CURRENT_SONG = 0; / 声明一个Bundle对象,用来放置接收到的Bundle对象 Bundle bundl
15、e = null; Override public IBinder onBind(Intent arg0) / TODO Auto-generated method stub return null; Override public void onCreate() / TODO Auto-generated method stub super.onCreate(); / 生成MediaPlayer对象 mediaPlayer = new MediaPlayer(); Override public void onStart(Intent intent, int startId) / TODO
16、Auto-generated method stub super.onStart(intent, startId); / 从接收到的Bundle对象中获取当前播放歌曲的位置 bundle = intent.getExtras(); CURRENT_SONG = bundle.getInt(position); / 条用playMusic()方法播放歌曲 playMusic(CURRENT_SONG); / 播放歌曲方法 public void playMusic(int position) try / 标志为正在播放 isPlaying = true; / 获取将要播放的歌曲的位置 CURRE
17、NT_SONG = position; System.out.println(当前正在播放的歌曲: + LocalListActivity.list.get(CURRENT_SONG).get(mp3Name); mediaPlayer.reset(); mediaPlayer.setDataSource(MUSIC_PATH + LocalListActivity.list.get(CURRENT_SONG).get(mp3Name); mediaPlayer.prepare(); mediaPlayer.start(); mediaPlayer.setOnCompletionListene
18、r(new OnCompletionListener() public void onCompletion(MediaPlayer mp) / TODO Auto-generated method stub /* * 播放当前歌曲的下一首 判断播放的是否最后一首歌,如果是,播放完返回播放第一首 */ if (+CURRENT_SONG = LocalListActivity.list.size() CURRENT_SONG = 0; playMusic(CURRENT_SONG); / 动态更新正在播放歌曲的名字 new PlayingMusicActivity().updatePlaySon
19、gName(CURRENT_SONG); ); catch (Exception e) e.printStackTrace(); / 播放上一首歌曲 public void lastMusic(int position) / 先把MediaPlayer对象切换到stoped状态 if (mediaPlayer != null) if(isPlaying) mediaPlayer.stop(); CURRENT_SONG = position; if (CURRENT_SONG 0) / 如果当前播放的是第一首歌,则切换到最后一首 CURRENT_SONG = LocalListActivity
20、.list.size() - 1; playMusic(CURRENT_SONG); / 播放下一首歌曲 public void nextMusic(int position) / 先把MediaPlayer对象切换到stoped状态 if (mediaPlayer != null) if(isPlaying) mediaPlayer.stop(); CURRENT_SONG = position; / 如果播放的是最后一首歌曲,则切换到第一首 if (CURRENT_SONG = (LocalListActivity.list.size() CURRENT_SONG = 0; playMus
21、ic(CURRENT_SONG); / 暂停/恢复播放 public void pauseMusic() if (mediaPlayer != null) if (isPlaying = true) mediaPlayer.pause(); isPlaying = false; /* * 恢复播放歌曲 */ public void startMusic() if (mediaPlayer != null) if(isPlaying = false) mediaPlayer.start(); isPlaying = true ; 创建playmusic类中在textview中进行显示显示正在播放的音乐文件名代码片段:protected void onResume() / TODO Auto-generated method stub super.onResume(); / TextView对象,设置正在播放的歌曲的名字
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1