kl800.com省心范文网

基于Android平台声控音乐播放器的设计与实现_图文

基于 Android 平台声控音乐播放 * 器的设计与实现
周丽娴, 梁昌银, 沈 ( 重庆邮电大学 【摘 泽 通信网与测试技术重点实验室, 重庆 400065 )

·实用设计·

要】随着语音识别技术的不断发展, 人机交互将更多依赖于语音交流。 因此, 在移动终端开发出功能实用以

并结合 及界面美观的手机声控应用程序具有广阔的市场前景。基于 Android 移动平台开发设计了声控音乐播放器, Google 语音识别技术, 以及对音乐播放功能的实现, 最终设计出一个可以语音来控制音乐收听的应用 。 同时, 还创 使用户能够用语音快速查找到手机 SD 存储卡中的同一歌手的所有歌曲。 通过 造性地实现了语音搜索歌曲的功能, 语音播放音乐的功能完全实现, 性能稳定可靠, 实用性强。 真机测试, 【关键词】Android; Google 语音识别; 声控; 音乐播放 【中图分类号】TN912 【文献标志码】A Design and Implementation of Voicecontrol Media Player on Android ZHOU Lixian,LIANG Changyin,SHEN Ze ( Key Lab. on Communication Networks and Testing Technology,Chongqing University of Posts and Telecommunications,Chongqing 400065 ,China) 【Abstract】With the development of voice recognition technology, the interaction between machines and brains will rely more control application of practical on voice communication. Therefore,it will be a vast future market for developing mobile voicefunction and beautiful panel. The media player of this thesis designed is based on Android platform,by integrating Google voice technology,with the implementation of music player function,a software application is designed which could help the the idea is came up creatively and the same theory can be used to realize user listen to music by voice command. In the meantime, the function of searching the songs by speech, so that the users could find the same singer’ s all the songs in SD memory card by voice. According to the real machine testing, it fully realized the voice activated playing, the performance is stable and reliable. 【Key words】Android; Google speech recognition; voice - control; music playing

1

引言
随着通信设备网络和计算机科学的不断发展, 智能

曲, 只要说出歌曲的名字或者演唱者的名字就能够播 同时, 还能实现以下功能: 在听歌时, 放想听的歌曲, 可以随时拉动进度条控制音乐的播放进度, 可以实现 歌曲播放状态的切换; 在歌曲列表中, 还可实现歌曲
[ 1 -2 ] 。它的后 的移除, 同时, 歌曲播放支持后台操作

手机不再仅是通信网络的终端, 还将成为互联网的终 端, 新一代的移动终端用户对移动设备的功能和性能有 用语音来控制手机更是逐渐成为 了更高的要求。目前, 高端智能手机的必备功能之一。在很多特殊的环境中, 比如驾车, 或者只是放松地坐着, 有时人们会希望解放 通过声音就能操纵手机应用, 让生活更便利。 双手, 本终端应用是一款基于 Android 系统开发的, 对 手机进行语音操作的音乐播放器, 利用 Google 语音 加上 GPRS 或 WiFi 信号, 就可以语音查找歌 搜 索,
*

台功能让软件以最小消耗换取最多的收益, 真正让用 欢乐无忧。 户轻松自由,

2
2. 1

研究基础
Android OS 架构研究 Android 手机系 在 Android 作为平台的手机中,

统是基于 Linux 平台的开源手机操作系统, 其软件架 包括应用层、 应用平台层和系统 构又可分为三层, 层
[ 3 -4 ]

[ ] 重庆市知识产权专项基金; 国家科技重大专项 基金项目

。其中, 应用平台层位于 Android 操作系统和

( 2012ZX03005002 - 005 ) ; 重庆市应用开发计划项目( cstc2013 yykfA40006 )

HomeScreen 用于用户开始显示, 是管理 应用层之间, 和开启应用程序的平台。最上层的应用层包含了手

32

机上安装的各种应用程序, 包括通讯录、 短信息和相 机等。本文研究和实现的声控音乐播放器也属于该 层。声控者乐播放器架构图如图 1 所示。

图1

声控音乐播放器架构图

2. 2

终端应用架构及运行流程 本远程终端应用是基于广义上的 C / S 服务架构
图2 音乐播放器功能模块图

