需求:客户提出一个需求,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();
}

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

被折叠的 条评论
为什么被折叠?



