Androidアプリ開発 -ギャラリーから選んだ画像のサムネイルを取得-
やりたいこと
- ボタンをクリックしてギャラリーを表示。
- ギャラリーで画像を選んだら、その画像のサムネイル画像を表示。
ソース
ギャラリーを表示させる
まず、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(); } }
まとめ
以上でギャラリーで選択した画像のサムネイル画像の取得は出来ます。
ただ、これが「スマートなのか?」と言われると多少疑問があったりもするので、他に方法があれば教えてくれると嬉しいです!
参考サイト
広告
関連記事
-
mailtoリンクの件名や本文の文字化け -N-02Aのケース-
* mailtoリンクの仕様 携帯電話用のWebサイトではmailtoリンクを使うことが多いと思い
-
iPhoneアプリ開発 芳名帳アプリ作成(2) -記帳画面作成-
* 今までの流れ - * 画面構成 今回の芳名帳アプリは以下の画面で構成しています。 -
-
jQuery Mobileではまったこと -広告が表示されない!($.mobile.changePage()でのページ遷移)-
swipeした際にページ遷移をさせるためにjQueryMobileの$.mobile.changeP
-
jQuery Mobileのバージョンアップではまった – pushStateの存在 –
jQuery Mobileをつかってスマートフォン対応をしたときにはまったこと。 * 前提
-
Jenkins + DeployGate(2) -DeployGateにアプリをアップ!-
DeployGateを使ってますか? 継続的にDeployってますか? TestFlightの
-
MySQLのバックアップ手順 -消えたら困るものはバックアップ-
そろそろデータが消えてもらったら困るぐらいになっていたのでバックアップをとることにしました。 とい
-
PHP_CodeSniffer+ Eclipse + PHP Code Formatter Pluginでコーディング規約を守ったコーディング
1人でプログラミングをしているにしても、多人数でプログラミングをしているにしても、コーディング規約を
-
githubを使っての開発(2) -masterブランチにマージ-
前エントリーでgithub-flowをもとにした流れを書いたのですが、その中のマージについてもう少し
-
jQuery Mobileの1.0Beta3、1.0RC1で起きた現象 -iOS5で動かない!?-
最近おきたjQuery Mobile周りについてのメモ。 本来なら色々チェックしてちゃんと原因を調
-
Twitterでプロテクトをかけているユーザが投稿したステータスを取得する方法
* 前提 ID Twitterの各投稿にはIDが存在していています。 そのIDを元にステータス