C/C++プログラマの管理者が, Androidプログラムにチャレンジ. AndroidプログラミングのTipsをメモっていく予定です.

端末内の画像ファイルの情報を取得するには, メディアストア(MediaStore)クラスとコンテントリゾルバ(ContentResolver)クラスを利用する.

画像情報の取得

  • MainActivity.java
    • getContentResolverメソッドで, ContentResolverのインスタンスを取得する.
    • ContentResolver#queryメソッドで, 第1引数に画像の保存領域のURIを指定して, 画像ファイルの情報を取得する.
   システム領域の場合 MediaStore.Images.Media.INTERNAL_CONTENT_URI
   システム領域外の場合 /sdcard の場合 MediaStore.Images.Media.EXTERNAL_CONTENT_URI (通常はこちら)
    • Cursor#getCountメソッドで, データベースにヒットした件数を取得する.
    • Cursor#getColumnIndexメソッドで, 項目を指定してデータを取得する.
    • Cursor#closeメソッドで, クローズする.
取得できる主な情報
カラム名情報
DATAデータストリーム
MIME_TYPEMIMEタイプ
TITLEタイトル
LATITUDE緯度
LONGITUDE経度
その他に取得できる情報については, Android Developerの以下を参照.
http://developer.android.com/reference/android/pro...
http://developer.android.com/reference/android/pro...
package com.moonlight_aska.android.media01;

import java.util.Arrays;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;

public class MainActivity extends Activity {
  ArrayAdapter<String> mAdapter = null;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
    // 画像情報の取得
    ContentResolver resolver = getContentResolver();
    Cursor cursor = resolver.query(
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI, // データの種類
        null, // 項目(null 全項目)
        null, // フィルタ条件(null フィルタなし)
        null, // フィルタ用パラメータ
        null // ソート
      );
    Log.v("MEDIA", Arrays.toString(cursor.getColumnNames())); // 項目名一覧
    Log.v("MEDIA", "Image files = " + cursor.getCount() ); // 取得件数
    if (cursor.moveToFirst()) {
      String info;
      do {
        info = "ID : " + cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media._ID));
        info += "\nTITLE : " + cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.TITLE));
        info += "\nPATH : " + cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
        // アダプタに追加
        mAdapter.add(info);
      } while (cursor.moveToNext());
    }
    cursor.close();
    ListView listView = (ListView)findViewById(R.id.listview);
    listView.setAdapter(mAdapter);
  }
}
  • 動作例
Nexus 7 / Android 4.3




コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

Firebase(2)

AD



管理人/副管理人のみ編集できます