Android 圖片存入系統相簿更新顯示執行個體詳解

來源:互聯網
上載者:User

標籤:scanf   images   系統圖庫   als   nal   檔案   實現   rhs   end   

Android 圖片存入系統相簿更新顯示執行個體詳解

在開發android的過程中,我們避免不了可能會涉及到做一個自訂相簿或則會去本地建立一個檔案夾來儲存我們需要的圖片。拿相簿來說,比如我們建立一個test的檔案夾,拍完一張照片後儲存到這個指定的test檔案夾裡,然後在相簿裡面顯示出來,就像的效果一樣。拍完即可立即顯示。但是,在實際開發過程中我們儲存完一張圖片後並不能立即更新顯示出來這個圖片,需要我們重啟手機才能在系統相簿中顯示出來。

這裡先提供一個插入系統圖庫的方法:

MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "", "");
通過該方法即可把圖片插入到系統圖庫中。但是,插入後並不會立即顯示出來,需要發送一個廣播:sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory()))); 
來通知系統進行整個sd卡的掃描,如果sd裡面的東西越多就會掃描的越久,並且掃描中我們不能訪問sd卡,所以這樣的實現方式對使用者來說並不友好。

這裡我們可以使用系統api:MediaScannerConnection給我們的方法來進行掃描更新:

  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. mHandler.sendEmptyMessageDelayed(1, 2000);
  5. mConnection =new MediaScannerConnection(mContext,this);
  6. }
  7. @Override
  8. public void onMediaScannerConnected() {
  9. mConnection.scanFile("/sdcard/image.jpg", "image/jpeg");
  10. }
  11. @Override
  12. public void onScanCompleted(String s, Uri uri) {
  13. Log.v("huan", "scan completed");
  14. mConnection.disconnect();
  15. }

http://www.kmjdad.com/
http://www.jnsjzyy.com/
http://www.czhkwl.com/
http://www.express-o2o.com/
http://www.gzjindao.com/
http://www.chumingchuanmeiyishu.com/
http://www.thcxb.com/
http://www.xingguangkeji.com/
http://www.gdrhsy.com/
http://www.clhuiji.com/
http://www.nxjianye.com/
http://www.tjmingsheng.com/
http://www.gangguan022.com/
http://www.zyjbp.com/
http://www.qianhangmy.com/
http://www.tzminbell.com/

複製代碼

但是該種方法我在使用過程中發現一個問題就是:傳入的context會被MediaScannerConnection一直持有,導致oom。所以在使用過程中在activity使用時還需要注意。

另外我們還可以通過指定路徑的方式來進行廣播,這樣就可以避免掃描整個sd卡: 

  1. sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory() + picPath)));
複製代碼

圖片更新的技巧和注意事項分享給大家,希望對你有協助。

Android 圖片存入系統相簿更新顯示執行個體詳解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.