[Android] 追加した画像をギャラリーに表示させるには

| トラックバック(0) |

アプリケーションのプログラム内からデバイスへ画像を追加した際、

そのままでは、ギャラリー(標準の画像ビューワー)に表示(反映)されません。

解決するには、以下のように MediaScannerConnection クラスを使用するか、ContentResolver クラスを使用します。

※サンプルコードでは両方のコードを記述していますが、実際には、どちらか一方でOKです
 HTC Desire + Android 2.2 の環境でのみ動作確認

 

サンプルコード

String title = "test";
String fileName = title + ".jpg";
String mimeType = "image/jpeg";
File file = new File(
    Environment.getExternalStorageDirectory(),
    fileName);

// MediaScannerConnection を使用する場合
MediaScannerConnection.scanFile( // API Level 8
    this, // Context
    new String[] { file.getPath() },
    new String[] { mimeType },
    null);

// ContentResolver を使用する場合
ContentResolver contentResolver = getContentResolver();
ContentValues values = new ContentValues(7);
values.put(Images.Media.TITLE, title);
values.put(Images.Media.DISPLAY_NAME, fileName);
values.put(Images.Media.DATE_TAKEN, System.currentTimeMillis());
values.put(Images.Media.MIME_TYPE, mimeType);
values.put(Images.Media.ORIENTATION, 0);
values.put(Images.Media.DATA, file.getPath());
values.put(Images.Media.SIZE, file.length());
contentResolver.insert(Images.Media.EXTERNAL_CONTENT_URI, values);

 

参考

  • ギャラリーへの画像反映方法について ・・・要グループアカウント
  • MessageView.java
    ※上記では、MediaScannerConnectionクラスのstaticなscanFileメソッドを使用していましたが、
     MessageView.java の MediaScannerNotifier クラスのように、
     MediaScannerConnectionClient インターフェースを使用する方法もあります
  • WEB+DB PRESS Vol.57」の「第5章 カメラ本格活用アプリを作ろう P.51」にも解説がありました
  • @gabu さん、@thorikawa さん、有難うございました

関連記事

トラックバック(0)

トラックバックURL: http://mt.adakoda.com/mt-tb.cgi/479

Android Advent Calendar 2011

2012年2月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29