当前位置:首页 > Android课程设计---基于Android系统的音乐播放器设计与实现
主界面:
6.1 播放界面音轨的实现
图 6-1 播放器音轨SeekBar
图6-2 Android系统自带SeekBar
配置文件中三个Item项依次决定了SeekBar的三层背景,从最下层的灰色到最上层的蓝色。通过各种属性设置了SeekBar的倾斜度,两端圆半径,角度,中心位置,起始,中心和结束的颜色,游标的起始位置。通过这些属性设置,就自定义一个如上图一的SeekBar音轨.
播放器最重要的一部分就是音轨与歌曲进度同步的实现。音轨设置了两个TextView用来显示当前歌曲播放的进度时间和歌曲的长度(图5.3)
图 6-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的各位置进行点击时,它会自动监听其位置,进行相应的位置显示。这也是进度条上的游标会不停的移动和歌词时间会不停的变动的原因。
6.2播放器播放、暂停、停止等功能
图 6-4 播放、暂停、停止功能
6.3播放列表功能
播放列表界面(如图5.5)
图 6-5 歌曲列表
6.4 MP3歌曲添加导入
图 6-6 导入图
6.5 数据存储方式
在播放器正常运行时,由于各界面存在相互跳转,为了避免数据在界面跳转的过程中丢失,我们需要将一些数据进行临时存储或者永久存储。
Android作为一种手机操作系统,提供了如下几种存取数据的方式:Preference(配置)、File(文件)、SQLite数据和网络 。
另外,在Android中各个应用程序组件之间是相互独立的,彼此的数据不能共享。为了实现数据的共享,Android提供了Content Provider组件来实现应用程序之间数据的共享
6.5.1 SharedPreferences
Preference Preference提供了一种轻量级的数据存取方法,一般数据比较少,一些简单的配置信息。它以“键-值”(是一个Map)对的方式,将数据保存在一个XML配置文件中
使用到的接口(详细内容见文档)
android.content .SharedPreferences提供了保存数据的方法 android.content .SharedPreferences.Editor提供了获得数据的方法
以播放器中的播放模式存取为例:
(1).xml配置文件的读取
我们仍以播放模式读取为例:当需要用到播放模式的确定时,我们将读取.Xml文件,同样用共享文件类SharedPreferences 通过用方法
getSharedPreferences(\,并且是只读方式获得.Xml的文件内容。SharedPreferences的对象调用方法getString(\null),方法返回一个String类型的值,即是我们以前存储进去的String值。此方法当该标记不存在时会默认返回一个null值。获得成功后我们就可以运用当前的值再对程序进行操作了。
(2).xml配置文件的存储
类SharedPreferences。它有一个方法getSharedPreferences(参数1,参数2),参数1为写进时的标记,便于在从其中读取出来时的标记,参数2为读取模式,有只写模式(MODE_WORLD_WRITEABLE)和只读模式(MODE_WORLD_READABLE),在写之前将其置入编辑状态,用静态方法SharedPreferences.Editor editor = sp.edit();然后对象editor可以存入一个HashMap
当写入成功时,android系统会自动在目录data/data/工程包名/shared_prefs/目录下生成一个配置文件
共分享92篇相关文档