android应用刷新系统多媒体库(增加or删除多媒体文件)

系统:android4.4及其以上

功能:app中拍照, 并实现浏览、删除照片操作。

实现:

1.拍照,存储到指定路径path

2.通知系统多媒体数据库刷新数据。

主要使用MediaScannerConnection,该类向应用提供了将新增多媒体文件发送给多媒体扫描服务的方法,进而将数据写入到系统多媒体数据库,参考实现如下:

public class MediaScanner {

    private MediaScannerConnection mediaScanConn = null;
    private PhotoSannerClient client = null;
    private String filePath = null;
    private String fileType = null;
    private static MediaScanner mediaScanner= null;

    /**
     * 然后调用MediaScanner.scanFile("/sdcard/2.mp3");
     * */

    public MediaScanner(Context context) {
        // 创建MusicSannerClient
        if (client == null) {
            client = new PhotoSannerClient();
        }
        if (mediaScanConn == null) {
            mediaScanConn = new MediaScannerConnection(context, client);
        }
    }

    public static MediaScanner getInstanc(Context context){
        if (mediaScanner==null){
            mediaScanner = new MediaScanner(context);
        }
        return mediaScanner;
    }

    private class PhotoSannerClient implements
        MediaScannerConnection.MediaScannerConnectionClient {

        public void onMediaScannerConnected() {

            if (filePath != null) {
                mediaScanConn.scanFile(filePath, fileType);
            }

            filePath = null;
            fileType = 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();
    }

    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;
    }

}

3.删除照片, 并删除多媒体数据库中的相关内容。对于删除操作, 都可以通过content provider直接操作多媒体数据库执行删除,参考代码如下:

  if (file.isFile()) { 

            String filePath = file.getPath();
            if(filePath.endsWith(".mp4")){
                int res = context.getContentResolver().delete(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
                    MediaStore.Audio.Media.DATA + "= \"" + filePath+"\"",
                    null);
                if (res>0){
                    file.delete();
                }else{
                    Log.e(TAG, "删除文件失败");
                }
            }else if (filePath.endsWith(".jpg")||filePath.endsWith(".png")||filePath.endsWith(".bmp")){
                int res = context.getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                        MediaStore.Audio.Media.DATA + "= \"" + filePath+"\"",
                        null);
                if (res>0){
                    file.delete();
                }else{
                    Log.e(TAG, "删除文件失败");
                }
            }else{
                file.delete();
            }
            //删除多媒体数据库中的数据
            return;
        } 

时间: 2024-10-25 16:42:40

android应用刷新系统多媒体库(增加or删除多媒体文件)的相关文章

android源码中,在系统多媒体数据库中增加一个字段

由于项目需求,在系统多媒体管理数据库里的存储图像文件的表中需要新增加一个字段,源码在:项目\packages\providers\MediaProvider\MediaProvider.java下,在updateDatabase()方法里,你会发现images表格是由files创建的一个视图,于是,在files的创建里增加了一个字段,如下: .... db.execSQL("CREATE TABLE files (" + "_id INTEGER PRIMARY KEY AU

Android 开源项目android-open-project工具库解析之(二) 高版本向低版本兼容,多媒体相关,事件总线(订阅者模式),传感器,安全,插件化,文件

六.Android 高版本向低版本兼容 ActionBarSherlock 为Android所有版本提供统一的ActionBar,解决4.0以下ActionBar的适配问题 项目地址:https://github.com/JakeWharton/ActionBarSherlock Demo地址:https://play.google.com/store/apps/details?id=com.actionbarsherlock.sample.demos APP示例:太多了..现在连google都

Linux学习笔记——例说makefile 增加系统共享库

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.增加宏定义 5.增加系统共享库 6.增加自定义共享库 7.一个实际的例子 [代码仓库]--makefile-example

Android应用程序框架层和系统运行库层日志系统源代码分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6598703 在开发Android应用程序时,少不了使用Log来监控和调试程序的执行.在上一篇文章Android日志系统驱动程序Logger源代码分析中,我们分析了驱动程序Logger的源代码,在前面的文章浅谈Android系统开发中Log的使用一文,我们也简单介绍在应用程序中使Log的方法,在这篇文章中,我们将详细介绍Android应用程序框架

Android 刷新系统相册

Android 刷新系统相册 最近在做项目时,发现把照片保存到手机指定路径后,有些手机打开系统相册居然看不到,像三星 S3.小米2.sony lt26i和HTC等部分机型!但是中兴N881f.魅族 3等查看系统相册都可以正常的查看到最新保存的照片!原因可能是部分机型的相册不是每次打开都自动刷新的吧!现在说下解决办法如下代码: //扫描保存的照片文件.刷新相册 Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Ur

Android之路-------浅淡Android历史、系统架构与开发特色

前言 离上一篇发表的博客差不多有两个星期了吧,相信有些博友差点就对LP失望了,因为上一篇博文中说了,这次不管怎样,LP都会坚持写博客的. 由于工作关系LP才隔了这么久才再次发表博文,这篇博文主要是总结LP看Android书学到的知识.好了,废话不多说了,正式开始吧.... 目录 Android历史 Android系统架构 Android应用开发特色 Android历史 说到Android历史,android就像一只打不死的小强,它有坚持不懈的精神,怎么说呢...从Andy Rubin 等人一起创

Android特性与系统架构

一.Android特性 应用程序框架支持组件的重用与替换 Dalvik 虚拟机专为移动设备优化 集成的浏览器基于开源的WebKit 引擎 优化的图形库包括定制的2D 图形库,基于OpenGL ES 1.0的3D 图形库 SQLite 用作结构化的数据存储 多媒体支持包括常见的音频.视频和静态图像格式(如MPEG4, H.264, MP3, AAC, AMR, JPG, PNG , GIF) GSM 电话技术(依赖于硬件) 蓝牙Bluetooth, EDGE, 3G, 和WiFi(依赖于硬件) 照

[Android 新特性] 改进明显 Android 4.4系统新特性解析

Android 4.3发布半年之后,Android 4.4随着新一代Nexus5一起出现在了用户的面前,命名为从之前的Jelly Bean(果冻豆)换成了KitKat(奇巧).这个新系统究竟都有怎样的改进.是否值得升级呢,下面就一次为你呈现Android 4.4 的新特性. KitKat不是老手机的救星 众所周知,Android机型一直存在升级难的问题.新版Android系统对配置的要求越来越高,特别是内 存,动辄1GB的需求,让老机型望洋兴叹.也使得很多廉价手机制造商往往更倾向于采用旧版 An

Android开发之常用开源库直接拿来用

1.from  代码家 整理比较好的源码连接 *************************************************************************************************************************************************************************** http://blog.zhan-dui.com/?page_id=60 感谢 "代码家"整理 一.