欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    毕业设计(论文)基于Android手机平台的音乐播放器设计.doc

    • 资源ID:2394309       资源大小:1.37MB        全文页数:36页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    毕业设计(论文)基于Android手机平台的音乐播放器设计.doc

    目录引 言- 1 -二编写目的- 1 -三实现功能- 2 -四功能需求(用例图分析)- 2 -4.1.1 播放器的基本控制需求。- 3 -4.1.2 播放清单列表管理需求- 4 -4.1.3 播放友好性需求- 4 -4.1.4 播放器扩展卡需求- 6 -4.1.5 功能需求(时序图)分析- 6 -五 系统结构图和流程图.- 7 -5.1.1系统功能表- 7 -5.1.2系统界面需求- 8 -5.1.3 运行环境需求- 9 -5.1.4 音乐播放器E-R图- 9 -六数据库连接- 10 -6.1.2 创建数据库- 11 -6.1.3操作数据库- 11 -6.1.4 数据显示- 12 -七播放器系统功能详细设计- 13 -7.1音乐播放器主界面功能实现- 13 -7.1.1 播放器主界面- 13 -7.1.2 播放界面音轨的实现- 14 -7.1.3 播放器播放、暂停、停止等功能- 17 -7.1.4 SQLiteDatabase数据库- 18 -第八章 结 论- 34 -引 言 当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,Windows mobile,symbian,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?能的,谷歌Android系统就能做到。本文的音乐播放器就是基于谷歌Android手机平台的播放器。 Android:是谷歌于2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统。本次作品音乐播放器就是基于Android平台的。 随着计算机的广泛运用,手机市场的迅速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,选择了开发多语种的音频视频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户(如听歌,看电影)的需求,除了能播放常见格式的语音视频文件,高级功能:还能播放RMVB格式的视频文件。此外,还能支持中文、英文等语言界面。 要研究了各种市场上流行的手机播放器,了解它们各自的插件及编码方式,还有各种播放器播放的特别格式文件,分析各种编码的优缺点以及各种播放器本身存在的缺陷和特点,编写出功能实用,使用方便快捷的播放器。目前已经实现的功能有能播放常见音频文件的功能,如MP3,WAV,等,拥有播放菜单,能选择播放清单,具备一般播放器的功能,如快进,快退,音量调节等。播放模式也比较完善,有单曲,顺序,循环,随机播放等模式。二编写目的 现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,并且带有音乐剪切功能,可以把自己喜欢的部分进行剪切用作彩铃。实现的主要功能是播放Mp3,Wav多种格式的音乐文件,并且能够控制播放,暂停,停止,上一曲,下一曲,音量调节,视觉外观,播放列表和歌曲信息的编辑操作等多种播放控制功能,界面简明,操作简单。 本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使设计者更加熟练Android的技术和其它在市场上的特点三实现功能(1)可以读取SD卡中的歌曲 (2)点击进入播放列表(3)可进行下一首播放 (4)可进行上一首播放(5)可进行快进(6)可调节播放时间(7)可进行录音 (8)可以实现歌曲暂停功能(9)可进行音乐剪切(10)可将歌曲分配到联系人用做铃声(11)可现实进度卡四功能需求(用例图分析) 根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。以下分别描述:4.1.1 播放器的基本控制需求图4.1 播放器基本控制图4.1.2 播放清单列表管理需求 当用户选中列表中某一项歌曲,就有的需求:图4.2 播放器清单4.1.3 播放友好性需求图4.3 播放器设定4.1.4 播放器扩展卡需求图4.4 文件浏览器4.1.5 功能需求(时序图)分析音乐播放器的时序图分析如(图)4.5 系统时序图分析五 系统结构图和流程图5.1.1系统功能表功能类别子功能子功能播放列表播放列表菜单退出播放从SD寻找歌曲歌曲菜单播放->进入播放界面删除->SD卡同步更新重命名->数据库同步更新进行音乐剪切播放界面播放播放歌曲->线程启动->时间更新暂停暂停歌曲->线程暂停->时间暂停停止停止歌曲->线程停止->时间停止上一首播放列表索引变化->寻找上一ID歌曲下一首播放列表索引变化->寻找下一ID歌曲播放界面菜单返回到播放列表返回到主菜单从扩展卡寻找歌曲退出播放器隐藏播放界面主菜单退出程序程序退出进入播放列表显示播放列表表2.1 功能表图2.5.2 系统功能结构图5.1.2系统界面需求 播放器界面要求布局合理,颜色舒适,控制按钮友好,为了减少开发工程量,图片素材多数为公司项目素材(图2.6)图2.6 播放器界面 说明:左下角为清单按钮 右下角为程序退出按钮 蓝色条为音轨 5.1.3 运行环境需求操作系统:Android手机基于Linux操作系统支持环境:Android 1.5 - 2.0.1版本开发环境:Eclipse 3.5 ADT 0.95 5.1.4 音乐播放器E-R图音乐播放器 E-R(实体-联系:entity-relation图)图(图3.1.3)图3.1.3 E-R图六数据库连接6.1.1 这里将介绍如何进行Android数据库连接,Android中自带SQLite数据库,这是一个十分小型的数据库,这样正适合Android这种移动平台使用。Android数据库存储的位置在data/data/<项目文件夹>/databases/目录下 Android是利用ContentProvider作为内容提供商,SQLiteOpenHelper数据库帮助类来进行对数据库的创建和操作。通过Context.getContentResolver()方法直接对数据库进行操作。程序中数据库类为DBHelper extends SQLiteOpenHelper(继承关系),内容提供类DBProvider extends ContentProvider(继承关系)6.1.2 创建数据库 Android 提供了标准的数据库创建方式。继承SQLiteOpenHelper ,实现onCreate 和 onUpgrade 两个方法,有个好处就是便于数据库版本的升级,连接数据库的算法如下:public DBHelper(Context context) / 创建数据库super(context, DATABASE_NAME,null, DATABASE_VERSION);public void onCreate(SQLiteDatabase db) / 创建时调用 db.execSQL(DATABASE_CREATE);public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) / 版本更新时调用db.execSQL("DROP TABLE IF EXISTS File_Table");onCreate(db); Override / 在ContextProvider运行时自动创建数据库 public boolean onCreate() dbOpenHelper= new DBHelper(getContext(); return true;数据库如果创建不成功则抛出FIleNotFoundException异常6.1.3操作数据库 Android对数据库的操作主要有插入、删除、更新、查询操作,在进行任何操作时都必须指定一个Uri,才能对相应的表进行数据操作。/数据库删除操作Overridepublic int delete(Uri arg0, String arg1, String arg2) SQLiteDatabase db = dbOpenHelper.getWritableDatabase();try Db.delete(FileColumn.TABLE, arg1, arg2); catch (Exception ex) ex.printStackTrace();return 1;Override/数据库插入操作public Uri insert(Uri uri, ContentValues values) SQLiteDatabase db = dbOpenHelper.getWritableDatabase();long count = 0;try count = db.insert(FileColumn.TABLE, null, values); catch (Exception ex) ex.printStackTrace(); if (count > 0) return uri;else return null;/ 数据库更新操作Overridepublic int update(Uri uri, ContentValues values, String selection,String selectionArgs) SQLiteDatabase db = dbOpenHelper.getWritableDatabase();int i = 0;try i = db.update(FileColumn.TABLE, values, selection, null);return i; catch (Exception ex) return 0;6.1.4 数据显示程序是利用Cursor游标类指向数据表中的某一项,然后进行查询数据,用Log日志显示出来Override/数据库查询操作public Cursor query(Uri uri, String projection, String selection,String selectionArgs, String sortOrder) SQLiteDatabase db = dbOpenHelper.getWritableDatabase();/ 依次参数为:表名,查询字段,where语句,替换,group by(分组),having(分组条件),order by(排序)Cursor cur = db.query(FileColumn.TABLE, projection, selection,selectionArgs, null, null, sortOrder);return cur;七播放器系统功能详细设计7.1音乐播放器主界面功能实现7.1.1 播放器主界面播放器主界面(图5.1)图 7.1Android的每一个可视化界面,都有其的唯一的布局配置文件,该文件里面有各种布局方式,和各种资源文件如图像,文字,颜色的引用,程序在运行时,可以通过代码对各配置文件进行读取。这样就可以形成不同的可视化界面和炫丽的效果。播放器主界面是一个Activity,Android工程在每个activity启动的时候会首先执行Oncreate()方法,如下代码:OverridePublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.play_rack);该方法主要执行界面的初始化操作,Activity有个设置布局的方法:Context.setContentView(layoutResID),参数为资源ID,该Id在工程目录res/layout下,主界面布局文件名为play_rack。下面为play_rack.xml布局文件代码结构如下:<?xml version="1.0" encoding="utf-8"?><AbsoluteLayout> <LinearLayout ></LinearLayout> <SeekBar></SeekBar> <LinearLayout></LinearLayout></AbsoluteLayout> 在绝对布局<AbsoluteLayout>下嵌套两种线性布局<LinearLayout>和<SeekBar>,第一个<LinearLayout>实现了标题和歌曲名的显示位置,通过<AbsoluteLayout>布局设置<LinearLayout>绝对坐标来控制标题的位置。每个布局内可以放置多种Widget(窗体部件)例如:<TextView><ImageButton>等。每个Widget内有多种属性,可以设置该Widget的坐标,大小,背景和颜色等参数。在播放界面中,歌词显示为居中,实现方法代码如下:<LinearLayout android:orientation="horizontal"android:gravity="center"android:layout_height="wrap_content" android:layout_width="fill_parent"><TextView android:layout_height="wrap_content"android:textColor="#8deeee" android:id="+id/lrcText"android:layout_width="wrap_content"></TextView></LinearLayout>属性:orientation="horizontal":此线性布局的子部件为水平方式布局Layout_width="fill_content" :布局的宽度为填满父布局Layout_height="wrap_content" :布局的高度子由窗体的大小决定 窗体TextView 文本 :textColor="8deeee" 设置文本显示的颜色RGB为 "8deeee"TextSize为默认大小7.1.2 播放界面音轨的实现播放器音轨SeekBar(如下图)Android系统自带SeekBar(如下图)图 7.2 不管是从界面外观还是从功能上,系统自带的SeekBar往往不能满足用户的需要。所以我在这里自定义了一个音轨SeekBar,在play_rack.Xml配置文件中,SeekBar的代码如下:<SeekBar android:id="+id/seekbar" android:layout_width="245px"android:layout_height="20px" android:layout_x="40px" android:layout_y="260px"android:progressDrawable="drawable/seekbar_style" android:thumb="drawable/thumb"android:paddingLeft="18px" android:paddingRight="15px"android:paddingTop="5px" android:paddingBottom="5px" android:progress="0"android:max="100" android:secondaryProgress="0"></SeekBar> 上面代码中有参数android:thumb="drawable/thumb" 为音轨游标的图片资源android:progressDrawable="drawable/seekbar_style"为SeekBar条的风格style。引用了drawable中的seekbay_style.xml文件,seekbay_style.Xml是自定义的配置文件,算法如下:<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="<item android:id="android:id/background"><shape><corners android:radius="5dip" /><gradient android:startColor="#ff9d9e9d" android:centerColor="#ff5a5d5a" android:centerY="0.75" android:endColor="#ff747674" android:angle="270" /></shape></item><item android:id="android:id/secondaryProgress"><clip><shape><corners android:radius="5dip" /><gradient android:startColor="#80ffd300" android:centerColor="#80ffb600" android:centerY="0.75" android:endColor="#a0ffcb00" android:angle="270" /></shape></clip></item><item android:id="android:id/progress"><clip><shape><corners android:radius="5dip" /><gradient android:startColor="#ff0099CC"android:centerColor="#ff3399CC" android:centerY="0.75"android:endColor="#ff6699CC" android:angle="270" /></shape></clip></item></layer-list> 配置文件中三个Item项依次决定了SeekBar的三层背景,从最下层的灰色到最上层的蓝色。通过各种属性设置了SeekBar的倾斜度,两端圆半径,角度,中心位置,起始,中心和结束的颜色,游标的起始位置。通过这些属性设置,就自定义一个如上图一的SeekBar音轨.播放器最重要的一部分就是音轨与歌曲进度同步的实现。音轨设置了两个TextView用来显示当前歌曲播放的进度时间和歌曲的长度(图5.3) 图 7.3 音轨对象SeekBar在歌曲刚开始播放的时候调用方法SeekBar.setMax(),参数传入歌曲的长度。SeekBar.setProgress(1)设置游标的起始进度为1。然后程序运行如下代码: private Runnable thread_One = new Runnable() / 线程public void run() int currently_Progress = seekBar.getProgress() + 1000; seekBar.setProgress(currently_Progress);currently_Time.setText(getFileTime(mplayer.getCurrentPosit ion();showLrcTwo(lrc_time, lrc_word);handler.postDelayed(thread_One, 1000); Android的线程的开始是通过Handler类来进行的,Handler类是线程与线程之间通信的桥梁,实现Runnable接口会实现里面的run方法,当线程开始的时候,Runnable中的run方法会向Handler发一个Message消息,这样,Handler类就可以接收到run方法发送过来的不同的消息进行不同的代码处理。这样就达到了各线程之间的通信。要启动一个线程调用Handler的方法postDelayed(Runnable,1000)表示线程睡眠时间是1000ms 。以上代码意思是让播放歌曲的线程每隔1000ms,即每1秒对音轨的TextView重新设置时间且让进度条前进1秒的进度。对音轨进行刷新。这样就实现了歌词同步功能SeekBar有一个监听器,该监听器的作用是一直保持着对进度条的监听,当我们用鼠标向SeekBar的各位置进行点击时,它会自动监听其位置,进行相应的位置显示。这也是进度条上的游标会不停的移动和歌词时间会不停的变动的原因。7.1.3 播放器播放、暂停、停止等功能图 7.4 如图5.4所示:各按钮水平放置,用的是布局中的线性布局LinearLayout,用方法setOrientation(horizontal);将其设置为水平。LinearLayout中依次放置播放,暂停,停止,上、下一曲按钮属性。配置文件代码结构如下:<LinearLayout><ImageButton ></ImageButton><ImageButton ></ImageButton><ImageButton ></ImageButton><ImageButton ></ImageButton><ImageButton ></ImageButton></LinearLayout> android的媒体播放原理:android源程序已经为我们封装好了一个接口类,叫MediaPlayer。该接口在执行行需要一个数据源,通过如下四个步骤:第一步:MediaPlayer.reset();复位操作,为以后的媒体准备播放作准备。 第二步:传入歌曲数据源,这里也是一个数据流 MediaPlayer.setDataSource(String path);参数需要传一个路径,该接口类在收到路径后将其转化为数据源。第三步:准备播放数据源,调用方法MediaPlayer.Prepare();第四步:MediaPlayer.Start();播放数据源,该数据源播放后,不再与程序 有关,需要用MediaPlayer.Stop()方法让其停止或MediaPlayer.Start();让其启动;歌曲数据源的获得:要获得数据源,需要我们提供给接口类一个歌曲存放路径,而这个路径已经被事先放到数据库里了,我们只需要进行数据库进行操作。将里面的路径取出。这里将调用PlayRackActivity的一个方法query();代码算法如下:public String query() ContentResolver cr = getContentResolver();Uri uri = DBProvider.CONTENT_URI;String projection = "path" ;String selection = "fileName=?"String selectionArgs = selectName ;Cursor c=cr.query(uri,projection,selection, selectionArgs, null);if (c.moveToFirst() String path = c.getString(0);return path;return null; 方法getContentResolver是包android.content.ContextWrapper里面的方法,它会自动的调用ContentProvider中的关联数据库,我们需用这个方法就可以操作数据库。数据库操作需要一个Uri 。Uri类似一个网络连接的Url。Uri是数据库唯一的标识,不同的Uri可以操作不同的数据库表。在查询数据库时需要传入一个当前播放的歌曲名字,通过歌曲名字来查询歌曲的路径。7.1.4 SQLiteDatabase数据库SQLite是一个嵌入式数据库引擎,针对内存等资源有限的设备(如手机、PDA、MP3)提供的一种高效的数据库引擎 SQLite数据库不像其它的数据库(如:Oracle),它没有服务器进程。所有的内容包含在同一个单文件中。该文件是跨平台的可以自由拷贝。基于其自身的先天优势,SQLite在嵌入式领域得到了广泛应用 SQLiteDatabase类SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法 常用方法(图5.21)图 7.5SQLiteOpenHelper类 SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本更新。一般的用法是定义一个类继承之,并实现其两个抽象方法onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)两个抽象方法来创建和更新数据库 常用方法(图5.22)图 7.6/data/data/package/shared_prefs/ Android的三种数据存储方式则让我们可以轻松方便的进行程序编写和数据的访问,更不会让不该消失的数据消失,这对我们进行程序书写有很大我帮助!1首先是对权限的设置,从上到下依次是:允许程序打开网络套接字,允许程序读取用户联系人数据,允许程序写入但不读取用户联系人数据,允许程序读取或写入系统设置,操作外部存储设备文件2这个java项的作用是读取音频文件信息3这个java项的作用是提供保存后的操作4这个java项的作用是对波形的实现5这个java项的作用是显示音频的波形6这个java项的作用是选择保存文件类型7这个java项的作用是选取SD卡中的音频文件获取SD卡上的音频文件图7.7进度条的编写与显示图7.8波形的编辑图7.98这个包下的java项是对各式音频文件格式的分析及支持9图7.10文件的保存及保存类型的选取图7.11文件保存后的选择10图7.12背景波浪线的具体设置第八章 结 论通过对Android手机平台的音乐播放器软件的开发,使我对Android音乐播放器系统的整体设计有一个深入的了解,对整个流程也会有一个清晰的认识。开发Android音乐播放器,要抓住开发的核心部分,音乐播放器大体由播放主界面、播放列表、菜单、歌曲浏览、音乐近月剪切六大核心组成,只要掌握了这六部分的开发,音乐播放器就能初具规模。而其它的功能都是在这六个功能的基础上去补充添加的,但是这是功能的确是必不可少的功能,否则就不能算是音乐播放器了。总之,经过几个月的Android系统技术知识的学习和对音乐播放器的构思与设计,使我对Android系统有了一定的了解,让我对Android系统上的开发流程和开发模式有了深入的了解,这对我以后的Android项目开发有很大的帮助。在此项目抒写过程中,我还要感谢我的软件工程的老师给我的支持和建议。让我能顺利的完成本次项目。

    注意事项

    本文(毕业设计(论文)基于Android手机平台的音乐播放器设计.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开