androidカメラコンポーネントのstartPreviewについて

最近androidでカメラコンポーネントを使ってアプリ開発していたときにハマった事.

 

androidの2系と4系で動き(使い方?)がまあまあ違うっぽい.

 

4系ではカメラオブジェクトに対して setPreviewDisplay せずに  startPreview をかけると

 

 

android::status_t android::QCameraHardwareInterface::startPreview():  received startPreview, but preview window = null 

 

のエラーが出るカンジがする.

とりあえずここ見たカンジ,displayがセットされてないとエラーになるっぽかったので,setDisplayしてからstartPreviewしたらエラーは消えた.

https://android.googlesource.com/platform/hardware/qcom/camera/+/0096374269b64612d83c8d91f296aad8c7875ed1/QCameraHWI.cpp

 

2系だと setPreviewDisplay しなくても動いてたんだけどなぁ..

 

で,setPreviewDisplay すると,引き数に渡したsurfaceholderのcanvasがロックされて

そこをいじりにいくと落ちるので,ダミーのsurfaceholderをかませてそこから

描画用のsurfaceholderのcanvasにPreviewを描画してみるっていうのを明日やってみる予定.

 

うまく行ったらまたblogに書こう.