Androidアプリ開発 -ギャラリーから選んだ画像のサムネイルを取得-

公開日: : Android, IT


 やりたいこと

  1. ボタンをクリックしてギャラリーを表示。
  2. ギャラリーで画像を選んだら、その画像のサムネイル画像を表示。

 ソース

 ギャラリーを表示させる

まず、onClickでimageBtnをクリックしたらギャラリーを開くようにしています。

startActivityForResultで、起動したギャラリーで画像を選択したら、呼び出し元のonActivityResultを呼び出すようにしています。
第2引数のREQUEST_GALLERYがonActivityResultメソッドのrequestCodeの値になります。

public void onClick(View view) {
 if (view == imageBtn) {
   Intent intent = new Intent();
   intent.setType("image/*");
   intent.setAction(Intent.ACTION_GET_CONTENT);
   startActivityForResult(intent, REQUEST_GALLERY);
 }
}

 サムネイル画像を取得

ギャラリーで画像を選択すると、呼び出し元ActivityのonActivityResultメソッドが呼ばれます。
そこで、REQUEST_GALLERYだったかを判定して、そうであれば処理をおこないます。

そして、選択したギャラリーのデータ(data)からサムネイル画像を取得します。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 if (requestCode == REQUEST_GALLERY && resultCode == RESULT_OK) {
  try {
    Uri uri = data.getData();
    Cursor c = this.managedQuery(uri, null, null, null, null);
    c.moveToFirst();
    long id = c.getLong(c.getColumnIndexOrThrow("_id"));
    ContentResolver cr = getContentResolver();
    Bitmap img = MediaStore.Images.Thumbnails.getThumbnail(cr, id, MediaStore.Images.Thumbnails.MICRO_KIND, null);
    //略
  } catch (Exception e) {
  Toast.makeText(this, "失敗しました。", Toast.LENGTH_LONG).show();
  }
}

 まとめ

以上でギャラリーで選択した画像のサムネイル画像の取得は出来ます。
ただ、これが「スマートなのか?」と言われると多少疑問があったりもするので、他に方法があれば教えてくれると嬉しいです!

 参考サイト

広告

関連記事

no image

mailtoリンクの件名や本文の文字化け -N-02Aのケース-

* mailtoリンクの仕様 携帯電話用のWebサイトではmailtoリンクを使うことが多いと思い

記事を読む

iPhoneアプリ開発 芳名帳アプリ作成(2) -記帳画面作成-

* 今までの流れ - * 画面構成 今回の芳名帳アプリは以下の画面で構成しています。 -

記事を読む

no image

jQuery Mobileではまったこと -広告が表示されない!($.mobile.changePage()でのページ遷移)-

swipeした際にページ遷移をさせるためにjQueryMobileの$.mobile.changeP

記事を読む

no image

jQuery Mobileのバージョンアップではまった – pushStateの存在 –

jQuery Mobileをつかってスマートフォン対応をしたときにはまったこと。 * 前提

記事を読む

Jenkins + DeployGate(2) -DeployGateにアプリをアップ!-

DeployGateを使ってますか? 継続的にDeployってますか? TestFlightの

記事を読む

no image

MySQLのバックアップ手順 -消えたら困るものはバックアップ-

そろそろデータが消えてもらったら困るぐらいになっていたのでバックアップをとることにしました。 とい

記事を読む

no image

PHP_CodeSniffer+ Eclipse + PHP Code Formatter Pluginでコーディング規約を守ったコーディング

1人でプログラミングをしているにしても、多人数でプログラミングをしているにしても、コーディング規約を

記事を読む

スクリーンショット 2013-04-27 11.46.12

githubを使っての開発(2) -masterブランチにマージ-

前エントリーでgithub-flowをもとにした流れを書いたのですが、その中のマージについてもう少し

記事を読む

no image

jQuery Mobileの1.0Beta3、1.0RC1で起きた現象 -iOS5で動かない!?-

最近おきたjQuery Mobile周りについてのメモ。 本来なら色々チェックしてちゃんと原因を調

記事を読む

no image

Twitterでプロテクトをかけているユーザが投稿したステータスを取得する方法

* 前提 ID Twitterの各投稿にはIDが存在していています。 そのIDを元にステータス

記事を読む

広告

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

広告

no image
[感想] Effective Objective-C 2.0 ☆☆☆☆★(4.5)

* 構成 - 第1章 Objective-Cに慣れる -

no image
[感想] iOSアプリテスト自動化入門 ☆☆☆(3.0)

* 構成 - Chapter 1 テスト自動化への取り組み

DeployGateを試してみた(iOS編) -DeployGateがiOSに対応-

今までのDeployGate - -[http://pplace.

iPhone/iPadアプリを開発するためにやったこと

今までに、iPhoneを3本ほどリリース((リリースしたアプリは全て1

no image
ターミナルでgitのコマンドを補完したりブランチ名を表示する – macでgitを便利に使うために –

* やりたいこと macのターミナルでgitをいじっていると -今の

→もっと見る

PAGE TOP ↑