OPhone程序开发入门之音乐播放器参考

上传人:枫** 文档编号:503583349 上传时间:2023-05-06 格式:DOC 页数:19 大小:476.50KB
返回 下载 相关 举报
OPhone程序开发入门之音乐播放器参考_第1页
第1页 / 共19页
OPhone程序开发入门之音乐播放器参考_第2页
第2页 / 共19页
OPhone程序开发入门之音乐播放器参考_第3页
第3页 / 共19页
OPhone程序开发入门之音乐播放器参考_第4页
第4页 / 共19页
OPhone程序开发入门之音乐播放器参考_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《OPhone程序开发入门之音乐播放器参考》由会员分享,可在线阅读,更多相关《OPhone程序开发入门之音乐播放器参考(19页珍藏版)》请在金锄头文库上搜索。

1、OPhone平台提供了完整的多媒体解决方案。为开发者提供了统一的,简单易用的开发接口。本文首先介绍了OPhone平台的多媒体框架,然后详细介绍了在OPhone平台上开发音乐播放程序所需的基本知识。通过一步一步构建一个简单的音乐播放器示例程序,来帮助读者了解具体的开发过程。该示例涵盖了Application,Activity,Service,Intent,BroadCast Receiver等基本概念,使读者对OPhone程序的开发有一个全面的了解,进一步巩固和熟悉这些基本概念。最后介绍了如何利用MAT工具分析OPhone 程序。 本文适合OPhone平台开发的初学者阅读。(作者:CMRI 孟钊

2、)OPhone平台的多媒体架构 在开始构建我们的示例程序前,先让我们大概了解一下OPhone平台的多媒体框架。图 一 图一是OPhone平台的整体框架结构,从图上我们可以看出OPhone平台大致可以分成以下几个层次:1. 最上层是Application层。它包含了主屏,电话,浏览器,地址本等核心的应用程序。我们将开发的音乐播放器也属于这一层。 2. 第二层是Application Framework层。这一层为开发者提供了完整的编程接口。多媒体部分提供了MediaPlayer, MediaRecorder等接口。同时MediaProvider,MediaScanner等系统服务也对媒体文件的管

3、理提供了支持。本文将重点介绍它们的使用。 3. 第三层是Library层, 它由一系列的c/c+库组成,这些库的能力通过JNI封装成java接口,由Application Framework层提供给开发者。多媒体系统库OpenCore,它是OPhone多媒体的核心,来源于PacketVideo。它非常复杂,提供了完整的多媒体解决方案。 4. 最底层为Linux Kernel和驱动,负责与硬件的数据交互等。 图二说明了在OPhone平台中播放音乐文件时的调用关系。对于应用程序开发者来说,需要重点学习和关注的是如何使用Appliation Framework层提供给开发者的接口。音乐媒体信息的管理

4、在开始构架程序之前,我们需要准备一下必须的基本知识。首先来了解一下在OPhone平台中应该如何获取音乐文件的信息以及如何管理这些信息。OPhone系统提供了MediaScanner,MediaProvider,MediaStore等接口,并且提供了一套数据库表格,通过Content Provider的方式提供给用户。当手机开机或者有SD卡插拔等事件发生时,系统将会自动扫描SD卡和手机内存上的媒体文件,如audio,video,图片等,将相应的信息放到定义好的数据库表格中。在这个程序中,我们不需要关心如何去扫描手机中的文件,只要了解如何查询和使用这些信息就可以了。MediaStore中定义了一系

5、列的数据表格,通过ContentResolver提供的查询接口,我们可以得到各种需要的信息。下面我们重点介绍如何管理SD卡上的音乐文件信息。先来了解一下ContentResolver的查询接口:view plaincopy to clipboardprint?1. Cursorquery(Uriuri,Stringprojection,Stringselection,StringselectionArgs,StringsortOrder);Cursor query(Uri uri, String projection, String selection, String selectionArg

6、s, String sortOrder); Uri:指明要查询的数据库名称加上表的名称,从MediaStore中我们可以找到相应信息的参数,具体请参考开发文档。 Projection: 指定查询数据库表中的哪几列,返回的游标中将包括相应的信息。Null则返回所有信息。 selection: 指定查询条件 selectionArgs:参数selection里有 ?这个符号是,这里可以以实际值代替这个问号。如果selection这个没有?的话,那么这个String数组可以为null。 SortOrder:指定查询结果的排列顺序查询所有歌曲:view plaincopy to clipboardpr

7、int?1. Cursorcursor=query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,MediaStore.Audio.Media.DEFAULT_SORT_ORDER);Cursor cursor = query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);该命令将返回所有在外部存储卡上的音乐文件的信息,其中常用的信息如下:view plain

8、copy to clipboardprint?1. MediaStore.Audio.Media._ID:歌曲IDIntid=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID);MediaStore.Audio.Media.TITLE:歌曲的名称Stringtilte=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE);MediaStore.Audio.Media.ALBUM:歌曲的专辑名Stringalb

9、um=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM);MediaStore.Audio.Media.ARTIST:歌曲的歌手名Stringartist=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST);MediaStore.Audio.Media.DATA:歌曲文件的路径Stringurl=cursor.getString(cursor.getColumnIndexOrThrow(Medi

10、aStore.Audio.Media.DATA);MediaStore.Audio.Media.DURATION:歌曲的总播放时长Intduration=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION);MediaStore.Audio.Media.SIZE:歌曲文件的大小Intsize=cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE);MediaStore.Audio.Media._ID:歌曲ID

11、 Int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID); MediaStore.Audio.Media.TITLE:歌曲的名称 String tilte = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE); MediaStore.Audio.Media.ALBUM :歌曲的专辑名 String album = cursor.getString(cursor.getColumnIndexO

12、rThrow(MediaStore.Audio.Media.ALBUM); MediaStore.Audio.Media.ARTIST:歌曲的歌手名 String artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST); MediaStore.Audio.Media.DATA:歌曲文件的路径 String url = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA); MediaS

13、tore.Audio.Media.DURATION:歌曲的总播放时长 Int duration = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION); MediaStore.Audio.Media.SIZE: 歌曲文件的大小 Int size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE); 查询歌手信息:view plaincopy to clipboardprint?1. Cursorcu

14、rsor=query(MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,null,null,null,MediaStore.Audio.Artists.DEFAULT_SORT_ORDER);Cursor cursor = query(MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Artists.DEFAULT_SORT_ORDER);该命令将返回所有在外部存储卡上的歌手信息,其中常用的信息如下:view plaincopy to cl

15、ipboardprint?1. MediaStore.Audio.Artists._ID:歌手idIntid=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Artists._ID);MediaStore.Audio.Artists.ARTIST:歌手姓名Stringname=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Artists.ARTIST);MediaStore.Audio.Artists.NUMBER_OF_ALBUMS:共有多少该歌手的专辑IntnumOfAlbum=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Artists.NUMBER_OF_ALBUMS);MediaStore.Audio.Artists.NUMBER_OF_TRACKS:共有多少该歌手的歌曲IntnumOfSong=cursor.getInt(cursor.ge

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号