主要应用于通过语音信号识别用户指令, 从而 开发, 完成指定工作, 客户端即为 Android 手机, 服务端为 Google 语音处理服务端
[ 5 ]

得从 SongSourceActivity 得 到 全 部 歌 曲 资 源 列 表; ( 2) 语音查找歌曲; ( 3 ) 获得语音查找的歌曲列表; ( 4) 播放列表歌曲和语音查找到的歌曲。 3. 2. 1 获取全部歌曲资源列表 获得手机 SD 卡中所有的歌曲是播放器播放音 主要是需要取得歌曲名或演唱者名和歌曲 乐的前提, 所在的路径。 首先需要检测 SD 卡的状况, 看 SD 卡是否已经正 通过判断语句 Environment. get ExternalStor确安装, ageState( ) . equals( Environment. MEDIA_MOUNTED) 真 通过 Cursor cursor 获取得到 SD 卡上 假来判断。其次, 所有的歌曲数据, 其方法为( 省略部分参数) :
Cursor cursor = context. getContentResolver( ) . query( MediaStore. Audio. Media. EXTERNAL_CONTENT_URI,new String [ ] { …… } , MediaStore. Audio. Media. MIME_TYPE + " = ? or " + new String[ ] { MediaStore. Audio. Media. MIME_TYPE + " = ?" , " audio / mpeg" , " audio / xmswma" } , null) ;

。本应用系统功能在于实

时识别并执行用户语音指令。 音乐播放器的层次架构主要由三部分组成, 包 括音乐库层、 音乐播放层和后台服务层。其中音乐播 放层包括了音乐播放的主界面模块以及播放队列模 块, 音乐播放的主界面模块贯穿程序的始终, 作为整 个系统的主模块, 允许其他模块的切入和切出。而播 放队列模块是指音乐库中包括正在播放的歌曲的集 合。后台服务模块包括音乐服务模块和服务控制模 块。音乐服务模块负责播放和控制音乐播放状态。

3
3. 1

软件功能实现
软件的功能模块 根据对音乐播放器的功能性需求分析, 可按功

能对本应用划分出功能模块图, 主要包括两个模块, 分别是与用户交互的界面实现的功能模块和后台实 现的功能模块, 如图 2 所示。 3. 2 播放器主要模块的详细设计与实现 本音乐播放器的三大模块中的核心组件是 MusicPlayerActivity 和 MusicService, 其中 MusicPlayerActivity 是最重要的组件, 作为整个应用程序最核心的 组件, 它的实现分为两部分, 一是良好的视觉效果, 即 简单大方的 UI 设计, 另一方面是内部逻辑, 包括实时 更新状态、 维护管理生命周期和一些切入切出的跳 MusicPlayerAc转。从声控音乐播放器的功能来看, tivity 的设计过程应该从四个方面来考虑: ( 1) 需要获

遍历游标 cursor 对象, 将歌曲名和歌曲存储路径 分别存储到数据链表集 songName_list 和 songPath_list 之中, 即可获取到所有的音乐资源列表。获取全部歌 曲资源列表流程图如图 3 所示。 3. 2. 2 语音查找歌曲 语音找歌是本应用最大的特色功能, 其实现原理 将得到的 是利用 Google voice 解析用户语音输入指令, 语音输入结果与手机上存储的歌曲数据进行匹对, 匹对 成功则即可成功播放该音乐。语音查找歌曲模块主要 实现两个功能: ( 1) 获得语音数据; ( 2) 数据匹对与存储。

33

图3

获取全部资源列表流程图 4

获取语音识别数据流程图

( 1) 获得语音数据 Google 语音服务需要网络支持, 所以需要检测当 因此, 为增强用户体验, 笔者 前用户的网络连接状况, 设计了自动检测当前用户的网络连接状况的模 块
[ 6 ]

① 歌曲名字 - 歌手名字. mp3; ② 歌曲名字. mp3; ③ 歌手名字. mp3。 其中以第一种形式最为常见, 程序设计时, 这三 种情况都需要考虑到。另外, 手机存储的所有歌曲曲 目中, 一个歌手往往对应有很多首歌曲或者甚至有可 能是不同的歌手对应同一歌曲名, 在匹对过程中, 用 数据集 song_namelist 和 song_pathlist 分别来存储这 两种情况下的歌手名字和歌曲名字, 作为语音查找到 的歌曲列表 songOfSdCard_ListView 所用的数据源。 最后, 获取数据后对数据进行匹对的结果终存入 song_namelist 和 song_pathlist 中, 流程图如图 5 所示。

