CameraDS
作りかけ
http://wantech.ikuto.com/software/CameraDS.apk
なんかニンテンドーみたいな名前になっちゃったが、DellのStreak向けカメラと言う事でDSと。
(検索したら似た名前が出てきたので変更予定で。)
で、マーケットにあるカメラじゃ何が不満で自作してるのか、どこまで作ったかと言う事について。
まず、ほとんどのカメラアプリはフル画面でプレビューしてるんだけど、
Streakはディスプレイが4:3ではないので、プレビューがそのまま写真と同じにならない。
標準で入ってるカメラアプリはたぶん640×480のプレビューを出してて、出来上がりと同じになってる。
少なくともこの標準カメラのように、タテヨコ比を考えたプレビューを出したい。
じゃあ標準のカメラを使えばいいのかというと、標準のカメラには手ぶれ感知機能がない。
といっても、被写体が動いてたりピントが合ってなかったりはよくあるが、手ぶれの失敗はあまりなく、
あんまり厳しく手ぶれ感知はしなくても良いから、シャッター待ちでイライラさせないで欲しい。
マーケットにあるカメラは、Streakで使ってるとなかなか手ぶれが治まらずイライラする物が多い。
自分で作るカメラアプリの前提として、まず絶対手ぶれ防止は付けるが、
自分で使ってイライラしない程度のゆるい物って言う条件も必要だ。
それでこのCameraDSでは独自で工夫したんだが、シャッターボタンを押したとき、
まずオートフォーカスを発動させ、フォーカス中に極端に動いたときはフォーカスやり直しとし、
極端に動かなかったときはそのままシャッターが発動するようにした。
手ぶれ防止のために少しは待つ事が前提なので、オートフォーカスを待てないほどだと対象外だ。
しかしせっかくフォーカスしてる間に動いてたら、もちろんフォーカスはやり直すべきだし、
やり直すほどじゃないならそのまま取っちゃえっていう発想だ。
よその手ぶれ防止だと、フォーカス時間関係なしに、一定時間の手ぶれ停止を計測してるし、
その一定時間が長すぎてなかなか止まってられないしで困る。
でもStreakのオートフォーカスに費やす時間はちょうど良く、この短い時間だけ停止すればいい事にした。
ただ、数字的にいくら以下を停止と見なすかは決まった基準がなく、
これも手元のStreakでこんなもんだろうと思える数字で調節してやってる。
すなわち、他の機種ではオートフォーカスの時間も加速度センサーの反応も違うだろうから、
この根本的な部分でStreak専用とならざるを得ない。
あ、まず他の機種にはシャッターボタンがないか。
また、この加速度センサーってのは、もしかしたら調子が良いときと悪いときがあるのかも知れないと、
いろんなカメラアプリを触ってて思った。
いや、センサーではなく使ってる人間の調子かも知れないし、そりゃわからないからどっちでも良いが、
そういうときにいちいち手ぶれ防止オフにして使ったり、またオンにしたりって言うのが面倒くさい。
そこで、これも独自で工夫したところだが、シャッター押しっぱなしは手ぶれ防止撮影にし、
シャッターを離した場合は、その時点で手ぶれしてようがフォーカスしてなかろうが、
すぐ撮影できるっていう仕様にした。
すなわち、とりあえずシャッター押しっぱなしで待ってみて、もし待てなくなったらシャッターを離せばいい。
調子の良い時は自動で手ぶれを防止し、調子の悪いときは自動で普通の撮影を行う。
いやもうここまで作っただけで既に、他のどんなカメラより便利になってると自分では思ってるんだが、
たぶん自分以外の人が使うと謎仕様シャッターで意味不明なんだろうな。
その問題のシャッターボタンだが、多くのカメラアプリではシャッターではなくフォーカスボタンとして動作する。
これ、あたしのStreakがカスタムROMから戻せなくなったせいなのか?
純正ROMではカメラアプリでシャッターとして動くんだろうか?
いずれにせよあたしのStreakでは、このボタンを押すとキーコード80番のフォーカスが投げられる。
あたしが使うためのアプリだから、この80番で動作する仕様で作る。
本来はキーコード27番のカメラが正しいと思うし、純正ROMでは正しく動作してるかもしれない。
将来純正ROMに戻せる日が来るかも知れないので、27番にも対応する予定。
また、スクリーンタッチでのシャッターにも対応予定。