Motorola Milestone - カメラサンプルアプリ

AndroidJavaなどプログラミングした事は無いのでとりあえずサンプルを探してきて
それを動かす事をしばらくやってみようと思っています。

手始めにカメラアプリのサンプルがこのサイトにあり、
それなりに作りこまれているように見えたので動かしてみようとしました。

サイトからサンプルアプリをダウンロードして、プロジェクトにインポートすれば
動かせるみたいなので、ダウンロードしたプログラムをワークスペースに入れて
「File」→「New」→「Project...」から「Select Wizard」画面が表示されるので
ここで、「Android」→「Android Project」を選択し、「Next>」ボタンを押す。
ここで「Create Project from existing sample」を選択して、「Browse...」ボタンで
ダウンロードしたサンプルを指定すればProjectが作成されるはずです。

しかし、うまくいきません。
どうして??
と思い検索してみると、ありました。
ワークスペースに置いたコードはうまくインポート出来ない
ようです。
わざわざ気を利かしてワークスペースに置いたのが
仇になりました。

ここで違う場所に展開しなおして選択してやればうまくいきました。
これを実行すると、Androidエミュレーターが自動で起動してサンプルアプリが動きました。
ただ、エミュレーターではカメラをエミュレートできないためか、格子模様が動く画面が
表示されます。

これを、実機をUSBで接続してからもう一度サンプルアプリを実行すると
今度は実機で動きました・・・が、
カメラのプレビュー画面は表示されず、真っ黒画面のままです。
うーん、どうしてなのかわかりません。検索してもそのような情報は見つかりませんでした。
Milestoneだけの問題のように見えます。

色々と試行錯誤した結果、surfaeceのサイズ設定しているところに問題があるようです。
surfaceChanged()に、幅と高さを渡して設定する処理があるのですが、エミュレーターでは
実際のサイズを取得するAPIの実行で失敗して結局サイズ設定をしないのですが、実機では
ちゃんと実装されているらしくその実行が成功し、サイズを設定しにいきます。
で、そのサイズがおかしいらしく、黒画面になります。

サイズを確認せずに、設定要求されるサイズをそのまま設定すればとりあえず表示は出来るように
なりました。しかし、この部分は修正した内容をエミュレーターで実行すると縦横比が
おかしくなるようです。(表示される格子模様が長細くなります。)

Milestoneおかしいです・・・