0

現在、SD カードから画像を読み込むアプリを開発中です。エミュレーターでは、以下は正常に機能し、表示する画像を見つけます。ただし、Galaxy S2 および S3 では、画像が表示されることはありません。何か案は?

Cursor cursor = getContentResolver().query(
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
    { MediaStore.Images.Thumbnails._ID }, 
    null, 
    null, 
    MediaStore.Images.Media._ID
);

int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);
int size        = cursor.getCount();
int imageId     = 0;

for (int i = 0; i < size; i++) {
     if(cursor.isClosed()) {
         continue;
     }
     cursor.moveToPosition(i);
     imageId = cursor.getInt(columnIndex);
     uri     = Uri.withAppendedPath(
         MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, 
         Integer.toString(imageId)
     );

try {
    bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));

        if (bitmap != null) {
            newBitmap = Bitmap.createScaledBitmap(bitmap, 70, 70,true);
            bitmap.recycle();

            if (newBitmap != null) {
                publishProgress(newBitmap);
            }
        }
} catch (IOException e) {}
}
cursor.close();
return null;
4

1 に答える 1

0

デバイスでテストした後、次の問題が解決したことがわかりました。

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.outHeight = 70;
    options.outWidth = 70;
    Bitmap bitmap = null;

    Cursor cursor = getContentResolver().query(
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
        PROJECTION, 
        null, 
        null, 
        MediaStore.Images.Media._ID
    );
    int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);
    int size        = cursor.getCount();

    for (int i = 0; i < size; i++) {
        if(cursor.isClosed()) {
            break;
        }
        cursor.moveToPosition(i);

        bitmap = MediaStore.Images.Thumbnails.getThumbnail(
            getContentResolver(), 
            cursor.getInt(columnIndex), 
            MediaStore.Images.Thumbnails.MICRO_KIND,  
            options
        );
        publishProgress(new LoadedImage(bitmap));
    }
    cursor.close();
于 2012-11-29T21:21:50.750 に答える