そごうソフトウェア研究所

SOA、開発プロセス、ITアーキテクチャなどについて書いています。Twitterやってます@rsogo

Androidアプリでカメラ機能を使ってスマホならではの便利さを。

便利系のアプリでカメラの機能を使うというのは結構良くあるんじゃ無いでしょうか。
例えば、Evernoteの様に何かをメモする、記録する。
Facebookのように写真をアップして、みんなに共有する。


企業内で使われるようなアプリでも現場の写真や、名刺の写真を作業報告書、日報に添付するような用途も考えられます。

f:id:begirama:20121026173912p:plain


このようなカメラ機能を使って日頃の生活や、仕事が便利になるアプリはGPSと同様、今まであったWebアプリではできないスマホならではの差別化がし易いところです。


さて、Androidアプリではカメラ機能を使うために2つの方法があります。1つは、提供されているカメラ用のAPIを使って自分で実装する。もう一つは、Intent(MediaStore.ACTION_IMAGE_CAPTURE)でAndroid端末に用意されているカメラアプリを呼び出して、カメラ機能はそのアプリに任せてしまうことです。


カメラ専用アプリなど、写真をとること自体に独自性を持たせたい場合は、カメラAPIを使う必要がありますが、そうでは無い場合、Intentを使って標準カメラアプリを使うことをお勧めします。
理由はカメラAPIを使った場合、端末独自の仕様によって上手く動かない、端末毎のテストが増えるからです。Android端末の標準カメラアプリに任せれば、各端末でテスト済みでしょうから安心できますね。


Intentを使ってカメラアプリを呼び出した場合、その結果は次のどちらかで受け取ることができます。

  • Extraでビットマップを直接受け取る
  • カメラアプリを呼び出す時に保存場所を場所を指定し、コールバックがあった時にその場所の写真を取得する


実際のコードはこちらのサイトが非常に丁寧で分かりやすかったです。4.0.3でも動作確認できました。
http://9ensan.com/blog/smartphone/android/android-camera-intent/