Android,媒体扫描不会生成缩略图?

Android,媒体扫描不会生成缩略图?,android,thumbnails,media,Android,Thumbnails,Media,我有没有缩略图的图像文件。使用NFC从我的外部carmera导入 我想为我的图像选择器视图创建缩略图。一定要快 现在,我甚至不确定媒体扫描是否意味着生成缩略图或其他什么。 我尝试使用mMediaScannerConnection.scanFilemPath扫描文件,null 调用onScanCompleted,我尝试使用以下两个版本的函数获取缩略图 我得到两个函数的null thumbnailPath,我不知道为什么 private String getThumbnailPath(lon

我有没有缩略图的图像文件。使用NFC从我的外部carmera导入

我想为我的图像选择器视图创建缩略图。一定要快

现在,我甚至不确定媒体扫描是否意味着生成缩略图或其他什么。 我尝试使用mMediaScannerConnection.scanFilemPath扫描文件,null

调用onScanCompleted,我尝试使用以下两个版本的函数获取缩略图

我得到两个函数的null thumbnailPath,我不知道为什么

    private String getThumbnailPath(long imageId) {
        ContentResolver cr = this.mContext.getContentResolver();

        Cursor c = MediaStore.Images.Thumbnails.queryMiniThumbnail(cr, imageId, MediaStore.Images.Thumbnails.MINI_KIND, null);
        try {
            if (c.moveToNext()) {
                int dataId = c.getColumnIndex( Images.Thumbnails.DATA);
                String strThumPath = c.getString(dataId);
                Log.i("ScanTest", "strThumPath = " + strThumPath );
                return strThumPath;
            }
        } finally {
            if (c != null) c.close();
        }

        return null;
    }

    private String getThumbnailPath2( long imageId ){
        // http://wikicloud.blogspot.kr/2010/10/scanfile.html
        ContentResolver cr = this.mContext.getContentResolver();

        Cursor c = cr.query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, null, MediaStore.Images.Thumbnails.IMAGE_ID + "= ?" , new String[]{String.valueOf(imageId)}, null);
        try {
            if (c.moveToNext()) {
                int dataId = c.getColumnIndex( Images.Thumbnails.DATA);
                String strThumPath = c.getString(dataId);
                Log.i("ScanTest", "strThumPath = " + strThumPath );
                return strThumPath;
            }
        } finally {
            if (c != null) c.close();
        }

        return null;
    }
-编辑-

下面是我如何获得缩略图的方法

首先创建从图像id到缩略图路径的映射

受保护的映射getThumbnailPathFromDB{ 映射结果=新的HashMap; 游标thumbCursor=null; thumbCursor=getContentResolver.query MediaStore.Images.Thumbnails.EXTERNAL\u CONTENT\u URI, 无效的 无效的 空,空,

if (thumbCursor.moveToFirst()) {
    do {
        String path = thumbCursor.getString(thumbCursor
                .getColumnIndex(MediaStore.MediaColumns.DATA));
        long imageId = thumbCursor.getLong(thumbCursor
                .getColumnIndex(MediaStore.Images.Thumbnails.IMAGE_ID));
        result.put(new Long(imageId), path);
    } while(thumbCursor.moveToNext());
}

thumbCursor.close();

return result;
接下来,我迭代所有图像,并尝试从上面创建的映射中查找缩略图

ContentResolver cr=getContentResolver; Cursor=cr.query Images.Media.EXTERNAL_CONTENT_URI,null, null,null,Images.ImageColumns.DATE\u MODIFIED+DESC

//thumbnailPathList是我在上面创建的映射,imageId是从光标获取的图像的id 字符串thumbnailPath=thumbnailPathList.getnew LongimageId; //thumbnailPath在此处偶尔为空

我在大约10台设备上测试了我的代码。
它们都有我找不到缩略图的图像。

我有没有缩略图的图像文件。你忘了告诉我你是怎么知道的。因为它们没有出现在Gallery应用程序中?你首先必须找出谁通常在你的设备上生成缩略图。设备上的缩略图存储在哪里?请在这里解释所有内容。给出一个好的c你的问题的上文本。我想为我的图像选择器视图创建缩略图。不清楚你的应用程序是否必须这样做,还是外部应用程序。长图像id从何处获得该id?进一步命名你的Android版本。并在不同的设备/版本上尝试。通过谷歌搜索,我发现了许多关于缩略图的问题。似乎Gallery应用程序负责或者它。我刚刚在一个非常新的设备上发现了37599个缩略图。我在上面生成/下载了很多图像,没有使用媒体扫描仪,它们都出现在图库中。这不是我想要的,我放了一些.nomedia文件。缩略图仍然存在,但图库不再显示这些图像。在kitkat上,我通常会扔掉缩略图在设备上。有时它们包含在一个大文件中。很快,所有的文件都会回来。