。在主类 MusicPlayerActivity 中利用方法 check-

NetWorkStatus( ) 引用 ConnectivityManager cwjManager 对象来判断网络是否连接正常。 此外, 要用到 Google 语音搜索服务, 必然需要 判断当前用户手机是否支持该服务, 所采用的方法 是通过 queryIntentActivities( ) , 查询 Android 系统的 所有 具 备 RecognizerIntent. ACTION _ RECOGNIZE _ SPEECH 的 Intent 的应用程序, 若有, 点击开启此服 务后, 能启动本应用。 语音识别完成后, 调用回调函数 onActivityResult( ) 回调获取从 Google 得到的数据, 写入数据集 链表 voiceData_list 之中:
voiceDate_list = data. getStringArrayListExtra ( RecognizerIntent. EXTRA_RESULTS) ;

获取语音识别数据的具体流程如图 4 所示。 数据集链表 voiceDate_list 存储的数据将用来与 手机存储的歌曲数据信息进行匹对。 ( 2) 数据匹对 数据匹对需要遍历存储歌曲名称的数据链表 songName_ list 和 语 音 识 别 的 后 返 回 的 数 据 链 表 voiceDate_list。为了增 加 匹 配 的 有 效 性, 在匹配之 前, 使用 String 类的 replace( ) 去掉两个数据链表中 仅仅只是大小写不相同的字符应 无效的空格; 此外, 该 视 为 相 等, 即需要用 equalsIgnoreCase( ) 方法来比 较两个字符串是否相等。 歌曲名称的形式并不固定, 往往具有以下三种 常见的形式: 3. 2. 3 音乐播放 音乐播放列表主要是有两个播放列表, 其一是从 音乐库中获得的音乐数据并显示在 songOfSdCard_Li图5 获取歌曲数据流程图

34

