Search in sources :

Example 1 with MediaFolder

use of com.yydcdut.note.entity.gallery.MediaFolder in project PhotoNoter by yydcdut.

the class RxGalleryPhotos method findInDatabase.

private void findInDatabase(MediaFolder mediaFolder4All) {
    final String[] projectionPhotos = { MediaStore.Images.Media._ID, MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Images.Media.DATA, MediaStore.Images.Media.DATE_TAKEN, MediaStore.Images.Media.ORIENTATION, MediaStore.Images.Thumbnails.DATA };
    Cursor cursor = MediaStore.Images.Media.query(mContext.getContentResolver(), MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projectionPhotos, "", null, MediaStore.Images.Media.DATE_TAKEN + " DESC");
    if (cursor == null) {
        return;
    }
    while (cursor.moveToNext()) {
        String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
        String thumb = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Thumbnails.DATA));
        File file = new File(path);
        if (file.exists() && file.length() > 0) {
            MediaPhoto mediaPhoto = new MediaPhoto(path, thumb);
            String folderName = file.getParentFile().getName();
            MediaFolder mediaFolder = mMediaCache.get(folderName);
            if (mediaFolder == null) {
                List<MediaPhoto> mediaPhotoList = new ArrayList<>();
                mediaPhotoList.add(mediaPhoto);
                mediaFolder = new MediaFolder(folderName, mediaPhotoList);
                mMediaCache.put(folderName, mediaFolder);
            } else {
                mediaFolder.getMediaPhotoList().add(mediaPhoto);
            }
            mediaFolder4All.getMediaPhotoList().add(mediaPhoto);
        }
    }
}
Also used : MediaPhoto(com.yydcdut.note.entity.gallery.MediaPhoto) ArrayList(java.util.ArrayList) MediaFolder(com.yydcdut.note.entity.gallery.MediaFolder) Cursor(android.database.Cursor) File(java.io.File)

Example 2 with MediaFolder

use of com.yydcdut.note.entity.gallery.MediaFolder in project PhotoNoter by yydcdut.

the class PhotoModel method findByMedia.

@NonNull
public Map<String, MediaFolder> findByMedia(@NonNull Context context) {
    WeakReference<Context> contextWeakReference = new WeakReference<>(context);
    if (mMediaCache == null) {
        mMediaCache = new HashMap<>();
        MediaFolder mediaFolder4All = new MediaFolder(MediaFolder.ALL, new ArrayList<MediaPhoto>());
        mMediaCache.put(MediaFolder.ALL, mediaFolder4All);
        final String[] projectionPhotos = { MediaStore.Images.Media._ID, MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Images.Media.DATA, MediaStore.Images.Media.DATE_TAKEN, MediaStore.Images.Media.ORIENTATION, MediaStore.Images.Thumbnails.DATA };
        Cursor cursor = MediaStore.Images.Media.query(contextWeakReference.get().getContentResolver(), MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projectionPhotos, "", null, MediaStore.Images.Media.DATE_TAKEN + " DESC");
        if (cursor == null) {
            return mMediaCache;
        }
        while (cursor.moveToNext()) {
            String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
            String thumb = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Thumbnails.DATA));
            File file = new File(path);
            if (file.exists() && file.length() > 0) {
                MediaPhoto mediaPhoto = new MediaPhoto(path, thumb);
                String folderName = file.getParentFile().getName();
                MediaFolder mediaFolder = mMediaCache.get(folderName);
                if (mediaFolder == null) {
                    List<MediaPhoto> mediaPhotoList = new ArrayList<>();
                    mediaPhotoList.add(mediaPhoto);
                    mediaFolder = new MediaFolder(folderName, mediaPhotoList);
                    mMediaCache.put(folderName, mediaFolder);
                } else {
                    mediaFolder.getMediaPhotoList().add(mediaPhoto);
                }
                mediaFolder4All.getMediaPhotoList().add(mediaPhoto);
            }
        }
    }
    contextWeakReference.clear();
    return mMediaCache;
}
Also used : Context(android.content.Context) ArrayList(java.util.ArrayList) MediaFolder(com.yydcdut.note.entity.gallery.MediaFolder) Cursor(android.database.Cursor) WeakReference(java.lang.ref.WeakReference) MediaPhoto(com.yydcdut.note.entity.gallery.MediaPhoto) File(java.io.File) NonNull(android.support.annotation.NonNull)

Example 3 with MediaFolder

use of com.yydcdut.note.entity.gallery.MediaFolder in project PhotoNoter by yydcdut.

the class RxGalleryPhotos method findByMedia.

@NonNull
public Observable<Map<String, MediaFolder>> findByMedia() {
    return Observable.create(new Observable.OnSubscribe<Map<String, MediaFolder>>() {

        @Override
        public void call(Subscriber<? super Map<String, MediaFolder>> subscriber) {
            if (mMediaCache == null || mMediaCache.size() == 0) {
                mMediaCache = new HashMap<>();
                MediaFolder mediaFolder4All = new MediaFolder(MediaFolder.ALL, new ArrayList<MediaPhoto>());
                mMediaCache.put(MediaFolder.ALL, mediaFolder4All);
                findInDatabase(mediaFolder4All);
            }
            subscriber.onNext(mMediaCache);
        }
    }).subscribeOn(Schedulers.io());
}
Also used : Subscriber(rx.Subscriber) MediaPhoto(com.yydcdut.note.entity.gallery.MediaPhoto) MediaFolder(com.yydcdut.note.entity.gallery.MediaFolder) HashMap(java.util.HashMap) Map(java.util.Map) NonNull(android.support.annotation.NonNull)

Aggregations

MediaFolder (com.yydcdut.note.entity.gallery.MediaFolder)3 MediaPhoto (com.yydcdut.note.entity.gallery.MediaPhoto)3 Cursor (android.database.Cursor)2 NonNull (android.support.annotation.NonNull)2 File (java.io.File)2 ArrayList (java.util.ArrayList)2 Context (android.content.Context)1 WeakReference (java.lang.ref.WeakReference)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 Subscriber (rx.Subscriber)1