2012-04-10 80 views
3

我有一個應用程序,我寫了上傳圖像到我的服務器,這對運行android 2.3.4的droidx和運行android 4.0.3的兩個不同的模擬器運行良好。然而,當我嘗試在華碩ee Pad Transformer(運行4.0.3)上運行它時,它總是告訴我MediaStore.Images.Thumbnails中有0項。MediaStore.Images.Thumbnails似乎是空的

String[] projection = {MediaStore.Images.Thumbnails._ID}; 
cursor = managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, 
    projection, 
    null, 
    null, 
    MediaStore.Images.Thumbnails.IMAGE_ID); 
Log.d("Info","There are " + cursor.getCount() + " items"); 

應該有6個出現,5個來自相機,1個是我從網上下載的。早期的代碼只是獲取圖像而不是縮略圖,告訴我有5張來自相機的圖像,所以我知道代碼正在工作。

String[] projection = {MediaStore.Images.Media._ID}; 
    cursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
    projection, 
    "Camera", 
    null,null); 
Log.d("Info","There are " + cursor.getCount() + " images"); 

這些圖像都顯示出來,當我打開圖片庫應用程式。我也嘗試清除媒體存儲應用程序,並重新啓動設備,看看是否會有所幫助,但事實並非如此。在這一點上,我非常困惑,特別是因爲這個完全相同的代碼在手機和模擬器上工作。

+0

這裏跟我的Nexus S一樣,有什麼線索怎麼解決呢? – shem 2013-02-18 10:08:01

+0

@shem我發佈了我最終使用的代碼作爲答案 – nick 2013-02-18 19:26:28

回答

4

好的,找到它了。
當你有圖片ID你用得到它的縮略圖:

MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), imageID, MediaStore.Images.Thumbnails.MINI_KIND, null); 

這將返回位圖加載完整的圖像。

+0

Bear in請注意,如果位圖不可用,則該調用將會阻止,直到生成爲止。 – tbm 2014-05-20 23:29:14

+0

另外,如果生成失敗,則返回的位圖將爲空,無解釋。 – tbm 2014-05-20 23:50:44

0

我創建了一個實用程序類,它將創建並返回圖像和視頻的縮略圖,如果您將uri傳遞給想要獲取的圖像/視頻。

package Utilities; 

import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.media.ThumbnailUtils; 
import android.provider.MediaStore; 

public class AndroidUtils 
{ 
    public static final int THUMBNAIL_SIZE = 128; 
    public static Bitmap GetImagePreview(String uri) 
    { 
     return ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(uri), THUMBNAIL_SIZE, THUMBNAIL_SIZE); 
    } 

    public static Bitmap GetVideoPreview(String uri) 
    { 
     return ThumbnailUtils.createVideoThumbnail(uri, MediaStore.Images.Thumbnails.MICRO_KIND); 
    } 
} 
+0

這是工作,但是您確定它正在獲取正確的縮略圖,而不是從原始照片創建一個嗎?因爲它看起來很慢,而且內存很大 – shem 2013-02-26 10:42:30

+0

@shem如果我正確理解文檔,它會爲每個圖像/視頻創建一個新的縮略圖。我在一年前寫了這個代碼,所以很難記住。這裏是一個鏈接到文檔http://developer.android.com/reference/android/media/ThumbnailUtils.html – nick 2013-02-26 19:40:56

+0

是的,但我認爲decodeFile加載實際圖像 – shem 2013-02-27 08:21:08