Android系统提供了MediaScanner,MediaProvider,MediaStore等接口,并且提供了一套数据库表格,通过Content Provider的方式提供给用户。当手机开机或者有SD卡插拔等事件发生时,系统将会自动扫描SD卡和手机内存上的媒体文件,如audio,video,图片等,将相应的信息放到定义好的数据库表格中。在这个程序中,我们不需要关心如何去扫描手机中的文件,只要了解如何查询和使用这些信息就可以了。
MediaStore中定义了一系列的数据表格,通过ContentResolver提供的查询接口,我们可以得到各种需要的信息。下面我们重点介绍查询SD卡上的音乐文件信息。
先来了解一下ContentResolver的查询接口:
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);
得到cursor后,我们可以调用Cursor的相关方法具体的音乐信息:
//歌曲ID:MediaStore.Audio.Media._ID
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.getColumnIndexOrThrow(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));
//歌曲的总播放时长 :MediaStore.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));
分享到:
相关推荐
Android 获取音乐文件的信息 Android系统提供了MediaScanner,MediaProvider,MediaStore等接口,并且提供了一套数据库表格,通过Content Provider的方式提供给用户。
在Android平台上,获取音乐文件的信息是一项常见的任务,尤其对于音乐播放器或者音乐管理类的应用来说。这个过程通常涉及到解析音频文件的元数据,包括艺术家、曲目标题、专辑、时长等。本教程将深入讲解如何使用...
### Android读取SD卡中音乐文件列表 在Android开发中,常常需要实现的功能之一就是读取设备中的音乐文件。这通常用于音乐播放器类的应用程序,以便用户可以浏览并选择他们想要播放的歌曲。本文将详细介绍如何通过...
在Android开发中,获取音乐文件信息是常见的需求,MediaStore是一个关键组件,它提供了一个统一的接口,让我们能够轻松地访问设备上的音频、视频和图片等多媒体数据。本篇文章将详细解析如何通过MediaStore获取音乐...
开发者需要通过`Environment.getExternalStorageDirectory()`获取外部存储路径,然后遍历对应目录寻找音乐文件。 2. **媒体扫描**:Android提供了`MediaScannerConnection`类用于扫描新的或已修改的媒体文件,并将...
要播放RAW文件中的音乐,你需要遵循以下步骤: 1. **添加音频资源**:首先,将RAW格式的音频文件放入项目的`res/raw`目录下。例如,如果你有一个名为`my_music.raw`的文件,它应该位于`res/raw/my_music.raw`。 2....
在Android平台上,开发人员经常需要处理与媒体文件交互的任务,比如读取SD卡中的MP3音乐文件。这个过程涉及到文件系统的操作、权限管理以及多媒体数据的处理。以下是一些关于如何在Android中读取SD卡中MP3文件的关键...
本项目"Android音乐播放器(含notification通知栏操作,自动获取本地音乐操作)"旨在教授如何构建一个具备通知栏控制功能并能自动扫描本地音乐库的播放器。以下是关于这个项目的关键知识点: 1. **通知栏操作...
在你的`build.gradle`文件中添加依赖: ```gradle implementation 'com.github.hooleg:taglib-android:1.2.0' ``` 这将允许你在项目中使用taglib库。 2. **读取MP3文件** 首先,你需要创建一个`File`对象指向...
在Android平台上,获取音频的频谱是一项常见的任务,特别是在音乐应用、声音分析或者音效处理等领域。本节将深入探讨如何使用Android的音频API来提取音乐频谱源码,并了解相关技术。 首先,我们需要理解频谱的概念...
5. **文件遍历与选择**:为了找到并播放本地音乐,源码可能包含了读取设备存储上的音乐文件(通常位于外部存储的Music目录),这需要使用到文件I/O操作和文件遍历的技巧。 6. **ListView或RecyclerView**:为了展示...
开发者可能使用MediaStore类来获取设备上的媒体文件信息,包括音乐文件的路径、时长、艺术家等元数据。 4. **用户界面设计**: 应用的界面设计是用户体验的关键。Android Studio的布局编辑器可以帮助创建XML布局...
在Android平台上,开发一个文件浏览器是一项常见的任务,尤其当需求是使用户能够按特定类别(如音乐、视频、图片)来浏览文件时,这样的应用程序能提供更直观且友好的用户体验。本项目的核心就是实现这样一个分类...
1. **读取音频数据**:使用`MediaExtractor`类从音频文件中提取出原始的PCM数据,这通常涉及设置媒体格式、选择轨道以及提取缓冲区数据。 2. **数据处理**:获取到PCM数据后,将其分帧,并使用FFT进行变换。FFT的...
在Android平台上,开发一个能列出SD卡上所有音乐文件并实现播放功能的应用是常见的需求。这个"Android sd卡音频文件列表显示+歌曲播放"的Demo就是为此目的设计的。它结合了文件系统操作、UI设计以及媒体播放技术,是...
选择一首你喜欢的音乐文件,格式最好是MP3或AAC,因为这些格式在Android系统中广泛支持。确保音乐文件大小适中,以免延长开机时间。 步骤三:创建自启动服务 创建一个Android服务应用,该服务会在系统启动时自动...
源码可能包含对SD卡或内部存储中的音乐文件的遍历和加载逻辑,以及创建和管理播放列表的机制。 3. **服务(Service)**:为了在后台持续播放音乐,开发者会使用`Service`。即使用户离开应用程序,服务也可以保持...