android 图库缓存问题

今天做项目遇到这样的需求,测试相机,自动拍照并保存照片到指定目录,调用图库直接查看该目录中的相片是否出现异常(如率绿屏、只显示一般图像等)。由于可能会长时间疲劳测试,所以需要隔段时间清一次照片。这是就出现了传说中的图库缓存问题:通过设定定时器将目录照片删除后,相册中还会显示之前相片的缩略图,测一天的话多大近万张!

解决之道,是操作mediaStore数据库,拍照时插入uri,删除时删掉该uri,然后扫描图片,图库中就可以实时更新了。

//拍照时约定MediaStore.Images.Media.DESCRIPTION = "lyt_03_test",方便删除时查找。
			/**
			 * 存储图像并将信息添加入媒体数据库
			 */
			private Uri insertImage(ContentResolver cr, String name, long dateTaken,
					String directory, String filename) {

				String filePath = directory + filename;

				ContentValues values = new ContentValues(7);
				values.put(MediaStore.Images.Media.TITLE, name);
				values.put(MediaStore.Images.Media.DESCRIPTION, "lyt_03_test");
				values.put(MediaStore.Images.Media.DATE_TAKEN, dateTaken);
				values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
				values.put(MediaStore.Images.Media.DATA, filePath);
				return cr.insert(IMAGE_URI, values);
			


				//通知更新
		    		Intent intent = new Intent("videocameraupdate");
		    		intent.putExtra("uriStr", uri.toString());
		    		intent.putExtra("dateTaken", nowRTC);
		    		sendBroadcast(intent);
			}


删除照片

//从meida数据库中删除BrTest相册中的所有照片,约定MediaStore.Images.Media.DESCRIPTION ='lyt_03_test'
private void deleteTestImgsFromMeida(){
		//当然,还需要删除正真的照片
		Log.d(TAG, "---------- delete pictures ---------");
		Log.d(TAG, "---------- delete pictures ---------");
		Log.d(TAG, "---------- delete pictures ---------");
		FileOpertor.delAllFile(Environment.getExternalStorageDirectory()+"/DCIM/BrTest/");	
	
	try {
		this.getContentResolver()
	 .delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI
			 ,  MediaStore.Images.Media.DESCRIPTION + "='lyt_03_test'",  null); 
	//也可以不通知挂载更新,因为上面直接更新了数据库	
	// sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, 
	//		 Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath()+"/DCIM/BrTest")));	
	} catch (Exception e) {
		// TODO: handle exception
		Log.w(TAG, e.toString());
	}

}



参考 
http://android.tgbus.com/Android/tutorial/201104/350881.shtml



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值