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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章