stView 控件中的列表, 其二是通过语音找歌获得的同 一歌手的所有歌曲或者相同歌曲名的多首歌曲数据 列表, 这些数据显示在 songOfVoice_ListView 控件中。 要播放这两个列表中的歌曲, 需要对上面两个 ListView 每个 item 条目进行事件监听, 点击其中一项后, 对后台音乐控制服务进行唤起: Intent intent = new Intent( ) ; intent. setClass ( MusicPlayerActivity. this, MusicService. class) 。 同时, 利用 Bundle 对象传递 ListView 上触发点击 事件所对应项目上的歌曲名和歌曲路径, 歌曲路径将 作为 Android 内置的播放音频或视频的 MediaPlayer 对 歌曲名作为 TextView 的内容显示给用 象的数据源, 户当前正播放的歌曲名称。 如果用户通过语音指令找到了唯一的一首歌 曲, 则使用 MediaPlayer 对象播放这首歌曲, 如果同时 找到了几首歌曲, 则默认播放列表中的第一首。 音乐播放需要能够显示当前音乐播放的时长信 息、 能够用进度条控制音乐的播放进度和能够控制音 暂停 / 开始) 。 乐播放的状态( 重置, ( 1) 更新播放的时长信息 音乐播放的时长信息包括歌曲的总时长和歌曲 本应用使 Android 的 Handle 机制来实 正播放的时长, 这样在退出 MusicPlayer现这两个控件的异步更新, Activity 界面再重新进入的时候, 时长信息能够动态 更新。 ( 2) 进度条控制播放进度 MusicPlayerActivity 实现了 OnSeekBarChangeListener 类中的 onProgressChanged ( ) 方法, 从而拖动进 度的时候能够实现音乐的快进和快退 ( 3) 音乐播放状态的控制 音乐播放的状态控制包括重置播放 ( 重新开始 暂停音乐播放和开始音乐播放。 播放) , 音乐播放的流程图如图 6 所示。 3. 2. 4 音乐播放的后台服务 在 Android 中可以这种方式使用服务: 服务可以 启动并运行, 直至有人停止了它或它自己停止。在这 种方式下, 可以通过 Context. startService ( ) 启动服务, 通过 Context. StopService ( ) 结束 服 务。本音 乐 播 放 器正是采用了这种方式来开启和停止服务。 音乐播放服务端的主要功能是控制音乐的播放 状态和监听其他事件。 ( 1) 控制音乐播放的状态 ① 初始化 MediaPlayer 的 mediaPlayer 对象 该函数中主要调 使用初始化函数 playMusic ( ) , 用了 mediaPlayer 的几种方法, 包括: reset ( ) 方法, 该 方法可以使播放器从 Error 状态中恢复过来, 重新回 到 Idle 状态; 另外还使用 mediaPlayer 的 setDataSource ( ) 方法设置 SD 卡路径下的媒体文件, 并最终通过 start( ) 真正启动文件播放。此外, 在该函数中, 创建 了一个新线程来启动进度条的状态: new Thread ( new seekBar( ) ) . start( ) 。 SeekBar( ) 类实现了 Runnable 接口, 在该类中实 现了进度条状态和显示时长控件的更新。 ② 音乐的暂停 / 开始以及重置 通过判断 mediaPlayer. isPlaying ( ) 的值是否为真, 如果为真, 说明音乐正在播放, 当按下暂停 / 开始按钮 时, 暂停音乐播放, 如果按下重置按钮时, 则通过 mediaPlayer. seekTo( 0) 实现音乐的从头播放; 如果不为真, 则开始音乐播放, 这样就实现了播放状态的切换。 ( 2) 监听其他事件 监听其他事件主要是指检测音乐播放器是在前台 前台运行是指当前用户未退出音乐 还是在后台运行, 即没有退出 MusicPlayerActivity; 后台运行 播放的界面, 则表示已经退出, 同时音乐还在后台播放。首先是创 建 ActivityManger 类的对象 activityManager 并初始化, 然后用 getRunningAppProcesses ( ) 方法得到所有正在 并存入数据链表集 appProcesses, 遍历该 运行的进程, 集合, 通过判断 appProcess. processName. equals ( packageName) && appProcess. importance = = RunningAppPro图6 音乐播放的流程图

35

cessInfo. IMPORTANCE_FOREGROUND) 语句是否为真 来看应用是否在后台运行。 如果监听到应用在后台运行, 则通过创建一个 NotificationManager 对象的引用来管理通知栏消息, 包括显示后台有音乐正在播放的信息, 点击该通知栏 消息后进入音乐播放的主界面等, 部分代码如下:
/ / 将此通知放到通知栏的" Ongoing" 即" 正在运行" 组中 notification. flags | = Notification. FLAG_ONGOING_EVENT; / / 点击后自动清除 Notification notification. flags | = Notification. FLAG_AUTO_CANCEL;

