设为首页 加入收藏

TOP

Android--解决图片保存到相册显示1970年1月1日 8:00的问题(一)
2019-09-01 23:27:35 】 浏览:125
Tags:Android-- 解决 图片 保存 相册 显示 1970年 1月 1日 8:00 问题
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;


public class PictureUtils {

    private static String TAG = PictureUtils.class.getSimpleName();

    private static int CODE_WIDTH = 60;
    private static int CODE_HEIGHT = 60;

    private PictureUtils() {

    }

    /**
     * 保存一张或者多张图片到图库
     */
    public static void saveImageListToGallery(final BaseActivity context,
            final List<String> imgList, final OnSaveImgCallBack callBack) {

        if (context == null) {
            LogUtils.dTag(TAG, "context 不能为null");
            return;
        }

        RxPermissionsUtils.getInstance()
                .requestPermission(context, RxPermissionsUtils.READ_AND_WRITE_PERMISSION,
                        new RxPermissionsUtils.OnPermissionRequestCallBack() {
                            @Override
                            public void onSuccess() {
                                if (imgList == null) {
                                    LogUtils.dTag(TAG, "图片数组为 null");
                                    return;
                                }

                                // 保存图片到图库
                                saveImageListToGalleryPrivate(context, imgList, callBack);

                            }

                            @Override
                            public void onFail() {
                                ToastUtils.showShort("请在设置授予应用存储权限^_^");
                                PermissionUtils.launchAppDetailsSettings();
                            }
                        });

    }

    /**
     * 保存多张图片
     */
    private static void saveImageListToGalleryPrivate(BaseActivity context, List<String> imgList,
            final OnSaveImgCallBack callBack) {

        Observable.just(imgList)
                .observeOn(Schedulers.io())
                .flatMap(new Function<List<String>, ObservableSource<Boolean>>() {
                    @Override
                    public ObservableSource<Boolean> apply(List<String> strings) throws Exception {

                        for (String filePath : strings) {

                            if (filePath.startsWith("http://") || filePath.startsWith("https://")) {

                                Bitmap bmp = Glide.with(BaseApplication.getInstance())
                                        .asBitmap()
                                        .load(filePath)
                                        .submit()
                                        .get();

                                saveImageToGallery(BaseApplication.getInstance(), bmp, filePath);

                            } else {

                                Bitmap bmp = BitmapFactory.decodeFile(filePath);

                                saveImageToGallery(BaseApplication.getInstance(), bmp, filePath);
                            }

                        }

                        return Observable.just(true);
                    }
                })
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<Boolean>() {
                    Disposable mD;

                    @Override
                    public void onSubscribe(Disposable d) {
                        mD = d;
                        if (callBack != null) {
                            callBack.onSaveStart();
                        }
                    }

                    @Override
                    public void onNext(Boolean aBoolean) {
                        ToastUtils.showShort("图片已成功保存到系统相册^_^");
                        if (callBack != null) {
                            callBack.onSaveSuccess();
                        }
                    }

                    @Override
                    public void onError(Throwable e) {
                        if (mD != null) {
                            mD.dispose();
                        }
                        if (callBack != null) {
                            callBack.onSaveFail();
                        }
                    }

                    @Override
                    public void onComplete() {
                        if (mD != null) {
                            mD.dispose();
                        }
                    }
                });


    }

    /**
     * 保存 Bitmap 到相册 获得路径
     */
    public static String saveImageToGallery(Context context, Bitmap bmp, String imageUrl) {

        if (!SDCardUtils.isSDCardEnableByEnvironment()) {
            LogUtils.dTag(TAG, "内
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android 获取 上下文环境参数 get.. 下一篇「Android」 Surface分析

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目