MediaStore.Images.Thumbnails.getThumbnail中的原始ID是什么?

时间:2014-01-24 03:15:25

标签: android thumbnails android-image

我使用gridView来获取文件列表。但它无法使用filelist.get(position)

我希望使用

获取Thumbnails
MediaStore.Images.Thumbnails.getThumbnail(getActivity().getContentResolver(), origId, Images.Thumbnails.MICRO_KIND, null);

但这里的origId图像是什么?

这是path还是name

----------------------------------------------- --edit ---------------------------------------

完整代码如下:

我希望在getView获得缩略图。

viewTag是另一个类,它存储textview

所以viewTag.mFilename.setText(filename);等于Textview.setText

public class LocalFileListAdapter extends BaseAdapter {

        private LayoutInflater mInflater ;
        private ArrayList<FileNode> mFileList ;
        private static final String TAG = "MJPEG Player" ;
        private Context mContext;

        public LocalFileListAdapter(LayoutInflater inflater, ArrayList<FileNode> fileList) {
            mInflater = inflater ;
            mFileList = fileList ;
        }

        public void GridAdapter(Context ctx) {
            // TODO Auto-generated method stub
            mContext = ctx; 
        }

        @Override
        public int getCount() {
            return mFileList == null ? 0 : mFileList.size() ;
        }

        @Override
        public Object getItem(int position) {
            return mFileList == null ? null : mFileList.get(position) ;
        }

        @Override
        public long getItemId(int position) {
            return position ;
        }


        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            ViewTag viewTag ;

            if (convertView == null) {

                convertView = mInflater.inflate(R.layout.filelist_row, null) ;

                TextView fileListName = (TextView) convertView.findViewById(R.id.fileListName);
                fileListName.setSelected(true);

                viewTag = new ViewTag(mContext , (ImageView) convertView.findViewById(R.id.fileListThumbnail), 
                        (ImageView) convertView.findViewById(R.id.select) ,
                        mFileList.get(position) , fileListName , 
                        (TextView) convertView.findViewById(R.id.fileListSize) , 
                        (ImageView) convertView.findViewById(R.id.video_layout) , 
                        (TextView) convertView.findViewById(R.id.fileListTime));

                convertView.setTag(viewTag) ;

            } else {
                viewTag = (ViewTag) convertView.getTag() ;
            }

            viewTag.mFileNode = mFileList.get(position) ;
            String filename = viewTag.mFileNode.mName.substring(viewTag.mFileNode.mName.lastIndexOf("/") + 1) ;

            viewTag.mFilename.setText(filename);

                            MediaStore.Images.Thumbnails.getThumbnail(getActivity().getContentResolver(), Long.parseLong(mFileList.get(position)), Images.Thumbnails.MICRO_KIND, null);

            return convertView ;
        }
    }

如何获取图片ID?

2 个答案:

答案 0 :(得分:4)

您使用以下方法:

public static Bitmap getThumbnail(ContentResolver cr,long origId,int kind,BitmapFactory.Options options)

参数:

cr - &gt; ContentResolver用于将查询分派给MediaProvider。

origId - &gt;与感兴趣的缩略图相关联的原始图像ID。

种 - &gt;要获取的缩略图类型。应该是MINI_KIND或MICRO_KIND。

选项 - &gt;这仅在解码位图时用于MINI_KIND 返回 一个Bitmap实例。如果与origId关联的原始图像不存在或内存不足,则可能为null。

如果您有Image Uri,那么您将获得以下ID:

imageUri.getLastPathSegment()

String wholeID = DocumentsContract.getDocumentId(imageUri);
String id = wholeID.split(":")[1];
Long origId = Long.parseLong(id);

现在你需要传递给getThumbnail()

答案 1 :(得分:1)

这只是每张图片的ID。

来自文档:

缩略图的原始图像 键入:INTEGER(图像表中的ID)

http://developer.android.com/reference/android/provider/MediaStore.Images.Thumbnails.html#IMAGE_ID

所以,它既不是路径,也不是名称。它是MediaStore中每个图像的内部生成的ID。它通常是图像的Uri。