`
bashenmail
  • 浏览: 228780 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android调用MediaScanner进行扫描

阅读更多
代码如下;
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;
	}

	
}

 

分享到:
评论

相关推荐

    Android_MediaScanner__详尽分析

    MediaScannerReceiver的实现文件位于相同的目录下,通常被用于监听文件系统事件,并调用MediaScanner进行相应的处理。 MediaScannerService.java 文件则是MediaScanner服务的主体,它定义了MediaScanner服务的生命...

    android MediaProvider和MediaScanner详解

    在扫描过程中,MediaScannerService会调用MediaScanner的scanDirectories方法,传递需要扫描的目录数组和存储卷名称。该方法随后会遍历这些目录,对每个文件执行扫描。通过这种方式,MediaScanner确保了Android设备...

    Android媒体库框架(mediascanner).doc

    Android 把所有的多媒体数据库接口进行了封装,所有的数据库不需要自己创建,直接调用利用 ContentResolver 就可以进行数据库的操作。MediaStore 的使用方法和 SQLITE3 的方法是一样的。 MediaScanner ...

    Android多媒体扫描过程.pdf

    - MediaScannerService是处理实际扫描任务的服务,它调用MediaScanner类来执行具体的工作。 4. **MediaScanner**: - MediaScanner负责扫描两个主要的目录:内部卷(指向$ANDROID_ROOT/media)和外部卷(指向$...

    Android多媒体扫描过程[参考].pdf

    它调用MediaScanner类,该类负责扫描内部卷($(ANDROID_ROOT)/media)和外部卷($(EXTERNAL_STORAGE))中的文件。 3. **JAVA层初始化**: 在初始化阶段,MediaScanner会根据文件所在的卷(内部或外部)打开对应的...

    Android中扫描多媒体文件操作详解

    `scanFile()` 方法用于扫描单个文件,接收文件路径和MIME类型作为参数,它会打开数据库并创建一个`MediaScanner`实例,然后调用 `scanSingleFile()` 进行实际扫描。而`scan()` 方法用于扫描指定目录下的所有文件,...

    利用contentprovider扫描内存卡上所有的音频文件,扫描速度一般是300首歌需要50毫秒以内.zip

    1. **构建MediaScanner**: 首先,创建一个类继承自ContentProvider,并实现其关键方法,如`query()`, `insert()`, `update()`, `delete()`。在`query()`方法中,针对音频文件进行定制化的查询,比如根据文件扩展名...

    android Camera类、MediaRecord类

    至于描述中提到的问题,即拍摄的照片和视频在系统图库中无法立即看到,这可能是因为MediaScanner没有扫描到新创建的媒体文件。解决方法是在保存文件后,通过`MediaScannerConnection.scanFile()`或发送广播`ACTION_...

    基于Android扫描sd卡与系统文件的介绍

    Android提供了MediaScanner服务,它会在设备启动时自动扫描SD卡和内部存储器,将文件信息存储到系统的MediaStore数据库中。MediaStore是一个ContentProvider,允许应用程序通过标准的SQL查询来访问这些多媒体文件的...

    深入理解Android:卷I--详细书签版

    第2章通过对android系统中的mediascanner进行分析,详细讲解了 android中十分重要的jni技术;第3章分析了init进程,揭示了通过解析init.rc来启动zygote以及属性服务的工作原理;第4章分析了zygote、systemserver等...

    安卓实现多媒体扫描.docx

    2. **MediaScannerService**:该服务被 `MediaScannerReceiver` 启动后,通过调用 `MediaScanner` 类来执行具体的扫描任务。`MediaScanner` 负责扫描指定的目录,并对其中的多媒体文件进行处理。 3. **内部卷与...

    android4.0图库源代码

    在Android 4.0中,MediaScanner会定期扫描外部存储卡,将新添加或修改的媒体文件信息更新到MediaStore中。 4. UI设计与交互 Android 4.0图库的用户界面采用了流畅的设计,支持手势操作,如滑动浏览图片、捏合缩放等...

    android 音乐播放源码.zip

    MediaScanner类,用于扫描媒体文件并将其添加到媒体库;以及AudioManager类,负责音频设备管理和音量控制等。 在这款源码中,核心部分应该是对MediaPlayer类的使用。MediaPlayer是一个强大的类,支持多种音频格式,...

    Android硬解码 media_jni.so 源码

    其他如`MtpDatabase.cpp`、`MtpDevice.cpp`、`MediaMetadataRetriever.cpp`、`MediaScanner.cpp`和`Utils.cpp`虽然不直接涉及MediaCodec的硬解码,但它们是Android多媒体框架的重要组成部分,提供了诸如MTP设备操作...

    Android截屏源码(全屏和局部,以及保存到sd卡和读取)

    但这种方法可能会触发MediaScanner扫描,延迟应用退出。因此,开发者也常常选择直接使用`FileOutputStream`将Bitmap写入文件,然后手动更新媒体库。 下面是一个保存Bitmap到SD卡的基本示例: ```java private void ...

    Android 基础面试题目

    - 使用`MediaScanner`扫描设备上的音乐文件,并将元数据存储在ContentProvider中。 - 通过`ContentResolver`查询音乐信息。 2. **性能优化:** - 减少不必要的资源加载,例如预加载部分音频数据。 - 使用缓存...

    AndrodSavePicture.zip

    这个过程涉及多个步骤,包括在Unity引擎内截取屏幕图像、将图像数据保存到本地、使用Android Java插件(jar包)与Android系统的媒体库进行交互,以及触发系统扫描新添加的图片。下面我们将详细探讨这些关键知识点。 ...

    Android 音乐播放器源码

    【Android音乐播放器源码】是一个专为Android平台设计的音乐播放应用的代码实现,它允许用户将MP3格式的音频文件存储在外部存储(如SD卡)中,并通过应用程序进行播放。这个项目的核心功能包括音乐扫描、播放控制、...

Global site tag (gtag.js) - Google Analytics