Android 自动刷新自定义相册

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/daihuimaozideren/article/details/95250670

在camera开发过程中,发现若将camera拍摄的相片存放至自定义相册时,有时不能及时的在相册中找到对应相片。不同的设备对于自定义相册的更新时机不同。有的手机,需要重启才会更新,有的则是及时。因此,为了适配,不论什么机型,强制更新是必要的。

网上查找,多有两种方案。一是发送系统广播,一是使用MediaScannerConnection对象。

对于广播而言,其局限性在于,android4.x之后,为了安全性考虑,app不能再发送系统广播。相比而言MediaScannerConnection便更为通用,该对象自api level1便存在。

现将代码记录如下:

package com.breakloop.common;

import android.content.Context;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.webkit.MimeTypeMap;

public class LFISMediaScanner {
    private static MediaScannerConnection mScanner=null;

    public static void updateMedia(Context fContext, String fPath){
        MimeTypeMap tMimeTypeMap=MimeTypeMap.getSingleton();
        String tExtension=fPath.substring(fPath.lastIndexOf(".")+1);
        String tType=tMimeTypeMap.getMimeTypeFromExtension(tExtension);

        if (mScanner == null) {
            MediaScannerConnection connection = new MediaScannerConnection(fContext,
                    new MediaScannerConnection.MediaScannerConnectionClient() {
                        public void onMediaScannerConnected() {
                            mScanner.scanFile(fPath, tType);
                        }

                        public void onScanCompleted(String path1, Uri uri) {
                            if (path1.equals(fPath)) {
                                mScanner.disconnect();
                                mScanner = null;
                            }
                        }
                    });
            try {
                connection.connect();
            } catch (Exception e) {
                e.printStackTrace();
            }
            mScanner = connection;
        }else {
            if(!mScanner.isConnected()){
                mScanner.connect();
            }
            mScanner.scanFile(fPath,tType);
        }
    }
}

 

展开阅读全文

没有更多推荐了,返回首页