しゃーなしだな!作った小遣い帳アプリに写真を登録できるようにしてみるか。
まずは勉強から。ここら辺がカメラに関した記事。
- @IT もはやケータイに必須のカメラをAndroidで制御しよう
- 普通の写真撮影から、フラッシュ、エフェクト、オーバーレイなどの利用まで。
- ITpro あなたのAndroidアプリを“カメラアプリ化”する
- 自分のアプリにボタン追加してカメラ起動させて撮った写真を背景にするように改造する。
この疑似コードは、エラー処理やプレビューの再表示などが考慮されていません。だからか?ちょっと追いかけるのも大変なので、ITproの記事を見てみる。こちらの記事もソースはダウンロード形式でソースの細かい説明はないので、まずはダウンロードして動かしてみる。これは特に問題なさそう。よし組み込んでみよう。
ソースを見てみると組み込みは割とそのままでイケそう。小遣い帳の登録内容と写真を紐付けないといけないので、IntentにputExtraで画像IDを渡して、その画像IDをファイル名にするという変更くらい。カメラどうのより、sqliteのカラム追加のが大変だったな。。あと、カメラ部分じゃないとこでの細かいエラー処理というか分岐というか。カメラに関してはほとんどそのままなのでコードの記載はしない。
で、色々大変ではあったがカメラに関係ない部分ので、割愛して組み込み完了、登録はできた!ただ、3,4枚登録すると、閲覧ページでリスト表示するとOutOfMemoryで落ちてしまう。うまい回避策はと調べていたが、見つからない。仕方ないので、写真保存時にThumbnailUtilsを使って、List表示用の小さいサイズのサムネイルも保存した。とりあえずは、OutOfMemoryもおさまった。でも、これはMemory制御てOutしないように処理をいれたわけではなくいので、たくさん写真撮ったらOutOfMemoryにもなるだろう^^;
そのあとも色々と大変だった。写真がボケるので長押しだとオートフォーカスにと思って実装したのだが、takePictureとautofocusが同時に動いて強制終了してしまったりとか。これもカメラがって話よりは、己れの技術が足りないためかもしれない。まぁ、そんなこんなで一応小遣い帳アプリに写真登録機能は追加できました。ってことにしておく。
まぁ写真では見にくくてわかりにくいけど、写真保存機能を追加した小遣い帳アプリはこんな感じ。
とりあえず、カメラ機能は難しい。何度強制終了を繰り返したことか。。
android.hardwareは一通りしっかり見といた方が良さそうだ。