Android实现保存图片到本地并在相册中显示

Android中拍照保存图片到本地是常见的一种需求,之前碰到了一个问题,就是在4.4中,刷新相册会出现ANR,经过一番百度解决了这个问题。

首先是保存图片到本地

private static final String SAVE_PIC_PATH = Environment.getExternalStorageState().equalsIgnoreCase(Environment.MEDIA_MOUNTED) ? Environment.getExternalStorageDirectory().getAbsolutePath() : "/mnt/sdcard";//保存到SD卡 private static final String SAVE_REAL_PATH = SAVE_PIC_PATH + "/good/savePic"; //保存的确切位置,根据自己的具体需要来修改 public void saveFile(Bitmap bm, String fileName, String path) throws IOException { String subForder = SAVE_REAL_PATH + path; File foder = new File(subForder); if (!foder.exists()) { foder.mkdirs(); } File myCaptureFile = new File(subForder, fileName); if (!myCaptureFile.exists()) { myCaptureFile.createNewFile(); } BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile)); bm.compress(Bitmap.CompressFormat.JPEG, 80, bos); bos.flush(); bos.close(); Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();

以上就是保存图片的方法,保存完毕之后就是要通知相册刷新了,
在4.4中:

MediaScannerConnection.scanFile(this, new String[]{SAVE_REAL_PATH+ "/" + fileName}, null, new MediaScannerConnection.OnScanCompletedListener() { @Override public void onScanCompleted(String path, Uri uri) { Log.e( "onScanCompleted: ", path); Log.e( "onScanCompleted: ", uri.toString()); } });

在4.4以上的是发送广播来实现:

Intent intent = new Intent(Intent.ACTION_MEDIA_MOUNTED); //这是刷新SD卡 // Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); // 这是刷新单个文件 Uri uri = Uri.fromFile(new File(SAVE_REAL_PATH)); intent.setData(uri); sendBroadcast(intent);

以上两种方式有所区别,刷新SD卡的uri和刷新单个文件的uri的path不同,刷新SD卡的path就是外部存储的根目录,刷新单个文件的path就是你保存图片的具体路径,这是暂时我所遇到的坑,4.4一下还没测试,如果测试出现问题,欢迎评论。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-09-26 00:56:45

Android实现保存图片到本地并在相册中显示的相关文章

基于Android实现保存图片到本地并可以在相册中显示出来

App应用越来越人性化,不仅界面优美而且服务也很多样化,操作也非常方便.比如我们在用app的时候,发现上面有比较的图片想保存到手机,只要点一点app上提供的保存按钮就可以了.那这个图片保存到本地怎么实现的呢? 保存图片很简单,方法如下: /** 首先默认个文件保存路径 */ private static final String SAVE_PIC_PATH=Environment.getExternalStorageState().equalsIgnoreCase(Environment.MED

应用-android软件是通过什么途径从相册中提取照片的

问题描述 android软件是通过什么途径从相册中提取照片的 想做一个小的Android的插件小应用,想从相册中提取自己想要的照片,思路有两个.1是选择完照片后将这些照片复制到另一个文件夹,用软件在对此文件夹中的照片进行读取,2.是选择完照片后记住路径,让软件按照路径提取相册中的照片, 解决方案 http://blog.csdn.net/beyond0525/article/details/8939984

如何动态添加滚动图片就是在后台添加一张图片时可以在首页相册中显示所有相册中所有图片的最新的前几张

问题描述 <SCRIPTlanguage=javascript>//welcometowww.7stk.comvarcurrslid=0;varslidint;functionsetfoc(id){document.getElementById("focpic").src=picarry[id];document.getElementById("foclnk").href=lnkarry[id];document.getElementById("

《Android平板电脑开发秘籍》——3.4节技巧:在ActionBar中显示Action项

3.4 技巧:在ActionBar中显示Action项 Android平板电脑开发秘籍 为了在ActionBar中显示Action项,需要给菜单项添加android:showAsAction属性,菜单项定义于Menu文件中.showAsAction属性决定了如何显示Action项.showAsAction属性可以是以下值. always--在ActionBar中显示此Action项. ifRoom--仅当空间允许时,才在ActionBar中显示此Action项.如果没有足够的空间,此项将显示在O

android-Android保存图片到本地,结果乱码。。

问题描述 Android保存图片到本地,结果乱码.. 求大神指点 解决方案 你先看看本地下载以后的图片是不是就是坏的?然后看是保存的问题,还是显示的问题. 解决方案二: public void saveImages(String imageViews) { InputStream is = null; // 定义一个输入流. BufferedInputStream bis = null;// 定义一个带缓冲的输入流 . try { URL url = new URL(imageViews);//

Android拍照保存在系统相册不显示的问题解决方法_Android

可能大家都知道我们保存相册到Android手机的时候,然后去打开系统图库找不到我们想要的那张图片,那是因为我们插入的图片还没有更新的缘故,先讲解下插入系统图库的方法吧,很简单,一句代码就能实现 复制代码 代码如下: MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "", ""); 通过上面的那句代码就能插入到系统图库,这时候有一个问题,就是我们不能指定插入照片的名字,而是系统给了我

Android拍照保存在系统相册不显示的问题解决方法

可能大家都知道我们保存相册到Android手机的时候,然后去打开系统图库找不到我们想要的那张图片,那是因为我们插入的图片还没有更新的缘故,先讲解下插入系统图库的方法吧,很简单,一句代码就能实现 复制代码 代码如下: MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "", ""); 通过上面的那句代码就能插入到系统图库,这时候有一个问题,就是我们不能指定插入照片的名字,而是系统给了我

Android 图片存入系统相册更新显示实例详解

Android 图片存入系统相册更新显示实例详解 在开发android的过程中,我们避免不了可能会涉及到做一个自定义相册或则会去本地创建一个文件夹来存储我们需要的图片.拿相册来说,比如我们创建一个test的文件夹,拍完一张照片后存储到这个指定的test文件夹里,然后在相册里面显示出来,就像微信的效果一样.拍完即可立即显示.但是,在实际开发过程中我们保存完一张图片后并不能立即更新显示出来这个图片,需要我们重启手机才能在系统相册中显示出来. 这里先提供一个插入系统图库的方法: MediaStore.

android华为手机读取本地文件夹图片获取path路径null,求指导

问题描述 android华为手机读取本地文件夹图片获取path路径null,求指导 android华为手机读取本地文件夹图片获取path路径null,求指导 解决方案 public String getImagePathFromURI(Uri uri) { Cursor cursor = getActivity().getContentResolver().query(uri null null null null); String path = null; if (cursor != null