代码如下;
import android.content.Context;
import android.media.MediaScannerConnection;
import android.net.Uri;
public class MediaScanner {
private MediaScannerConnection mediaScanConn = null;
private MusicSannerClient client = null;
private String filePath = null;
private String fileType = null;
private String[] filePaths = null;
/**
* 然后调用MediaScanner.scanFile("/sdcard/2.mp3");
* */
public MediaScanner(Context context) {
//创建MusicSannerClient
if (client == null) {
client = new MusicSannerClient();
}
if (mediaScanConn == null) {
mediaScanConn = new MediaScannerConnection(context, client);
}
}
class MusicSannerClient implements
MediaScannerConnection.MediaScannerConnectionClient {
public void onMediaScannerConnected() {
if(filePath != null){
mediaScanConn.scanFile(filePath, fileType);
}
if(filePaths != null){
for(String file: filePaths){
mediaScanConn.scanFile(file, fileType);
}
}
filePath = null;
fileType = null;
filePaths = null;
}
public void onScanCompleted(String path, Uri uri) {
// TODO Auto-generated method stub
mediaScanConn.disconnect();
}
}
/**
* 扫描文件标签信息
* @param filePath 文件路径 eg:/sdcard/MediaPlayer/dahai.mp3
* @param fileType 文件类型 eg: audio/mp3 media/* application/ogg
* */
public void scanFile(String filepath,String fileType) {
this.filePath = filepath;
this.fileType = fileType;
//连接之后调用MusicSannerClient的onMediaScannerConnected()方法
mediaScanConn.connect();
}
/**
* @param filePaths 文件路径
* @param fileType 文件类型
* */
public void scanFile(String[] filePaths,String fileType){
this.filePaths = filePaths;
this.fileType = fileType;
mediaScanConn.connect();
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public String getFileType() {
return fileType;
}
public void setFileType(String fileType) {
this.fileType = fileType;
}
}
分享到:
相关推荐
MediaScannerReceiver的实现文件位于相同的目录下,通常被用于监听文件系统事件,并调用MediaScanner进行相应的处理。 MediaScannerService.java 文件则是MediaScanner服务的主体,它定义了MediaScanner服务的生命...
在扫描过程中,MediaScannerService会调用MediaScanner的scanDirectories方法,传递需要扫描的目录数组和存储卷名称。该方法随后会遍历这些目录,对每个文件执行扫描。通过这种方式,MediaScanner确保了Android设备...
Android 把所有的多媒体数据库接口进行了封装,所有的数据库不需要自己创建,直接调用利用 ContentResolver 就可以进行数据库的操作。MediaStore 的使用方法和 SQLITE3 的方法是一样的。 MediaScanner ...
- MediaScannerService是处理实际扫描任务的服务,它调用MediaScanner类来执行具体的工作。 4. **MediaScanner**: - MediaScanner负责扫描两个主要的目录:内部卷(指向$ANDROID_ROOT/media)和外部卷(指向$...
它调用MediaScanner类,该类负责扫描内部卷($(ANDROID_ROOT)/media)和外部卷($(EXTERNAL_STORAGE))中的文件。 3. **JAVA层初始化**: 在初始化阶段,MediaScanner会根据文件所在的卷(内部或外部)打开对应的...
`scanFile()` 方法用于扫描单个文件,接收文件路径和MIME类型作为参数,它会打开数据库并创建一个`MediaScanner`实例,然后调用 `scanSingleFile()` 进行实际扫描。而`scan()` 方法用于扫描指定目录下的所有文件,...
1. **构建MediaScanner**: 首先,创建一个类继承自ContentProvider,并实现其关键方法,如`query()`, `insert()`, `update()`, `delete()`。在`query()`方法中,针对音频文件进行定制化的查询,比如根据文件扩展名...
至于描述中提到的问题,即拍摄的照片和视频在系统图库中无法立即看到,这可能是因为MediaScanner没有扫描到新创建的媒体文件。解决方法是在保存文件后,通过`MediaScannerConnection.scanFile()`或发送广播`ACTION_...
Android提供了MediaScanner服务,它会在设备启动时自动扫描SD卡和内部存储器,将文件信息存储到系统的MediaStore数据库中。MediaStore是一个ContentProvider,允许应用程序通过标准的SQL查询来访问这些多媒体文件的...
第2章通过对android系统中的mediascanner进行分析,详细讲解了 android中十分重要的jni技术;第3章分析了init进程,揭示了通过解析init.rc来启动zygote以及属性服务的工作原理;第4章分析了zygote、systemserver等...
2. **MediaScannerService**:该服务被 `MediaScannerReceiver` 启动后,通过调用 `MediaScanner` 类来执行具体的扫描任务。`MediaScanner` 负责扫描指定的目录,并对其中的多媒体文件进行处理。 3. **内部卷与...
在Android 4.0中,MediaScanner会定期扫描外部存储卡,将新添加或修改的媒体文件信息更新到MediaStore中。 4. UI设计与交互 Android 4.0图库的用户界面采用了流畅的设计,支持手势操作,如滑动浏览图片、捏合缩放等...
MediaScanner类,用于扫描媒体文件并将其添加到媒体库;以及AudioManager类,负责音频设备管理和音量控制等。 在这款源码中,核心部分应该是对MediaPlayer类的使用。MediaPlayer是一个强大的类,支持多种音频格式,...
其他如`MtpDatabase.cpp`、`MtpDevice.cpp`、`MediaMetadataRetriever.cpp`、`MediaScanner.cpp`和`Utils.cpp`虽然不直接涉及MediaCodec的硬解码,但它们是Android多媒体框架的重要组成部分,提供了诸如MTP设备操作...
但这种方法可能会触发MediaScanner扫描,延迟应用退出。因此,开发者也常常选择直接使用`FileOutputStream`将Bitmap写入文件,然后手动更新媒体库。 下面是一个保存Bitmap到SD卡的基本示例: ```java private void ...
- 使用`MediaScanner`扫描设备上的音乐文件,并将元数据存储在ContentProvider中。 - 通过`ContentResolver`查询音乐信息。 2. **性能优化:** - 减少不必要的资源加载,例如预加载部分音频数据。 - 使用缓存...
这个过程涉及多个步骤,包括在Unity引擎内截取屏幕图像、将图像数据保存到本地、使用Android Java插件(jar包)与Android系统的媒体库进行交互,以及触发系统扫描新添加的图片。下面我们将详细探讨这些关键知识点。 ...
【Android音乐播放器源码】是一个专为Android平台设计的音乐播放应用的代码实现,它允许用户将MP3格式的音频文件存储在外部存储(如SD卡)中,并通过应用程序进行播放。这个项目的核心功能包括音乐扫描、播放控制、...