Androidには、Camcorder(Video camera)とCameraアプリがあるが、
肝心なところが、以下のファイル名からもわかるように、スタブでフェイクになっている為、
実際のカメラの映像を入出力する場合には、この代わりのものを用意しなければならない。
frameworks/base/camera/libcameraservice/CameraHardwareStub.cpp
frameworks/base/camera/libcameraservice/FakeCamera.cpp
カーネルはLinuxなので、ビデオインタフェースは、Video for Linuxを使えばよいのだが、
ちょうどいいところに、以下にてAndroidphan氏がV4L2に対応したパッチを示してくれたので、
ありがたく試させて頂いた。
http://groups.google.co.jp/group/android-porting/browse_thread/thread/f6b9c22ee45a68c4/
そのままではビルドが通らなかったが、libjpegが参照できるように修正するだけで、簡単に動いてしまいました。
ビデオの入出力と、カメラで写真を撮ることも出来てしまい、おかげで手間を省くことが出来ました。
Thank you Androidphan!
注意点は、
1. videoデバイスのpermissionを変更する。(init.rcで行えばよい)
chmod 666 /dev/video0
2. SD cardのdos partition空き容量がless than 4Gbyteであること。
容量の大きなSD cardだと、AuthorDriverとMediaRecorderのmax-filesizeでエラーになるので、
こちらを修正するか、手っ取り早くSD cardの空き容量を減らすかしなければならない。
3. Androidphan氏のパッチでは、640x480の解像度になっているが、352x288にする必要があった。
hard cordingされているところがあるようなので、他にも手を入れなければならないかもしれない。
TODO
ビデオの録画で問題が発生、オーディオの録音で問題が出ているようだが、そういえば、マイクは試したことがなかった、、
肝心なところが、以下のファイル名からもわかるように、スタブでフェイクになっている為、
実際のカメラの映像を入出力する場合には、この代わりのものを用意しなければならない。
frameworks/base/camera/libcameraservice/CameraHardwareStub.cpp
frameworks/base/camera/libcameraservice/FakeCamera.cpp
カーネルはLinuxなので、ビデオインタフェースは、Video for Linuxを使えばよいのだが、
ちょうどいいところに、以下にてAndroidphan氏がV4L2に対応したパッチを示してくれたので、
ありがたく試させて頂いた。
http://groups.google.co.jp/group/android-porting/browse_thread/thread/f6b9c22ee45a68c4/
そのままではビルドが通らなかったが、libjpegが参照できるように修正するだけで、簡単に動いてしまいました。
ビデオの入出力と、カメラで写真を撮ることも出来てしまい、おかげで手間を省くことが出来ました。
Thank you Androidphan!
注意点は、
1. videoデバイスのpermissionを変更する。(init.rcで行えばよい)
chmod 666 /dev/video0
2. SD cardのdos partition空き容量がless than 4Gbyteであること。
容量の大きなSD cardだと、AuthorDriverとMediaRecorderのmax-filesizeでエラーになるので、
こちらを修正するか、手っ取り早くSD cardの空き容量を減らすかしなければならない。
3. Androidphan氏のパッチでは、640x480の解像度になっているが、352x288にする必要があった。
hard cordingされているところがあるようなので、他にも手を入れなければならないかもしれない。
TODO
ビデオの録画で問題が発生、オーディオの録音で問題が出ているようだが、そういえば、マイクは試したことがなかった、、