今天研究了下如何在Android读取SD卡中的媒体文件(MP3),开始的思路是遍历SD卡所有目录,相信这也是所有开发者第一会想到的思路,无法就是遍历所有文件,将所有后缀名为.mp3读取出来;但是最后发现,如果你对Android稍有了解,你会发现,其实媒体扫描这个工作,Android设置已经替我们干了,Android系统会在SD卡有更新的时候自动将SD卡文件分类(视频/音频/图片...),并存入SQLite数据库,就保存在媒体存储器里面(com.android.providers.media),下面代码是从媒体存储器里面读取MP3文件的方法:
public ArrayList<HashMap<String,Object>> scanAllAudioFiles(){ //生成动态数组,并且转载数据 ArrayList<HashMap<String,Object>> mylist = newArrayList<HashMap<String,Object>>(); //查询媒体数据库 Cursor cursor =getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER); //遍历媒体数据库 if(cursor.moveToFirst()){ while (!cursor.isAfterLast()){ //歌曲编号 int id =cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID)); //歌曲标题 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 Long size =cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE)); if(size>1024*800){//大于800K HashMap<String,Object> map = new HashMap<String,Object>(); map.put("musicId", id); map.put("musicTitle", tilte); map.put("musicFileUrl",url); map.put("music_file_name", tilte); mylist.add(map); } cursor.moveToNext(); } } return mylist; }
相关推荐
Android Studio:Google 官方提供的安卓开发集成开发环境(IDE)。 Android SDK:安卓操作系统的软件开发 kit,提供了开发安卓应用程序所需的工具和资源。 Android NDK:安卓操作系统的 Native Development Kit,...
在Android平台上,开发基于Qt的应用程序时,由于Android 6.0(API级别23)引入了运行时权限管理,因此对于涉及敏感操作如读写文件和录制音频的功能,需要在运行时请求用户授权。本Demo是针对这些权限管理的一个实例...
《Android入门到精通》这本书是为想要学习和掌握Android应用开发的初学者量身打造的指南。Android作为全球最流行的移动操作系统,拥有庞大的用户群体,为开发者提供了广阔的应用市场和无限的创新空间。本书旨在帮助...
**Android-sklad:Android文件存储库加密与流媒体支持** `Android-sklad` 是一个专门为Android平台设计的文件存储库,它提供了强大的文件管理功能,包括加密和流媒体支持。这个开源库旨在帮助开发者更高效、安全地...
这些库允许Android应用连接到Windows文件服务器或NAS设备,读取共享目录中的多媒体文件。 实现步骤如下: 1. **建立网络连接**:使用SMB库创建一个SMBClient实例,配置网络连接参数,如服务器IP、用户名、密码和...
Android多媒体扫描框架,即Media Scanner,是Android系统中用于检测和处理媒体文件(如音频、视频和图片)的重要组件。当设备启动、媒体设备挂载或接收到特定广播意图时,MediaScannerReceiver会被触发,进而启动...
Android 自带图标汇集 Android 系统自带了一组免费公开的图标集合,这些图标可以直接通过代码引用,不需要下载。这些图标包括桌面的、menu 菜单里的所有图标,每个图标都有其样式和英文名称。下面是这些图标的详细...
- Android Studio:Android的官方集成开发环境(IDE),包括项目创建、编辑器、构建工具和调试器的使用。 - 活动(Activity):Android应用的基本组件,负责用户界面和交互。 2. **Ch04 - 布局设计** - XML布局...
本篇文章将深入探讨如何在Android应用中使用libvlc进行流媒体和视频播放,并基于提供的“libvlc-3.0.0-1.9.11.aar”文件进行实例演示。 首先,我们需要了解libvlc的核心特性。libvlc是一个跨平台的库,它提供了一个...
现在,应用需要使用`MANAGE_EXTERNAL_STORAGE`权限来访问整个外部存储,或者使用新的API(如`MediaStore`)来访问特定类型的媒体文件。然而,这种广泛的权限通常只适用于文件管理器等特殊应用,大多数应用应采用更...
2. **布局设计**:Android应用的界面主要由XML布局文件定义,包括线性布局、相对布局、约束布局等。学习如何使用这些布局创建用户友好的交互界面是入门的关键。 3. **活动(Activity)管理**:Activity是Android...
这个库特别适用于那些需要在Android应用中处理多媒体内容,尤其是流媒体服务的开发者。在这个“vlc-android媒体播放AAR库”中,包含了两个关键的组件:libvlc-3.0.0.aar和medialibrary-release.aar。 首先,我们来...
- **兼容性**:项目应支持多种Android版本,从早期的API级别到最新的版本,可能使用了Android Support Library或Jetpack库来实现向下兼容。 - **性能优化**:处理大量多媒体文件时,需要注意性能和内存管理,避免...
总结起来,在Android中将MP3文件存放到虚拟SD卡涉及以下几个关键步骤:申请读写权限、下载文件、保存到外部存储以及扫描文件至媒体库。遵循这些步骤,你的应用就能在遵循Android最佳实践的同时,实现高效且可靠的MP3...
3. 系统运行库:这部分包括各种C/C++库,如Android运行时库(ART)、媒体库、SQLite数据库系统、OpenSSL安全库等。它们为应用程序提供了核心功能,如图形处理、网络通信和数据存储。 4. 应用程序框架:这一层提供了...
4. 构建库文件:使用NDK的交叉编译工具链生成.a或.so库文件,确保适配不同的Android架构(armeabi, armeabi-v7a, arm64-v8a, x86, x86_64)。 **实现RTSP播放** RTSP(Real Time Streaming Protocol)是一种控制...
当文件被添加、删除或修改时,需要刷新媒体库,以便让媒体库保持最新的状态。Android 提供了 MediaScannerConnection 类,可以用来刷新媒体库。下面是一个简单的示例代码: ```java MediaScannerConnection....