Android开发之App拍照系统相册展示

本文介绍了一种解决App拍照后图片无法直接在系统相册中显示的问题的方法。通过将图片保存到DCIM文件夹并发送广播通知系统刷新相册,实现了在魅族MX5等设备上的功能需求。

需求:客户提出一个需求,App拍照的照片需要直接在系统相册中可以查看得到。

解决方案:

第一次尝试:刚开始想到的是网上这三种方式:http://blog.youkuaiyun.com/qq_34157407/article/details/51407992
发现使用广播或者插入图库都无法实现在系统相册中查看。我的适配机型是:魅族MX5.

第二次尝试:当没有合适的方法的时候,就自己动手推测分析。经过几次的测试系统相册所关联的逻辑,以及系统照相机拍照后的照片存储规则。推测将照片存储在DCIM文件夹中,相册才会加载的首要条件。最终,经过测试,得出关于我适配机型的解决方案:
1、拍照后照片存储于系统相册关联的文件夹DCIM下(区别与其他方法的地方);
2、发送广播,通知系统相册刷新。

代码如下:

保存照片并通知相册更新广播:

// 将照片插入到系统相册
BitmapUtils.saveBitmap(addbmp, ru.fileName,Environment.getExternalStorageDirectory() + "/DCIM/");
context.sendBroadcast(new Intent(
                        Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri
                                .fromFile(new File(Environment
                                        .getExternalStorageDirectory()
                                        + "/DCIM/" + ru.fileName + ".jpg"))));

保存照片到指定路径下:

/**
     * 保存图片到指定的Path路径下
     * 
     * @author vaecer
     * @param bm
     *            图片bitmap
     * @param picName
     *            图片名字
     * @param path
     *            图片保存的路径
     */
    public static void saveBitmap(final Bitmap bm, final String picName, final String path) {
        new Thread(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                try {
                    // String realPath =
                    // Environment.getExternalStorageDirectory() + path;
                    File f = new File(path, picName + ".jpg");
                    if (f.exists()) {
                        f.delete();
                    }
                    FileOutputStream out = new FileOutputStream(f);
                    bm.compress(Bitmap.CompressFormat.JPEG, 90, out);
                    out.flush();
                    out.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值