フラッシュやフォーカス、色合いも変えれるカメラAPI
Camera.Parametersというクラスを使用してカメラの設定ができます。
| 表 カメラの設定(抜粋) | ||||||||||||||
|
- - PR -
上記以外にも写真に位置情報を入れたり、写真のサイズを変更したり、JPEGのクオリティを設定したりできます。
気を付けなければならないのは、「Camera.Parametersで定義されている設定は、必ずしもすべての端末で使用できるわけではない」という点です。
例えば「花火を撮影するシーン」というものがCamera.Parameters.SCENE_MODE_FIREWORKSとして定義されていますが、これが使用できるかできないかは、以下のように判定する必要があります。
Camera.Parameters params = camera.getParameters();
List<String> supported = params.getSupportedSceneModes();
if (supported != null) {
for (String sm : supported) {
if (sm.equals(Camera.Parameters.SCENE_MODE_FIREWORKS)) {
// サポートしている
}
}
}
以下は、ColorEffectを設定した比較です。
![]() |
| 図3 左からColorEffectが"none"、"mono"、"sepia"の比較 |
端末でサポートされているならば、設定するだけで効果が現れるので、とても簡単です。設定画面はプレビューの右上辺りをタッチしてください。
コラム 「カメラ制御の勘所」 |
| カメラを制御するためにCamera.openメソッドでインスタンスを取得しますが、内部ではカメラのサービスに接続を行っています。ほかのアプリがカメラを使っている場合、接続に失敗することがあるのはもちろん、自分のアプリも使い終わったら適切に解放する必要があります。
Camera.open()メソッドはRuntimeExceptionが発生する可能性があり、カメラを使い終える場合はCamera#release()メソッドは忘れてはいけません。 カメラの設定を行う際にも、カメラのインスタンスが必要ですが、設定画面は今回のようにカメラのプレビューを表示させているActivityとは異なる場合があると思います。 この場合、設定画面を呼び出した際に、プレビューのSurfaceViewはsurfaceDestroyedが呼び出されライフサイクルを終了しますが、カメラはCamera#release()を呼び出さずに生かしたままにしておきます。設定画面では、設定した内容を呼び出し元のActivityにIntentとして返し、呼び出し元は戻ってきた際に再びSurfaceViewを生成してカメラにプレビューやコールバックを設定し直し、設定されたパラメータを適用する、という方法を採ると、比較的シンプルになります。 カメラのライフサイクルは、SurfaceViewのライフサイクルと密接な関係を持ちますが、同時にActivityのライフサイクルとも密接な関係を持ちます。今回のサンプルアプリでは、簡単であるため実装していませんが、実際にはActivity#onPause()などで、プレビューを停止し、カメラをリリースする必要があります。 |
オーバーレイでAR(拡張現実)アプリもできる?
カメラのプレビューにオーバーレイを重ねて表示させることで、実際に見えている映像に情報を付加することが可能です。
![]() |
| 図4 プレビューにオーバーレイを重ねる |
サンプルのオーバーレイ機能は、タッチされた場所にロボットを描画するだけの機能ですが、サンプルとしては分かりやすいと思いますので、ソースコードを参照してみてください。
オーバーレイは、いま流行の拡張現実(Augmented Reality、AR)の入り口でもあります。ARは難しいものではありません。撮影した写真の右下に撮影日を表示するのも、立派なARの1つです。Androidでは、位置情報が取得できるので、そういったものをプレビューにオーバーレイすることも比較的簡単です。
現実世界側の映像情報を解析して拡張する、あるいはクラウド上に蓄積されたデータを位置情報から取得して拡張するなどの方法は、日付けや位置情報をただ表示するのに比べ高度な技術が必要ですが、その分面白い効果が得られます。
Androidアプリはカメラも面白い!
Androidのカメラ制御は、iアプリやS!アプリなどに比べ、使い勝手が格段に良いです。それもそのはず、Androidに標準搭載されているカメラアプリも、今回紹介したAPIと同じものを使用して作られているので、標準アプリと同じレベルのものは作れてしまうわけです。がんばれば、標準カメラアプリを置き換えられるアプリだって作れます。
カメラは写真の撮影だけではなく、プレビューですら用途にあふれています。特にARについては、これから広がっていく分野なので注目に値します。
YouTubeで「Android AR」で検索すると、たくさんの面白いアイデアのデモが見つけられます。興味があれば見てみてください。
■ @IT関連記事
| Java技術者も知っておきたい「AR(拡張現実)」 安藤幸央のランダウン(49) 実写映像にCGを混ぜるAR技術がiPhone/Androidアプリ、GPS、ゲームなど多方面で流行中だ。「Java技術者には関係ない」と侮るなかれ 「Java Solution」フォーラム 2009/11/17 |
| 飛び出すFlash、知ってますか? Flashと人〜あの人からの6つの回答(2) 四角いマーカーをWebカメラ画像から探し出しCGを合成することで、その場にオブジェクトを存在して見せるARToolKitをご存じですか |
||
| やっと出た! 公式版のProcessingを動画で確認 絵心がなくても簡単に絵が描けるProcessing(最終回) 7年の時を経て正式版がリリースされた描画プログラミング環境のProcessing。動画でプログラムを見てみよう |
||
| Titaniumで始めるモバイルアプリ作成の基礎知識 Web技術でネイティブアプリを作れるTitanium(2) ついに出た1.0版について、その特徴と使い方、開発の勘所を解説します。今後もiPhone開発に使え得るのか注目です |
||
ケータイ分野以外の組み込みデバイス開発の現場でも注目を集めている「Android」。組み込みデバイスへの適用からアプリケーション開発、イベントレポート、ニュースなどAndroidに関するさまざまな技術情報・最新動向をお届けします! |
| Index | ||||||||
|
||||||||
Androidで動く携帯Javaアプリ作成入門 バックナンバー 連載インデックスへ»
- 第1回 Android Market配布を目指しEclipseでHelloWorld!
- 第2回 Androidアプリ作成の基本“Activity”とは何か?
- 第3回 ブラウザや地図、ストリートビューの基、Intentとは?
- 第4回 簡単でワクワクするAndroidウィジェット10連発!
- 第5回 Androidアプリの使いやすさを左右する5つのレイアウト
- 第6回 AndroidでSQLiteのDB操作をするための基礎知識
- 第7回 常駐アプリが作成できるAndroidの“サービス”とは
- 第8回 アプリを国際化してAndroid Marketから世界へ発信
- 第9回 Netbookにも広まるAndroidで、かつてないWeb体験を
- 第10回 Androidのホーム画面に常駐するアプリを作るには
- 第11回 Android 1.6のジェスチャーとテキスト読み上げを使う
- 第12回 SurfaceViewならAndroidで高速描画ゲームが作れる
- 第13回 iPhoneより多彩なAndroidのセンサをアプリで操作
- 第14回 Android 2.1の新機能で作る、美しく燃える“待ち受け”
- 第15回 Android NDKでJNIを使用してアプリを高速化するには
- 第16回 地図/位置情報/GPSを使うAndroidアプリを作るには
- 第17回 もはやケータイに必須のカメラをAndroidで制御しよう
- 第18回 開発者が知っておきたいAndroid 2.2新機能 12連発
- 第19回 XMLレイアウトでAndroidアプリに“設定画面”を追加
- 第20回 Androidアプリで“アニメーション”するための基礎知識
- 第21回 アニメーションでAndroidに独創的な画面エフェクトを
- 第22回 開発者が知って得するAndroid 2.3の新機能18選
- 第23回 Android 3.0の新APIで簡単ドラッグ&ドロップ実装
- 第24回 Androidの画面の大きさの違いを解決するFragments
- 第25回 Compatibility packageで2.x系でもマルチサイズ対応
- 第26回 開発者が知らないと損するAndroid 4.0の新機能44選
- 第27回 Android 4.0でアプリ開発を始めるための環境構築
- 第28回 Android 4.0で注目の顔認識をアプリに組み込むには
- 第29回 Androidのウィジェットにノーティフィケーションするには
- 第30回 Androidアプリでマルチメディアを扱うための基礎知識
- 第31回 Android 4.0のサービス/プロセス間通信の基本
| ご意見、ご感想は Smart&Social 会議室へどうぞ |
| Smart&Social フォーラム トップページへ |
TechTargetジャパン
- JenkinsでCIすればAndroidアプリ開発はもう怖くない (2012/5/23)
Androidアプリ開発における継続的インテグレーションの重要性やJenkinsの利点を解説し、環境構築の仕方や使い方の手順を紹介します - Open Graphアプリを作りApp Centerに登録するには (2012/5/18)
ユーザーの活動を共有できるFacebookの新機能を使ったアプリの開発方法と新しいアプリストアへの登録手順を解説 - Bootstrap、Hogan.js、FinagleなどTwitter系OSS (2012/5/15)
Twitterのアーキテクチャやオープンソースへの取り組みなどの講演模様をお届け。OpenJDKやStorm、Gizzard、Twitter4Jも注目 - ソーシャルゲーム/スマホ開発イベント記事が人気 (2012/5/11)
4月はソーシャルゲームの開発者向けイベントや、Webとネイティブの対決が熱かった! UnityやPerfumeも見逃せない!?
|
|
キャリアアップ
スポンサーからのお知らせ
イベントカレンダー
- - PR -




