icon

**
         * Receives the above message, loads photos and then sends a message to
         * the main thread to process them.
         */
        public boolean handleMessage(Message msg) {
            Iterator<FileId> iterator = mPendingRequests.values().iterator();
            while (iterator.hasNext()) {
                FileId id = iterator.next();
                ImageHolder holder = mImageCache.get(id.mPath);
                if (holder != null && holder.state == ImageHolder.NEEDED) {
                    // Assuming atomic behavior
                    holder.state = ImageHolder.LOADING;
                    switch (id.mCategory) {
                        case Apk:
                            Drawable icon = Util.getApkIcon(mContext, id.mPath);
                            holder.setImage(icon);
                            holder.state = BitmapHolder.LOADED;
                            break;
                        case Picture:
                        case Video:
                            boolean isVideo = id.mCategory == FileCategory.Video;
                            if (id.mId == 0)
                                id.mId = getDbId(id.mPath, isVideo);
                            if (id.mId == 0) {
                             
                                /*for(int i = 0; i < FILE_ICON_GET_MAX_TIMES; i++){
                                    SystemClock.sleep(FILE_ICON_GET_SLEEP_PERIOD);
                                    id.mId = getDbId(id.mPath, isVideo);
                                    if(id.mId != 0)
                                        break;
                               
                                }
                                */
                                
                                Log.e("FileIconLoader", "Fail to get dababase id for:" + id.mPath);
                            }
                           
                            Bitmap bitmap = null;
                            try {
                                if (isVideo) {
                                    bitmap = getVideoThumbnail(id.mId);
                                } else {
                                    bitmap = getImageThumbnail(id.mId);
                                }
                            } catch (Exception e) {
                                Log.e(TAG, "getVideoThumbnail/getImageThumbnail fail");
                            }
                            if (bitmap != null) {
                                holder.setImage(bitmap);
                                holder.state = BitmapHolder.LOADED;
                            } else {
                                holder.state = ImageHolder.NEEDED;
                            }
                            //holder.setImage(isVideo ? getVideoThumbnail(id.mId) : getImageThumbnail(id.mId));
                         
                            break;
                    }
 
                    //holder.state = BitmapHolder.LOADED;
                    mImageCache.put(id.mPath, holder);
                }
            }
 
            mMainThreadHandler.sendEmptyMessage(MESSAGE_ICON_LOADED);
            return true;
        }
 
        private static final int MICRO_KIND = 3;
 
        private Bitmap getImageThumbnail(long id) {
            return Images.Thumbnails.getThumbnail(mContext.getContentResolver(), id, MICRO_KIND, null);
        }
 
        private Bitmap getVideoThumbnail(long id) {
            return Video.Thumbnails.getThumbnail(mContext.getContentResolver(), id, MICRO_KIND, null);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值