Android 圖片存入系統(tǒng)相冊(cè)更新顯示實(shí)例詳解
Android 圖片存入系統(tǒng)相冊(cè)更新顯示實(shí)例詳解
在開(kāi)發(fā)android的過(guò)程中,我們避免不了可能會(huì)涉及到做一個(gè)自定義相冊(cè)或則會(huì)去本地創(chuàng)建一個(gè)文件夾來(lái)存儲(chǔ)我們需要的圖片。拿相冊(cè)來(lái)說(shuō),比如我們創(chuàng)建一個(gè)test的文件夾,拍完一張照片后存儲(chǔ)到這個(gè)指定的test文件夾里,然后在相冊(cè)里面顯示出來(lái),就像微信的效果一樣。拍完即可立即顯示。但是,在實(shí)際開(kāi)發(fā)過(guò)程中我們保存完一張圖片后并不能立即更新顯示出來(lái)這個(gè)圖片,需要我們重啟手機(jī)才能在系統(tǒng)相冊(cè)中顯示出來(lái)。
這里先提供一個(gè)插入系統(tǒng)圖庫(kù)的方法:
MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "", "");
通過(guò)該方法即可把圖片插入到系統(tǒng)圖庫(kù)中。但是,插入后并不會(huì)立即顯示出來(lái),需要發(fā)送一個(gè)廣播:sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
來(lái)通知系統(tǒng)進(jìn)行整個(gè)sd卡的掃描,如果sd里面的東西越多就會(huì)掃描的越久,并且掃描中我們不能訪問(wèn)sd卡,所以這樣的實(shí)現(xiàn)方式對(duì)用戶來(lái)說(shuō)并不友好。
這里我們可以使用系統(tǒng)api:MediaScannerConnection給我們的方法來(lái)進(jìn)行掃描更新:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mHandler.sendEmptyMessageDelayed(1, 2000); mConnection =new MediaScannerConnection(mContext,this); } @Override public void onMediaScannerConnected() { mConnection.scanFile("/sdcard/image.jpg", "image/jpeg"); } @Override public void onScanCompleted(String s, Uri uri) { Log.v("huan", "scan completed"); mConnection.disconnect(); }
但是該種方法我在使用過(guò)程中發(fā)現(xiàn)一個(gè)問(wèn)題就是:傳入的context會(huì)被MediaScannerConnection一直持有,導(dǎo)致oom。所以在使用過(guò)程中在activity使用時(shí)還需要注意。
另外我們還可以通過(guò)指定路徑的方式來(lái)進(jìn)行廣播,這樣就可以避免掃描整個(gè)sd卡:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory() + picPath)));
圖片更新的技巧和注意事項(xiàng)分享給大家,希望對(duì)你有幫助。
相關(guān)文章
Android開(kāi)發(fā)之關(guān)于項(xiàng)目
本文是此系列文章的第二篇,給大家介紹的是項(xiàng)目相關(guān)的內(nèi)容,非常的細(xì)致全面,有需要的小伙伴可以參考下2016-02-02Android 用Time和Calendar獲取系統(tǒng)當(dāng)前時(shí)間源碼分享(年月日時(shí)分秒周幾)
這篇文章主要介紹了Android 用Time和Calendar獲取系統(tǒng)當(dāng)前時(shí)間源碼分享,包括年月日時(shí)分秒周幾的源碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2017-01-01Android詳解之NoHttp最基本使用(無(wú)封裝)
這篇文章主要介紹了Android詳解之NoHttp最基本使用,無(wú)封裝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09Android開(kāi)發(fā)中實(shí)現(xiàn)發(fā)送短信的小程序示例
這篇文章主要介紹了Android開(kāi)發(fā)中實(shí)現(xiàn)發(fā)送短信的小程序示例,文中還附帶了一個(gè)監(jiān)聽(tīng)廣播接收者的升級(jí)版短信發(fā)送例子,需要的朋友可以參考下2016-04-04Android 圖片添加水印的實(shí)現(xiàn)方法
這篇文章主要介紹了Android 圖片添加水印的實(shí)現(xiàn)方法的相關(guān)資料,添加水印的原理就是在畫(huà)布Canvas上繪制圖形、圖片、文字等等, 得到你想要的效果圖片,需要的朋友可以參考下2017-07-07基于標(biāo)準(zhǔn)http實(shí)現(xiàn)Android多文件上傳
這篇文章主要介紹了基于標(biāo)準(zhǔn)http實(shí)現(xiàn)Android多文件上傳的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01Android通過(guò)單點(diǎn)觸摸移動(dòng)圖片
這篇文章主要為大家詳細(xì)介紹了Android通過(guò)單點(diǎn)觸摸移動(dòng)圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04詳解Flutter手游操縱桿移動(dòng)的原理與實(shí)現(xiàn)
這篇文章將為大家詳細(xì)介紹一下Android?Flutter手游中操縱桿移動(dòng)角色的原理與實(shí)現(xiàn)過(guò)程,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-07-07Android實(shí)現(xiàn)可折疊式標(biāo)題欄
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)可折疊式標(biāo)題欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09Android使用ViewPager實(shí)現(xiàn)無(wú)限滑動(dòng)效果
相信在大家開(kāi)發(fā)Android的時(shí)候,我們常常用ViewPager來(lái)為自己的應(yīng)用創(chuàng)建廣告條幅,并且常常會(huì)遇到ViewPager無(wú)限滑動(dòng)這樣的需求。下面來(lái)一起看看吧。2016-09-09