内蔵カメラがずっこけることが発覚ガ━━(;゚Д゚)━━ン!!
“Error 100″って何やねん(●`ε´●)
と言ってもいつもいつもずっこける訳ではありません。
大抵の端末ではカメラの物理的な向きは端末を横向きにした時と一致していますので、縦画面の時にそのまま表示すると見た目がおかしくなってしまいます。そのためCamera.Parameters#setDisplayOrientationでプレビュー画面を回転できるようになっています。昔の機種は色々不具合が有りましたが少なくともNexus7(2012)は無事動いてます。
問題が起こるのは、Camera.Parameters#setRotationでした。
このメソッドはCamera.PictureCallbackでJPEGイメージを取得する時の回転方向を指定するのですが…
Nexus7(2012)だと0以外の値を渡して呼び出すと端末の向きにかかわらず冒頭の通り「Error 100」とおっしゃって働くことを放棄します。ついでにカメラも働くのをやめてしまいます。
昔からそうだったんかなぁ?インカメラしか無い機種だからあまりカメラのテストには使ってなかったから気づかんかっただけかも。ちなみにAndroid4.4.4です。
最初はSurfaceTextureをプレビュー表示用にセットしているからかもって思ってSurfaceHolderを渡してもやっぱりダメでした(´・ω・`)
Android5.xへのアップデートが提供されているとは言え今更Nexus7(2012)をメインに使ってる人はもうあまり居ない気もするし、そもそも静止画をCamera.PictureCallbackで取得してないからまぁいっか^^
でも他にも同じ現象が出る機種があるかもしれないから、このメソッド呼び出すのは止めるようにしよう。
お疲れ様でした。