android 图片保存到系统相册,且将插入图片排序最前
2014-10-15 22:02
267 查看
突然我们的老大突发奇想,说把我们项目里面的图片保存到手机里面,方面用户查看。
马上开始上百度啊,很快,在网上看到一个大神:http://stormzhang.github.io/android/2014/07/24/android-save-image-to-gallery/
方法有二种,一种是使用系统提供的方法,
问题二:图片是插入图库饿了,但是新插入图片全显示在图片的后面。老大看了后要求将新插入的图片显示在最前面。这又花了我一下午的时间去研究,发现系统相册是根据图片的命名规则来排序的。所以我下载了android系统的相册源码,了解到它的命名规则。
然后我就是使用了这样的方式给新插入的图片命名,可结果还是一样。
需要说明的是,在该方法里我使用了线程,主要是避免android的一个重要的ANR。
马上开始上百度啊,很快,在网上看到一个大神:http://stormzhang.github.io/android/2014/07/24/android-save-image-to-gallery/
方法有二种,一种是使用系统提供的方法,
MediaStore.Images.Media.insertImage(context.getContentResolver(),file.getAbsolutePath(), fileName, null);
// 最后通知图库更新1 sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + path)));
问题二:图片是插入图库饿了,但是新插入图片全显示在图片的后面。老大看了后要求将新插入的图片显示在最前面。这又花了我一下午的时间去研究,发现系统相册是根据图片的命名规则来排序的。所以我下载了android系统的相册源码,了解到它的命名规则。
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd'_'HHmmss");
然后我就是使用了这样的方式给新插入的图片命名,可结果还是一样。
后来我突发奇想,使用了java io流的方式进行对图片插入图库,详细代码如下: <pre name="code" class="java">private void testSaveImage(Bitmap tempbmp){ bmp = tempbmp; new Thread(new Runnable() { @Override public void run() { String path = Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_DCIM + File.separator +"Camera"; // 首先保存图片 Log.i("saveImage",""+path); long now = System.currentTimeMillis(); String fileName = new SimpleDateFormat("yyyyMMdd_HHmmss"). format(new Date(now))+".jpg"; File file = new File(path, fileName); FileOutputStream fos=null; try { fos = new FileOutputStream(file); bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos); Log.i("saveImage","保存成功"+file.getAbsolutePath()); Intent intent = new Intent( Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Uri uri = Uri.fromFile(file); intent.setData(uri); sendBroadcast(intent); GlobalApplication.showToastThread(getString(R.string.save_to_sysimg_text)); //sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file.getAbsolutePath()))); } catch (Exception e) { e.printStackTrace(); Log.i("saveImage","保存失败"); }finally{ try { fos.flush(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } } }).start(); }
需要说明的是,在该方法里我使用了线程,主要是避免android的一个重要的ANR。
相关文章推荐
- Android 保存应用的图片到系统相册中
- Android保存图片到系统图库并通知系统相册刷新
- android选择系统相机拍照和系统相册,裁剪图片并保存和设置头像,适配至7.0
- android保存图片至系统相册
- 【系统相册】Android 保存图片到系统相册
- Android向系统相册中插入图片,相册中会出现两张 一样的图片(只是图片大小不一致)
- Android 保存图片到系统相册(三星6.0有效)
- Android 保存图片到系统相册
- Android保存图片到系统相册
- Android保存图片到系统相册
- android将应用中图片保存到系统相册并显示
- Android 保存图片到系统及相关问题的解决方案
- android 实现保存图片到相册
- Android 保存图片到系统及相关问题的解决方案
- Android 保存图片到系统及相关问题的解决方案
- Android 调用相册 拍照 实现系统控件缩放 切割图片
- android实例之——调用android系统相机、系统相册,并对得到的图片进行处理
- Android 调用相册 拍照 实现系统控件缩放 切割图片
- 【移动开发】Android相机、相册获取图片显示并保存到SD卡
- Android相机、相册获取图片显示并保存到SD卡