论文部分内容阅读
摘 要:随着3G时代的到来,移动互联网应用也越来越丰富,具体应用会倾向于智能化、个性化。从最初的只能语音通话的1G网络到现在可以传输图像、视频、上网的4G网络。无线通信与国际互联网等多媒体通信结合的这种移动通信系统极大范围的满足了用户对无线网络的需要。本文介绍了基于Android开发平台,运用Android SDK开发包,使用Java开发技术开发的专属的音乐播放软件能够为广大 Android 手机用户提供更方便快捷的本地音乐播放功能。开发的具有一定的实用性。
关键词:音乐播放 数据源 android
近年来,手机的发展呈现出智能化趋势。随着智能手机的发展,移动通信技术也在不断进步,从最初的只能语音通话的1G网络到现在可以传输图像、视频、上网的4G网络。无线通信与国际互联网等多媒体通信结合的这种移动通信系统极大范围的满足了用户对无线网络的需要。据相关调查显示,目前手机用户已超过电脑用户,成为最普遍的移动电子产品。Android是Google公司开发的手机及平板电脑的操作系统,是目前移动平台最受欢迎的操作系统之一。随着 Android平台的发展,其便捷性与开放性等特征越来越明显,因此基于Android 平台的智能手机更受欢迎,在智能手机领域的地位越来越重要。基于 Android 平台开发应用程序,可以极大丰富手机的应用软件,因此,基于 Android 平台所开发的专属的音乐播放软件能够为广大 Android 手机用户提供更方便快捷的本地音乐播放功能。
一、系统设计
1.系统需求分析。作为计算机广泛使用的应用之一,音频资源在网络中是相当的丰富,这些看似平常的资源,已经渐渐成为人们生活中必不可少的一部分。因此手机播放器也紧跟着发展起来,但是很多播放器外观过于花哨,功能庞大,造成用户手机CPU效率低、内存占用率高等资源浪费问题。在用户手机多任务操作时,资源紧张,效率降低,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上问题,开发音乐播放软件应以优化性能,继承播放器的常用功能,能播放常见音频文件的功能,如MP3等,除了能播放常见格式的语音视频文件,高级功能:还能播放RMVB格式的视频文件。此外,还能支持中文、英文等语言界面。拥有播放菜单,能选择播放清单,具备一般播放器的功能,如快進,快退,音量调节等。播放模式也应比较完善,有单曲,顺序,循环,随机播放等模式。
2.系统功能设计。设计的音乐播放器是基于Android平台下的,基于需求的分析,音乐播放器的整个设计功能如图1所示包含:
2.1菜单:完成播放器主界面信息显示,用户可以通过系统帮助退出系统、更换皮肤等功能。
2.2播放设定:通过声音进度用户可以通过音乐增减按钮调节声音大小,通过播放模式可以选择循环播放,顺序播放,单曲循环等;歌词显示可以开关歌词模式。
2.3播放列表:本地音乐自动搜索用户通过该功能能够快速搜索移动设备本地存储中的音频文件。在查找到歌曲后可以直接把添加到列表。通过播放列表,用户可以选择播放的音乐,播放器也可以显示该音乐的歌曲名、专辑、歌手以及歌曲的播放总时间,播放进度等歌曲的相关功能;
2.4播放界面:完成歌曲切换,通过该功能,用户能够实现对歌曲的切换操作,切换到当前歌曲的上一首或下一首进行播放,如果只有一首歌曲时,该功能键将失去作用。
二、系统实现
1.android应用开发框架。android应用开发框架的系统架构由5部分组成,分别是:Linux内核(Linux Kernel)、Android运行库(Android Runtime)、核心类库(Libraries)、应用程序框架层(Application Framework)、应用程序层(Applications)。Android系统开发前需要在系统中搭建开发环境,将插件ADT集成到了Eclipse工具上,安装过ADT插件后的Eclipse会多出一些功能按钮。因此,一个Android程序启动后,系统会启动一个模拟器(Emulator),该模拟器是一款手机板的样式,拥有手机硬件的基本操作。由于模拟器的启动太慢,也可用手机连接电脑,代替模拟器[2]。
2.系统实现。音乐播放器实现的核心类是 MyMediaPlayer 类。主要实现播放功能、暂停功能、上一首歌曲功能、下一首歌曲功能。分为以下几个步骤:
2.1如果用户按下播放按钮,则播放当前歌曲。
2.2如果用户按下暂停按钮,则暂停当前播放歌曲。
2.3如果用户按下一首歌曲按钮,则应用程序播放下一首歌曲。
2.4如果用户按下上一首歌曲按钮,则播放上一首歌曲。Android的多媒体播放原理:Android源程序已经封装好了一个接口类,叫MediaPlayer。该接口在执行行需要一个数据源,通过如下四个步骤:第一步:MediaPlayer.reset();复位操作,为以后的媒体准备播放作准备。 第二步:传入歌曲数据源,这里也是一个数据流 MediaPlayer.setDataSource(String path);参数需要传一个路径,该接口类在收到路径后将其转化为数据源。第三步:准备播放数据源,调用方法MediaPlayer.Prepare();第四步:MediaPlayer.Start();播放数据源,该数据源播放后,不再与程序 有关,需要用MediaPlayer.Stop()方法让其停止或MediaPlayer.Start()方法让其启动;而播放的上一曲和下一曲通过获取播放指针,再对播放指针进行加一和减一来达到播放上一曲和下一曲的目的。歌曲数据源的获得:要获得数据源,需要提供给接口类一个歌曲存放路径,而这个路径已经被事先放到数据库里了,只需要对数据库进行操作,将里面的路径取出。 这里将调用getMusicFileList的一个方法query();代码算法如下:
// 获取音乐文件列表
private List getMusicFileList() {
List list = new ArrayList();
String[] projection = new String[] { MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.ARTIST };
long time1 = System.currentTimeMillis();
// 获取游标,其他应用程序可以通过获取ContentResolver通过Uri来操作其他程序提供的数据
Cursor cursor = getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, null,null, null);
if (cursor != null) {
cursor.moveToFirst();
int colNameIndex = cursor
.getColumnIndex(MediaStore.Audio.Media.TITLE);
int colTimeIndex = cursor
.getColumnIndex(MediaStore.Audio.Media.DURATION);
int colPathIndex = cursor .getColumnIndex(MediaStore.Audio.Media.DATA);
int colArtistIndex = cursor .getColumnIndex(MediaStore.Audio.Media.ARTIST);
int fileNum = cursor.getCount();
for (int counter = 0; counter < fileNum; counter++) {
MusicData data = new MusicData();
data.mMusicName = cursor.getString(colNameIndex);
data.mMusicTime = cursor.getInt(colTimeIndex);
data.mMusicPath = cursor.getString(colPathIndex);
data.mMusicAritst = cursor.getString(colArtistIndex);
list.add(data);
cursor.moveToNext();}
cursor.close();}
long time2 = System.currentTimeMillis();
Log.i(TAG, "seach filelist cost = " + (time2 - time1));
return list;}
方法getContentResolver是包android.content.ContextWrapper里面的方法,它会自动的调用ContentProvider中的关联数据库,用这个方法就可以操作数据库。数据库操作需要一个Uri ,Uri类似一个网络连接的Url,是数据库唯一的标识,不同的Uri可以操作不同的数据库表。
三、结语
開发出一款基于移动互联开发平台的占用较少手机资源的优性能的音乐播放器对于Android手机使用群体是非常有意义的。本项目是基于Android开发平台,运用Android SDK开发包,使用Java开发技术开发的具有一定的实用性。
参考文献:
[1] 余志龙.Google Android SDK开发范例大全[M].北京:人民邮电出版社,2010.06.
[2] E2ECloud工作.深入浅出Google Android[M].北京:人民邮电出版社,2009.08.
[3]Ed Burnette .Hello,Android Introducing Google’s Mobile Development Platform, 3rd Edition[M] Pragmatic Bookshelf,2008.12.
[4] 樊新,高曙.基于智能移动终端的安全检查系统设计与实现[J].微型机与应用,2012,31(20):87-92.
[5] 刘安战, 贾晓辉.基于Andriod的私密短信系统设计与实现[J].微型机与应用,2012,31(17):51-56.
作者简介:惠燕(1979—),女,陕西咸阳人,硕士,讲师,主要研究方向为计算机网络管理,计算机软件理论。
关键词:音乐播放 数据源 android
近年来,手机的发展呈现出智能化趋势。随着智能手机的发展,移动通信技术也在不断进步,从最初的只能语音通话的1G网络到现在可以传输图像、视频、上网的4G网络。无线通信与国际互联网等多媒体通信结合的这种移动通信系统极大范围的满足了用户对无线网络的需要。据相关调查显示,目前手机用户已超过电脑用户,成为最普遍的移动电子产品。Android是Google公司开发的手机及平板电脑的操作系统,是目前移动平台最受欢迎的操作系统之一。随着 Android平台的发展,其便捷性与开放性等特征越来越明显,因此基于Android 平台的智能手机更受欢迎,在智能手机领域的地位越来越重要。基于 Android 平台开发应用程序,可以极大丰富手机的应用软件,因此,基于 Android 平台所开发的专属的音乐播放软件能够为广大 Android 手机用户提供更方便快捷的本地音乐播放功能。
一、系统设计
1.系统需求分析。作为计算机广泛使用的应用之一,音频资源在网络中是相当的丰富,这些看似平常的资源,已经渐渐成为人们生活中必不可少的一部分。因此手机播放器也紧跟着发展起来,但是很多播放器外观过于花哨,功能庞大,造成用户手机CPU效率低、内存占用率高等资源浪费问题。在用户手机多任务操作时,资源紧张,效率降低,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上问题,开发音乐播放软件应以优化性能,继承播放器的常用功能,能播放常见音频文件的功能,如MP3等,除了能播放常见格式的语音视频文件,高级功能:还能播放RMVB格式的视频文件。此外,还能支持中文、英文等语言界面。拥有播放菜单,能选择播放清单,具备一般播放器的功能,如快進,快退,音量调节等。播放模式也应比较完善,有单曲,顺序,循环,随机播放等模式。
2.系统功能设计。设计的音乐播放器是基于Android平台下的,基于需求的分析,音乐播放器的整个设计功能如图1所示包含:
2.1菜单:完成播放器主界面信息显示,用户可以通过系统帮助退出系统、更换皮肤等功能。
2.2播放设定:通过声音进度用户可以通过音乐增减按钮调节声音大小,通过播放模式可以选择循环播放,顺序播放,单曲循环等;歌词显示可以开关歌词模式。
2.3播放列表:本地音乐自动搜索用户通过该功能能够快速搜索移动设备本地存储中的音频文件。在查找到歌曲后可以直接把添加到列表。通过播放列表,用户可以选择播放的音乐,播放器也可以显示该音乐的歌曲名、专辑、歌手以及歌曲的播放总时间,播放进度等歌曲的相关功能;
2.4播放界面:完成歌曲切换,通过该功能,用户能够实现对歌曲的切换操作,切换到当前歌曲的上一首或下一首进行播放,如果只有一首歌曲时,该功能键将失去作用。
二、系统实现
1.android应用开发框架。android应用开发框架的系统架构由5部分组成,分别是:Linux内核(Linux Kernel)、Android运行库(Android Runtime)、核心类库(Libraries)、应用程序框架层(Application Framework)、应用程序层(Applications)。Android系统开发前需要在系统中搭建开发环境,将插件ADT集成到了Eclipse工具上,安装过ADT插件后的Eclipse会多出一些功能按钮。因此,一个Android程序启动后,系统会启动一个模拟器(Emulator),该模拟器是一款手机板的样式,拥有手机硬件的基本操作。由于模拟器的启动太慢,也可用手机连接电脑,代替模拟器[2]。
2.系统实现。音乐播放器实现的核心类是 MyMediaPlayer 类。主要实现播放功能、暂停功能、上一首歌曲功能、下一首歌曲功能。分为以下几个步骤:
2.1如果用户按下播放按钮,则播放当前歌曲。
2.2如果用户按下暂停按钮,则暂停当前播放歌曲。
2.3如果用户按下一首歌曲按钮,则应用程序播放下一首歌曲。
2.4如果用户按下上一首歌曲按钮,则播放上一首歌曲。Android的多媒体播放原理:Android源程序已经封装好了一个接口类,叫MediaPlayer。该接口在执行行需要一个数据源,通过如下四个步骤:第一步:MediaPlayer.reset();复位操作,为以后的媒体准备播放作准备。 第二步:传入歌曲数据源,这里也是一个数据流 MediaPlayer.setDataSource(String path);参数需要传一个路径,该接口类在收到路径后将其转化为数据源。第三步:准备播放数据源,调用方法MediaPlayer.Prepare();第四步:MediaPlayer.Start();播放数据源,该数据源播放后,不再与程序 有关,需要用MediaPlayer.Stop()方法让其停止或MediaPlayer.Start()方法让其启动;而播放的上一曲和下一曲通过获取播放指针,再对播放指针进行加一和减一来达到播放上一曲和下一曲的目的。歌曲数据源的获得:要获得数据源,需要提供给接口类一个歌曲存放路径,而这个路径已经被事先放到数据库里了,只需要对数据库进行操作,将里面的路径取出。 这里将调用getMusicFileList的一个方法query();代码算法如下:
// 获取音乐文件列表
private List
List
String[] projection = new String[] { MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.ARTIST };
long time1 = System.currentTimeMillis();
// 获取游标,其他应用程序可以通过获取ContentResolver通过Uri来操作其他程序提供的数据
Cursor cursor = getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, null,null, null);
if (cursor != null) {
cursor.moveToFirst();
int colNameIndex = cursor
.getColumnIndex(MediaStore.Audio.Media.TITLE);
int colTimeIndex = cursor
.getColumnIndex(MediaStore.Audio.Media.DURATION);
int colPathIndex = cursor .getColumnIndex(MediaStore.Audio.Media.DATA);
int colArtistIndex = cursor .getColumnIndex(MediaStore.Audio.Media.ARTIST);
int fileNum = cursor.getCount();
for (int counter = 0; counter < fileNum; counter++) {
MusicData data = new MusicData();
data.mMusicName = cursor.getString(colNameIndex);
data.mMusicTime = cursor.getInt(colTimeIndex);
data.mMusicPath = cursor.getString(colPathIndex);
data.mMusicAritst = cursor.getString(colArtistIndex);
list.add(data);
cursor.moveToNext();}
cursor.close();}
long time2 = System.currentTimeMillis();
Log.i(TAG, "seach filelist cost = " + (time2 - time1));
return list;}
方法getContentResolver是包android.content.ContextWrapper里面的方法,它会自动的调用ContentProvider中的关联数据库,用这个方法就可以操作数据库。数据库操作需要一个Uri ,Uri类似一个网络连接的Url,是数据库唯一的标识,不同的Uri可以操作不同的数据库表。
三、结语
開发出一款基于移动互联开发平台的占用较少手机资源的优性能的音乐播放器对于Android手机使用群体是非常有意义的。本项目是基于Android开发平台,运用Android SDK开发包,使用Java开发技术开发的具有一定的实用性。
参考文献:
[1] 余志龙.Google Android SDK开发范例大全[M].北京:人民邮电出版社,2010.06.
[2] E2ECloud工作.深入浅出Google Android[M].北京:人民邮电出版社,2009.08.
[3]Ed Burnette .Hello,Android Introducing Google’s Mobile Development Platform, 3rd Edition[M] Pragmatic Bookshelf,2008.12.
[4] 樊新,高曙.基于智能移动终端的安全检查系统设计与实现[J].微型机与应用,2012,31(20):87-92.
[5] 刘安战, 贾晓辉.基于Andriod的私密短信系统设计与实现[J].微型机与应用,2012,31(17):51-56.
作者简介:惠燕(1979—),女,陕西咸阳人,硕士,讲师,主要研究方向为计算机网络管理,计算机软件理论。