Android實現(xiàn)保存圖片到本地并在相冊中顯示
Android中拍照保存圖片到本地是常見的一種需求,之前碰到了一個問題,就是在4.4中,刷新相冊會出現(xiàn)ANR,經(jīng)過一番百度解決了這個問題。
首先是保存圖片到本地
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"; //保存的確切位置,根據(jù)自己的具體需要來修改 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以上的是發(fā)送廣播來實現(xiàn):
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);
以上兩種方式有所區(qū)別,刷新SD卡的uri和刷新單個文件的uri的path不同,刷新SD卡的path就是外部存儲的根目錄,刷新單個文件的path就是你保存圖片的具體路徑,這是暫時我所遇到的坑,4.4一下還沒測試,如果測試出現(xiàn)問題,歡迎評論。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android編程實現(xiàn)Dialog窗體監(jiān)聽的方法
這篇文章主要介紹了Android編程實現(xiàn)Dialog窗體監(jiān)聽的方法,結(jié)合實例形式分析了Android針對Dialog對話框窗體事件監(jiān)聽與響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下2017-03-03android listview優(yōu)化幾種寫法詳細(xì)介紹
這篇文章只是總結(jié)下getView里面優(yōu)化視圖的幾種寫法,需要的朋友可以參考下2012-11-11Android之內(nèi)置和外置sdcard路徑顯示并且寫入數(shù)據(jù)的方法
今天小編就為大家分享一篇Android之內(nèi)置和外置sdcard路徑顯示并且寫入數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08Android 實現(xiàn)沉浸式狀態(tài)欄的方法
沉浸式狀態(tài)欄的來源就是很多手機用的是實體按鍵,沒有虛擬鍵,于是開了沉浸模式就只有狀態(tài)欄消失了。下面腳本之家小編給大家介紹Android 實現(xiàn)沉浸式狀態(tài)欄,需要的朋友可以參考下2015-09-09Android優(yōu)化提升應(yīng)用啟動速度及Splash頁面的設(shè)計
這篇文章主要介紹了Android性能優(yōu)化的一些相關(guān)資料,文章圍繞提升應(yīng)用啟動速度及Splash頁面的設(shè)計的內(nèi)容展開介紹,需要的朋友可以參考一下,希望對你有所幫助2021-12-12Android實現(xiàn)授權(quán)訪問網(wǎng)頁的方法
這篇文章主要介紹了Android實現(xiàn)授權(quán)訪問網(wǎng)頁的方法,需要的朋友可以參考下2014-07-07