一种Android平台手机播放器的设计与实现

  • 格式:pdf
  • 大小:996.64 KB
  • 文档页数:4

移动应用

—种 Android 平台手机播放器的设计与实现

陈海霞

(广州市海珠区瀛洲小学,广州510320)

摘 要:随着移动互联网技术的发展,智能手机应用给人们的工作和生活带来了便利。基于Android平

台设计一种手机播放器,软件采用Java语言开发,其功能包括媒体播放、暂停、重播、停止、录音和 文件浏览等,可满足人们在移动互联网络环境下的媒体文件的播放需求。

关键词:手机播放器;Android平台;Java语言

1概述

随着计算机技术和移动互联网的快速发展, 智能

手机给人们的工作和生活带来了众多便利性, 同时, 也丰富了人们娱乐消费方式。听音乐看视频是人们日

常娱乐消费中最常见的形式,在移动互联高度发达的

今天,几乎每个人都会去获取多媒体资源。基于An­droid 平台设计,采用Java编程技术,开发具有媒体播

放、暂停、重播、停止、录音和文件浏览的移动播放

器软件, 满足人们在移动互联网络中播放音乐和视频 的需求。

2开发平台和技术

2.1 Android 平台

2007年11月,Googel宣布推出基于Linux的An­

droid 开放式手机操作系统,沿袭至今,已成为最主流

手机系统平台。基于Android平台开发手机软件是国内

外研究移动应用开发的主流方向,国内移动应用厂商展 开了积极的研究,开发的软件已经广泛涉及到教育、电

子商务、通信、办公、娱乐、游戏、出行、导航、地 图、电子邮件、智能家居、社交等多个领域,对人们生

活、 工作方式产生了极其深远的影响。

2.2 Eclipse开发工具

Eclipse是一种可扩展的开放源代码集成开发环境

(IDE)o Eclipse允许在同一 IDE中集成来自不同供应

商的工具,并实现了工具之间的互操作性,从而显著

改变了项目工作流程,使开发者可以专注在实际的嵌

入式目标上。Eclipse为工具开发商提供了更好的灵活

性,使他们能更好地控制自己的软件技术。Eclipse是

一个开放源代码的项目,任何人都可以下载Eclipse的 源代码,并且在此基础上开发自己的功能插件。同时

可以通过开发新的插件扩展现有插件的功能, 比如在 现有的Java开发环境中加入Tomcat服务器插件。可以 进行无限扩展, 而且有着统一的界面、 操作和系统资

源管理。

2.3 JavaJava语言是SUN公司于1995年5月推出的新一代

面向对象的计算机通用编程语言,是继WWW之后又

一引起世界轰动的产品。Java语言的特点是跨平台和强

大的网络编程功能。在Java语言诞生之前,Internet已 存在,所以Java语言本身就封装了大量进行网络编程 的类库, 使得网络编程功能强大, 同时又简化了网络编

程的操作。因此利用Java语言可以开发出功能强大的 网络应用程序。

3系统功能模块

设计的手机播放器软件分为播放、 录音、 文件浏览

3个部分,一共有6项功能,其结构图如图1所示,具

体描述如下:(1) 播放功能: 正常播放音频或视频软件。

(2) 暂停功能: 暂停正在播放的媒体文件并记得该

作者简介:陈海霞(1981-),女,中小学一级教师, 本科, 研究方向: 小学教育、 信息技术、 教育技术。SreeaeBBHI*>SBSI3EIEIEIEIffiEBBI!IBBBeaeBI3BigBlslBBai3IIBBEISBHI3glBBIIIIIIBSSI3aBIIIglEISa3BEIQISB>E实用第一f智慧密集

文件在哪个点上暂停。

(3) 停播功能:停止正在播放的媒体文件。

(4) 重播功能:可以在任何时候重新播放用户所选 择的媒体文件。

(5) 录音功能: 能够进行音频录制。

(6) 文件浏览功能:让用户可以进入自己手机里的

SD卡并选择SD卡里面的媒体文件进行播放。

4主要功能流程

4.1播放媒体文件播放媒体功能是本软件的核心功能,用户按下播放 按钮时,它会自动地从文本框中读取文件的名字和路

径。如果用户选择的文件是媒体文件,则根据其后缀名 来判定是音频或视频,然后开始播放。如果用户选择

的文件不是媒体文件, 系统向用户发出不是媒体文件的

提示。

4.2重播媒体文件按下重播键,软件会判定用户是否有选择正确的媒 体文件。 如果有的话, 就会不管媒体文件是否正在播

放, 软件都会重新播放媒体文件。 如果没有的话, 就不 会有任何反应。

4.3 录音

按下录音键, 软件将会启动录音功能, 为用户录制 音频文件,当用户再次按下录音键时将会停止录音,并

在软件界面的文本框中显示出该录音文件的文件名。

4.4浏览文件

按下浏览键,将会进入一个小型的文件浏览器。用 户可以根据个人的喜好来选择播放的文件,如果选择的 是文件夹,将会进入文件夹继续选择,一直到用户选择

的是一个非文件夹的文件。 然后, 软件会将用户所选的 文件的名字和路径进行读取, 以便播放用户想要播放的

媒体文件。

5主要功能实现

5.1播放部分的功能模块

(1) 播放模块: 需要用到的 mediaPlayer 方法, 分

别是:1) setDataSource(): 获取文件路径方法。

2) prepare():播放器进入准备状态的方法。

3) start(): 开始播放的方法。