际的意义。 本系统界面大方友好, 操作快捷方便。经过系统 测试, 可以稳定运行。
参考文献 [ 1 ] 靳岩,姚尚朗. Android 开发入门与实战[ M] . 北京: 人民 2009. 邮电出版社, [ 2 ] 余志龙,陈昱勋,郑名杰. Google Android SDK 开发范例 M] . 北京: 人民邮电出版社, 2009. 大全[ [ 3 ] 张利国,龚海平,王植萌. Android 移动开发入门与进阶 [ M] . 北京: 人民邮电出版社, 2009. [ 4 ] E2ECloud 工作室. 深入浅出 Google Android[ M] . 北京: 人 2009. 民邮电出版社, [ 5 ] 舒贤 华. 基 于 Android 平台的手机 Web 地图服务设计 [ D] . 大连: 大连海事大学, 2009. [ 6 ] 许瑾. 基于 Android 平台音乐播放器的设计与实现[ D] . 2011. 北京: 北京邮电大学, 作者简介 周丽娴, 硕士研究生, 主要研究方向为通信网测试; 梁昌银, 硕士研究生, 主要研究方向为通信网测试; 沈泽, 硕士研究生, 主要研究方向为通信网测试。

4

结束语
笔者对目前基于趋于主流的 Android 系统的架

构模型和组件模型进行了分析, 阐述了声控音乐播放 器的几个主要模块的总体设计及界面布局, 并且细致 描述了几个主要组件的具体实现过程。 声控音乐播放器是对日益兴起的语音识别技 术的一次创新性的尝试, 语音技术给人们 的 生 活 带 来了新鲜和便利, 而收听音乐又是人们日常生活中

[ [ 2013-04-11 责任编辑] 闫雯雯 收稿日期] 必不可少的娱乐, 把 这 两者结合在一起, 具有很实 ?????????????????????????????????????????????? ( 上接第 27 页)

一端 接 C XA 或 C XB 引 脚, 二者的另一端接共同端 C RFTURN 脚。 ( 7) 制作中, 良好的工艺设计至关重要。比如, 为减小电路板的漏电流, 需选用如环氧玻璃板之类的 高绝缘的印制板材; 信号输入脚要采用 ESD ( 静电放 即在电路板上用接地屏蔽环将运放的 电) 保护措施, 以确 同相输入端和反相输入端包围起来使其等电位, 保两输入端之间的漏电流尽可能小。否则, 若假设同 相端与反相端之间的绝缘电阻为 10
11

的挑战。对微传感器来说, 由于其输出信号主要处在 低频端, 且信号幅度小, 要设计并制作好具有良好性能 的放大微弱信号的前置放大器, 除合理选用电路、 了解电 路原理外, 还须在制作工艺方面的处理及测试方面的知 识都应有一定了解。本文的介绍只抛砖引玉作参考。
参考文献 [ 1 ] 复旦大学物理系. 半导体线路[ M] . 上海: 上海人民出版 1972. 社, [ 2 ] 文亚凤, CMOS 斩波集成运放简 赵莲清, 刘向军. ICL7650J] . 现代电子技术, 2006 , 227 ( 12 ) : 19 - 20. 介及应用[ [ 3 ] 徐光煜, 颜永红. D 类音频系统中斩波运放电路的设计 [ J] . 微计算机信息, 2009 ( 20 ) : 232 - 234. [ 4 ] MAXIM. Chopperstabilized OP amps. 2000 Maxim integrated products[ EB / OL] . ( 2000 - 10 - 15) [ 2013 - 08 - 11] http: / / www. Intelsil. com. [ 5 ] 尹韬, 杨海钢, 刘珂. 一种适用于微传感器读出电路的低噪声 [ J] . 半导体学报, 2007, 28( 5) : 796 - 801. 低失调斩波放大器 [ 6 ] 吴 祖 国. ICL7650 斩 波 稳 零 运 算 放 大 器 的 原 理 及 应 用 [ J] . 国外电子元器件, 2003 ( 4 ) : 41 - 42. [ 7 ] 何亚宁. S 类功率放大器原理分析与改进[ J] . 电声技术, 1993 ( 12 ) : 32 - 33. [ 责任编辑] 史丽丽 [ 2013-09-12 收稿日期]

Ω, 同相端接

地, 当反相端输入 1 V 信号时, 则漏电流为 10 pA, 它 是 ICL7650 偏置电流的 10 倍; 印制板上的元器件装 配并焊接好之后, 必须用三氯乙烯或酒精进行彻底清 并用压缩空气吹干, 然后应该用环氧树脂或硅有 洗, 机树脂进行涂复。

4

结束语
斩波放大器具有低噪声、 低失调电压、 结构简单的

特性, 适于微传感器读出电路的应用。现代 CMOS 集 成电路工艺越来越朝着提高数字电路特性的方向发 这使得数字环境中的模拟信号处理不得不面对电 展, 源电压降低及 1 / f 噪声电压、 失调电压的增大所带来

36


基于Android平台声控音乐播放器的设计与实现_图文.pdf

基于Android平台声控音乐播放器的设计与实现 - 基于 Android 平台

e4Android平台声控音乐播放器的设计与实现_图文.pdf

e4Android平台声控音乐播放器的设计与实现 - 基于Android平台声控音乐播放 ?实用设计? 器的设计与实现术 周丽娴,梁昌银,沈泽 (重庆邮电大学通信网与测试技术重点...

基于Android平台声控音乐播放器的设计与实现_论文.pdf

基于Android平台声控音乐播放器的设计与实现 - 语 音技 术(、,) @6

基于Android平台的音乐播放器设计与实现_图文.ppt

基于Android平台的音乐播放器设计与实现 - 基于Android平台的音乐播放器设计 班学 级: 生: 指导老师: 目录一 、课题简介 二、需求分析 三、概要设计 四、详细设...

基于android平台的音乐播放器的设计与实现_图文.doc

基于android平台音乐播放器的设计与实现 - 学校代码: 学号: 1012

基于android的音乐播放器的设计与实现_图文.doc

基于android音乐播放器的设计与实现 - 河北农业大学 本科毕业论文 题目: 基于 Android音乐播放器的设计与实现 摘要 当今社会的生活节奏越来越快,随着移动硬件...

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

毕业论文(设计) 题 目:基于 Android 平台的手机音乐播放器的 设计与实现 基于 Android 平台的手机音乐播放器的设计与实现 毕业论文(设计)原创性声明 本人所呈交...

Android课程设计---基于Android系统的音乐播放器设计与....doc

Android课程设计---基于Android系统的音乐播放器设计与实现 - 课程设计报告书 课程名称: 操作系统原理 题 目: 基于 Android 系统的音乐播放器设计与实现 2012...

毕业论文:基于Android平台多媒体播放器的设计与实现(终....pdf

毕业论文:基于Android平台多媒体播放器的设计与实现(终稿)_林学_农林牧渔_专业资料。研究报告 您的评论 发布评论 用户评价 毕业论文:基于Android平台多媒体播放器...

基于Android的音乐播放器的设计与实现.pdf

基于Android音乐播放器的设计与实现 - 安卓开发文档,app开发设计文档... 基于Android音乐播放器的设计与实现_计算机软件及应用_IT/计算机_专业资料。安卓开发文档,...

基于android的音乐播放器的设计与实现大学论文_图文.doc

基于android音乐播放器的设计与实现大学论文 - 河北农业大学 本科毕业论文 题目: 基于 Android音乐播放器的设计与实现 摘要 当今社会的生活节奏越来越快,随着...

基于Android 的音乐播放器的设计和实现中文翻译文献_图文.doc

基于Android音乐播放器的设计和实现中文翻译文献_计算机软件及应用_IT/计算机_专业资料。基于 Android音乐播放器的设计和实现班级:13 级 计本 2 班 学号:...

...基于android的音乐播放器的设计与实现设计_图文.doc

软件工程毕业设计_基于android音乐播放器的设计与实现设计 - 河北农业大学 本科毕业论文 题目: 基于 Android音乐播放器的设计与实现 摘要 当今社会的生活节奏...

基于Android音乐播放器的设计与实现.doc

基于Android音乐播放器的设计与实现 - 滨江学院 《移动通信程序设计》 课程设计 题目 基于 Android 系统的音乐播放器 院专 系业 滨江学院 计算机科学与技术 王兵....

基于Android平台的手机音乐播放器的设计与实现.doc

基于Android平台的手机音乐播放器的设计与实现_计算机软件及应用_IT/计算机_专业资料...基于Android平台声控音乐... 暂无评价 5页 3.00 基于Android平台手机快速....

基于Android手机平台的音乐播放器【源码+论文】_图文.pdf

基于Android手机平台的音乐播放器【源码+论文】 - 本文主要是对Android系统上一的款音乐播放器应用程序的设计与实现进行讨论。本论文的音乐播放器采用了Android开源...

基于Android的手机音乐播放器的设计与实现PPT模板_图文.ppt

基于Android的手机音乐播放器的设计与实现PPT模板 - 基于android的音乐播放器 开发与实现 答辩人: 班级: 学院: lei xiao lei 10网络工程2班 电子与信息...

基于Android系统的音乐播放器设计与实现_含源程序.doc

基于Android系统的音乐播放器设计与实现_含源程序_工学_高等教育_教育专区。基于Android系统的音乐播放器设计与实现_含源程序 基于Android 系统的音乐播放器设计 与...

基于Android的音乐播放器的设计与实现_论文.pdf

基于Android音乐播放器的设计与实现 - 开发与研究 基于 Androi d音乐播放器的设计与实现 湖北工业 大学 邓日盏 摘要 : 而现今社会 生活紧 张, 而欣...

基于Android的音乐播放器的设计与实现.doc

基于Android音乐播放器的设计与实现 - 文献综述 题 目 基于 Android音乐播放器 的设计与实现 学生姓名 专业班级 学号 *** 计算机科学与技术(...