アンドロイドのカメラアプリを作成するにあたっての雑感。

アンドロイドのアプリで

「サイズを指定すると落ちる」
「カメラのプレビューがなぜか歪んでいる」
「プレビューと撮影した写真で画角が異なる」

という状態がおこります。(機種によって。)

この原因を考えました。

下記より仮定及び、推測です。

まず、「サイズを指定すると落ちる」という問題です。

Android: まとめ 各端末のカメラのサポート画像サイズ

でサポートされているサイズが記載されていますが、見て分かるように機種によってサイズがばらばらです。

作成側としては画面一杯のサイズで取得をしたい時に

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height){
 Camera.Parameters parameters = myCamera.getParameters();
 parameters.setPreviewSize(width, height);
 myCamera.setParameters(parameters);
 myCamera.startPreview();
}

と記載をします。これが画面一杯のサイズでプレビューが表示されます。

しかし、画面のサイズをプレビューでサポートしてない場合に落ちます。

これは、機種の設計ミスと言ってもよいかと思うのですが、いくつかのアンドロイドで起こる事象の為、画面のサイズを指定してはいけません。

画面のサイズは指定しない方が無難かもしれません。

 

次に「カメラのプレビューがなぜか歪んでいる」と言う問題です。

プレビューサイズは指定をした場合に、サイズは表示されるサイズでなく解像度です。

実際には、surfaceviewのサイズで表示されます。

つまり、プレビューサイズを正方形に指定をしていた場合にもsurfaceviewの形が長方形であれば、引き伸ばされた形で表示がされてしまいます。

デフォルトで設定されている、プレビューの比率が画面のサイズと異なる場合には、値を指定しない場合には歪みます。

 

最後に「プレビューと撮影した写真で画角が異なる」と言う問題です。

この問題が一番面倒な問題なのですが、

Android: まとめ 各端末のカメラのサポート画像サイズ

を見てもらうと分かるように、プレビューサイズに対応した画像サイズが存在しない場合があります。(比率的に)

つまり、プレビューサイズに対応した画像サイズが存在しない場合には、自分でbitmapの変換を行ってサイズを変更する必要があります。

上下が切れているのか左右が切れているのかが不明の為、サイズをどうしても変更する比率はあわせられても、厳密にプレビューの画角で撮影はできません。

どうしても、プレビューサイズと合わせたい場合は、縦横比が一致する画像サイズが存在するプレビューサイズを選んで撮影をするか、機種ごとに場合分けをするしかありません。

以上で、カメラを作成するにあたっての不具合です。

 

プレビューで使用できるサイズを取得する

Camera.Parameters.getSupportedPictureSizes();

画像の保存で使用できるサイズを取得する。

Camera.Parameters.getSupportedPreviewSizes();

を利用して場合わけをすれば、割と細かく設定ができますが、特に細かいところまでを考えなくてよい場合には

カメラでプレビューと撮影された写真の構図が異なる問題

を利用して、マージンがあるプレビューで(ない場合もあります)撮影をすれば、

「サイズを指定すると落ちる」
「カメラのプレビューがなぜか歪んでいる」

を回避をする事ができるので、細かい設定は面倒くさいけど、比率などを合わせたい場合には最適かと思います。

プレビューのサイズができるだけ小さい方がメモリ的に有効な気もするので、一度がっつりライブラリ的なので適合できるようにできればと思います。

以上です。

現在フリーランスで仕事をしております。

このブログをはじめて、しばらくして2012年に会社をやめフリーランスとして、アプリ開発を中心にお仕事をさせて頂いております。もし、Androidアプリなどにご興味などあれば、ご相談いただければと思います。こちらからどうぞ。

前後の記事

前の記事:

次の記事:

オススメの記事

コメントの投稿

Dropbox
  • プロフィール

    このブログをはじめて、しばらくして2012年に会社をやめフリーランスとして、アプリ開発を中心にお仕事をさせて頂いております。Androidアプリなどにご興味などあれば、ご相談いただければと思います。大手クライアント様の案件や、国内外での広告賞の受賞などの実績がありますので、ご安心してご連絡ください。

お仕事お請けしています。
GooglePlayでアプリ公開中
アンドロイドのデザイン集
アンドロイドアプリ開発TIPS

おすすめ書籍

ゼロからのAndroidアプリケーション開発入門

☆☆☆★★
分かりにくい部分もあるが、一通りコンポーネントなどを体験できるので、初心者には便利。

AndroidSDK開発のレシピ―104個のレシピで学ぶAndroidアプリ開発の極意

☆☆☆☆☆
サンプル集だが、一冊手元にあると、とても心強い。基本を中心に学べる。

OpenGLで作る Android SDKゲームプログラミング

☆☆☆☆★
OpenGLを2D~勉強できる。写すだけでもとても勉強になった。応用も効く!!

☆☆☆☆★
デザインのカスタマイズが多い。ただ、マニアックすぎる気がする。

☆☆☆☆☆
このカレンダーを苦しみながら作ると、いろいろとわかるようになります。ただし、つらい。

Page top↑