从07年末到现在,Android如火如荼的发展,网上已经有很多Android基本技术的文章视频了。我就不重复发明轮子了。目前比较缺少深入讲解Android系统自带应用的分析资料。Android系统自带的应用对于开发类似功能的应用有很大的参考价值。
从关注Android到做Android系统开发、应用开发也有一年多的时间了,期间做手机时需要修复Android源代码的一些bug,对Android系统有了大概的了解,感觉到Android的确是一个设计很好、实现一般的系统。后来陆续参与开发了4个商用的APP。对多媒体这一块儿了解还是比较多一些。下面就从Android系统自带的音乐播放器开始讲解。希望达到的目的是:大家参照我的系列文档,能够快速开发出基于Android平台的音乐播放器,开发者要做的是Design和差异化的功能。Design这一方面我还是比较欠缺的。希望出现好的设计打败目前的几个音乐播放器。
进入正题。首先概要介绍一下Android平台对音乐播放器提供的支持。Android系统对音乐播放提供了很多很好的支持,有了这些支持,开发减少了很多需要关注的细节,可以把精力集中在自己应用的独特性上,比如UI、交互、特色功能等。
对于基于Android平台开发应用的开发者,依赖的是Android的java框架和其他系统自带的应用,就音乐播放器开发者而言,比较方便的做法是使用Android的多媒体框架提供的支持(当然有实力也可以完全自己实现)。
下面介绍一下Andriod多媒体框架对开发者提供的支持有哪些。
1. MediaScannerReceiver
这个广播接收者在接收到ACTION_BOOT_COMPLETED、ACTION_MEDIA_MOUNTED或 ACTION_MEDIA_SCANNER_SCAN_FILE 广播时对SD卡中的图片、音乐和视频文件进行了扫描,因为扫描不能影响用户使用,这里启动了一个服务MediaScannerService,扫描的文件类型如下:
/* Audio */
addFileType("MP3", FILE_TYPE_MP3, "audio/mpeg");
addFileType("M4A", FILE_TYPE_M4A, "audio/mp4");
addFileType("WAV", FILE_TYPE_WAV, "audio/x-wav");
addFileType("AMR", FILE_TYPE_AMR, "audio/amr");
addFileType("AWB", FILE_TYPE_AWB, "audio/amr-wb");
addFileType("WMA", FILE_TYPE_WMA, "audio/x-ms-wma");
addFileType("OGG", FILE_TYPE_OGG, "application/ogg");
addFileType("MID", FILE_TYPE_MID, "audio/midi");
addFileType("XMF", FILE_TYPE_MID, "audio/midi");
addFileType("RTTTL", FILE_TYPE_MID, "audio/midi");
addFileType("SMF", FILE_TYPE_SMF, "audio/sp-midi");
addFileType("IMY", FILE_TYPE_IMY, "audio/imelody");
/* Video */
addFileType("MP4", FILE_TYPE_MP4, "video/mp4");
addFileType("M4V", FILE_TYPE_M4V, "video/mp4");
addFileType("3GP", FILE_TYPE_3GPP, "video/3gpp");
addFileType("3GPP", FILE_TYPE_3GPP, "video/3gpp");
addFileType("3G2", FILE_TYPE_3GPP2, "video/3gpp2");
addFileType("3GPP2", FILE_TYPE_3GPP2, "video/3gpp2");
addFileType("WMV", FILE_TYPE_WMV, "video/x-ms-wmv");
/* Image */
addFileType("JPG", FILE_TYPE_JPEG, "image/jpeg");
addFileType("JPEG", FILE_TYPE_JPEG, "image/jpeg");
addFileType("GIF", FILE_TYPE_GIF, "image/gif");
addFileType("PNG", FILE_TYPE_PNG, "image/png");
addFileType("BMP", FILE_TYPE_BMP, "image/x-ms-bmp");
addFileType("WBMP", FILE_TYPE_WBMP, "image/vnd.wap.wbmp");
/* Audio Play List */
addFileType("M3U", FILE_TYPE_M3U, "audio/x-mpegurl");
addFileType("PLS", FILE_TYPE_PLS, "audio/x-scpls");
addFileType("WPL", FILE_TYPE_WPL, "application/vnd.ms-wpl");
扫描结束后写入到数据库中。
其他的应用程序通过接收MediaScannerService发出的ACTION_MEDIA_SCANNER_STARTED 和ACTION_MEDIA_SCANNER_FINISHED意图能够知道什么时候扫描操作开始和结束。
2. MediaProvider
对于存入数据库的多媒体信息,MediaProvider提供了数据访问的接口。MediaProvider继承了ContentProvider,我们先来看一下数据查询接口:
Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);
Uri:指明要查询的数据库名称加上表的名称,从MediaStore中我们可以找到相应信息的参数,具体请参考开发文档。
Projection: 指定查询数据库表中的哪几列,返回的游标中将包括相应的信息。Null则返回所有信息。
selection: 指定查询条件
selectionArgs:参数selection里有 ?这个符号是,这里可以以实际值代替这个问号。如果selection这个没有?的话,那么这个String数组可以为null。
SortOrder:指定查询结果的排列顺序
下面的命令将返回所有在外部存储卡上的音乐文件的信息:
Cursor cursor = query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,
null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
获取ID标签中的歌曲的专辑名:MediaStore.Audio.Media.ALBUM
String album = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));
其他具体参数请参考MediaStore类。
第一讲就到这里,最近比较忙,更新较慢,有问题请发邮件。
分享到:
相关推荐
还有简单的密码验证 开发软件:Android StudioAndroid 开源在线音乐播放器Android 开源在线音乐播放器Android 开源在线音乐播放器Android 开源在线音乐播放器Android 开源在线音乐播放器Android 开源在线音乐播放器...
Android音乐播放器实战,实现本地歌曲播放控制,可后台播放,拔出耳机暂停,来电暂停,电话挂断继续播放。这个项目很好的结合了Android的四大组件知识。其中音乐来源于手机本地,使用了Content Provider获取,播放...
Android音乐播放器,本地播放,网络播放 Android音乐播放器,本地播放,网络播放
一个用Android实现的支持登录注册的简单音乐播放器
android音乐播放器需求分析,属于文档内容
Android简易本地音乐播放器源码,基于Android的简易本地音乐播放器源码
android 音乐播放器 经典完整代码 非常经典 非常好用 绝对是原创的哦 绝对可以使用的哦 学习之良品,项目代码涉及知识非常广泛,可以通过本项目代码学习到android的四大组件 以及很多编程技巧 希望各位同学好好利用.
Android实例源码-音乐播放器类安卓源代码(9例) Android多线程断点续传下载+在线播放音乐 GL音乐播放器 基于SDL、FFmpeg的android播放器源码 简单实用的音乐播放器 简单音乐播放器,实现了播放器基本功能,使用...
基于Android Studio开发的音乐播放器APP源码Android 音乐播放器源码
android音乐播放器Demo代码,欢迎各位下载。
android音乐播放 android音乐
android studio 音乐播放器.zipandroid studio 音乐播放器.zipandroid studio 音乐播放器.zipandroid studio 音乐播放器.zipandroid studio 音乐播放器.zipandroid studio 音乐播放器.zipandroid studio 音乐播放器....
Android 音乐播放器Android 音乐播放器Android 音乐播放器Android 音乐播放器Android 音乐播放器
android 音乐播放器 源代码 android 音乐播放器 源代码 android 音乐播放器 源代码
android简单音乐播放器的播放,暂停,前一首,后一首的控制。简单音乐播放器的播放,暂停,前一首,后一首的控制。简单音乐播放器的播放,暂停,前一首,后一首的控制。简单音乐播放器的播放,暂停,前一首,后一首...
android音乐播放器测试歌曲,仅供测试之用
android音乐播放器源码(改进版)。这个版本已经放在了service中,在服务中控制播放音乐,通过BroadcastReceiver传递一些数据,并且实现了在电话打过来时,停止播放音乐,打完电话继续播放。当然还有上一个版本的甩...
实现功能:播放,暂停,下一曲,上一曲,注册,登录,更改背景图片。
Android Studio工程,音乐播放器,实现递归扫描SD根目录歌曲文件,切换播放模式、查看歌曲详细信息等基本功能,相应博文地址http://blog.csdn.net/djstavaV/article/details/47726675