先判断用户选择的媒体文件是音频或视频, 再使用

setDataSource。方法获取到文件的路径,接着用medi- aPlayer.prepare()方法使播放器进入准备播放状态,然

后使用 start() 方法, 播放用户所选择的媒体文件。(2) 暂停模块:需要用到的mediaPlayer方法,分

别是:1) isPlaying(): 表示播放器正在播放的方法。

2) getCurrentPosition(): 记录暂停点的方法。

3) pause(): 使播放器暂停的方法。

先用 mediaPlayer.isPlaying() 判定播放器是否正在播 放媒体文件 , 如若是, 则使用 getCurrentPosition() 方法

获取媒体文件在哪个点上被暂停了,之后用pause()方 法来暂停正在播放的媒体文件。(3) 停播模块: 需要用到的 mediaPlayer 方法, 分

别是:1) isPlaying (): 表示播放器正在播放的方法。

2) stop (): 使播放器停止播放的方法。

先判定播放器是否正在播放媒体文件, 如若是, 则 使用 stop() 方法来停止播放的该媒体文件。(4) 重播模块: 需要用到的 mediaPlayer 方法, 分

别是:1) setDataSource(): 获取文件路径方法。

2) prepare():播放器进入准备状态的方法。

3) start(): 开始播放的方法。

4) seekTo(0):使文件的播放点归到0处的方法。

不管播放器是否正在播放, 只要用户已经选择了要播放的媒体文件, 软件将会先用 mediaPlayer.seekTo (0) 这一方法来停止一切有可能在进行播放的文件 , 目的

是让播放点放回到0处,可使文件重新播放。接着判断 用户选择的媒体文件是音频或视频,并使用setData- Source() 方法获取到文件路径, 用 mediaPlayer.prepare()

方法使播放器进入准备播放状态,然后使用start()方 法, 实现用户文件重新播放。

5.2 录音功能模块

为了要实现录音功能,在录音键上设有监听器,只 要用户按了录音键, 就可以进行录音。 这一功能主要是 要设置麦克风和创建录音文件来实现。首先用以下代码 进行设置麦克风和确定输出文件的类型等准备工作:

m MediaRecorder01.setAudioSource (Medi- aRecorder.AudioSource.MIC);mMediaRecorder01 .setOutputFormat (Medi- aRecorder.OutputFormat.DEFAULT);mMediaRecorder01.se tAudioEncoder (Medi-移动应用

aRecorder.AudioEncoder.DEFAULT);

在做设置工作后,就用star。方法来进行录音, stop。方法用于停止录音,并显示命名录音文件名的对

话框。

5.3文件浏览功能模块

用户需要根据需要选择播放指定的文件,因此需 要设计一个具有文件浏览功能的文件浏览器模块。该

模块分别由 Main、FileActivityHelper、FileAdapter、File- Comparator、FileInfo、FileUtil、PasteFile 这 7 个 Activity

构成。

Main 中的 Activity 包含了该文件浏览器的各项功能

方法, 通过 Activity 的一个传递数据对象 Intent, 从各种

不同的 Activity 中获取数据并能完成文件浏览器的基本

功能。显示上下文菜单长按出现的列表功能、上下文菜 单事件功能、文件被点击事件处理功能、重定义返回事

件功能、 获取从 PasteFile 传递过来的路径功能、 创建菜 单功能、 菜单事件功能、 获取该目录下所有文件功能和

退出文件浏览器功能。

以下是各功能实现的主要方法:(1) 显示上下文菜单时长按出现的列表功能, 主要

通过 menu 对象方法来完成, 以下是主要代码:menu.setHeaderTitle(f.Name);menu.add (0, MENU_INFO, 5, getString(R.string. file_i nfo));

(2) 文件被点击事件是通过FileInfo fileInfo = _files.

get (info.position)这一语句来获取点击文件位置,再利

用 switch 语句对用户所选进行判断, 然后作出相应的功

能响应。

(3) 文件被点击事件是通过FileInfo f = _files.get

(position) 这一语句来获取被用户点击文件的位置, 再

使用If语句对该文件进行判断。如果是用户点击的是文 件夹,就进入该文件夹。如果该用户点击的是媒体文

件, 就会通过 Intent 这一对象将文件的名字和路径转回

到 MusicActivity 中遥 与此同时,通过 Main.this.finish () 这一方法关闭文件浏览器,而文件名将会在MusicAc­tivity 的文本框中呈现出来。

(4) 重定义返回事件功能,通过对keyCode ==

KeyEvent.KEYCODE_BACK进行判断,观测用户是否按

了返回键,如果是就会返回上一级菜单;再设定判定条

件parentPath ! = null,当该菜单不是SD卡最顶级的菜 单时,就继续返回,否则退出文件浏览器。

(5) 获取 PasteFile 传递过来的路径功能, 主要是通

过 if (Activity.RESULT_OK == resultCode)和 if (bundle ! =null && bundle.containsKey (" CURRENTPATH"))这

两个语句来完成, 关键代码如下:if (Activity.RESULT_OK == resultCode) {Bundle bundle = data.getExtrasO;if (bundle ! = null && bundle.con- tainsKey("CURRENTPATH")){ viewFiles(bundle.getString("CURRENTPATH"));}}(6) 创建菜单功能, 通过语句 MenuInflater inflater =this.getMenuInflater()实现对其赋值,再执行以下代码:inflater.inflate(R.menu.main_menu, menu); return true;(7) 菜单事件功能,通过 switch (item.getItemId())