同じ問題を抱えた 2 つの異なるコード ベースがあります。
最初のものは、developer.android.com から直接コピーされたコードです: http://developer.android.com/guide/topics/media/camera.html#custom-camera
2 つ目は次のコードです。
http://android-er.blogspot.com.au/2011/10/simple-exercise-of-video-capture-using.html
どちらも通常の背面カメラでは問題なく動作しますが、前面カメラを使用しようとするとすぐにエラーが発生します。
これは、次のデバイスで発生します。
ネクサス S 4.1.2
ギャラクシー ネクサス 4.1.2
Nexus 7 4.2.1 (前面カメラのみ)
2.2 時代の Camera Params のように見えるものも試してみました。Samsung や HTC の一部のデバイスでは必要であると主張する人もいますが、複数の異なる記事で異なる文字列キーが参照されています。
c = Camera.open(frontFacingCameraID); // attempt to get a Camera instance
Camera.Parameters params = c.getParameters();
params.set("cam-mode", 1);
params.set("cam_mode", 1);
params.set("camera-id", 1);
c.setParameters(params);
これらはどれも機能しません。Nexus 7 ではもちろん 0 である正しい前面カメラ ID を検出していることにも注意してください。しかし、結果はすべてのデバイスで同じです。
低品質のプロファイルを使用してみました。ビデオの解像度、エンコーダ、出力形式、ビットレート、フレーム レート、およびビデオ サイズをさまざまな方法で手動で設定しようとしましたが、どれもうまくいきませんでした。
ほとんどのコードで何も問題がないと思わせるのは、通常のカメラが正常に動作することです。私の推測では、Media Recorder をセットアップする prepareVideoRecorder() / prepareMediaRecorder() メソッドと関係があると思います。
おそらく、前面カメラで動作することが知られている Media Recorder の手動エンコード設定ですか?
私が言わなければならないのは、Android Camera と MediaRecorder API は最悪です。iOS と比較すると、少し混乱しています。言うまでもなく、いくつかの恐ろしく見えるパラメータの非互換性の問題や、断片化されたデバイス環境全体での異なる解像度は言うまでもありません。
JB デバイスで動作させることができると仮定すると、これらの問題のほとんどが API 15 ICS で解決されるかどうかを経験から知っている人はいますか?
API 10 Gingerbread のサポートが難しい場合は、サポートしないことを検討します。