Android 新增一張圖片 加入相冊


當我要把一張圖片加入到相冊時, 執行如下的 代碼, 發個廣播就好了 
getContext().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));


但是發現在有些手機上 比較慢, 不是很實時 如果 做相冊之類的 需求的畫,  新增一張圖片然后在立馬刷新數據的畫, 可能 沒有剛剛新增的數據
那么還可以用如下方法: 
MediaScannerConnection.scanFile(getContext().getApplicationContext(), new String[]{mCurrentSavePhotoPath}, null, new MediaScannerConnection.OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri) {
LogUtil.e(TAG, "onScanCompleted path = " + path);
}
});
測試結果 確實是比發廣播快一些:
對了說道實時掃描 Android 手機圖片數據:
有如下兩種方法: 1) 通過 activity 的 activity.getLoaderManager().initLoader 方法 
final String[] columns = {MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media._ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Images.Media.DATA, MediaStore.Images.Media.WIDTH, MediaStore.Images.Media.HEIGHT};
activity.getLoaderManager().initLoader(0, null, new LoaderManager.LoaderCallbacks<Cursor>() {
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return new CursorLoader(getContext(), MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, "", null, MediaStore.Images.Media.DATE_MODIFIED + " DESC ");
}

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cur) {
handleImageData(cur);
getMvpView().loadImgOver(mAlbumModels);
}

@Override
public void onLoaderReset(Loader<Cursor> loader) {

}
});
2) 使用ContentResolver 查詢 
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {

ContentResolver cr = getContext().getContentResolver();
final String[] columns = {MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media._ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Images.Media.DATA, MediaStore.Images.Media.WIDTH, MediaStore.Images.Media.HEIGHT};
Cursor cur = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, "", null, MediaStore.Images.Media.DATE_MODIFIED + " DESC ");

handleImageData(cur);
return null;
}

@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
getMvpView().loadImgOver(mAlbumModels);
}
}.execute();

第一種方法的好處是, 當如果有 圖片數據改動時,  它能夠自動重新查詢一遍數據
第二種就是手動查詢, 如果有數據變動 也不知道 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com