最近在研究android的摄像头编程,准备编写一个辅助用单摄像头手机进行立体拍照的应用。
研究中遇到并解决了一些问题,在这里分享一下。
1. 在APIDemo里面,有一个CameraPreview 的示例程序,演示了如何打开摄像头。
2. 如果你直接把这个view的代码拷贝到自己建的工程, 会发现摄像头的显示很怪异,反的或者变形,必须在 AndroidManifest.xml 中 <activity里面加上 android:screenOrientation="landscape" 摄像头画面显示才正确。
3. 开启摄像头最好隐藏系统状态栏如下代码就可以
final Window win = getWindow();
win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
昨天的程序,拍照后取得的图片同预览区域一直不一致,preview时预览图和takepicture后取得的图对不上,调查好久都没头绪。
后来调试时发现 surfaceChanged(SurfaceHolder holder, int format, int w, int h) 返回的 w 和 h值不对
实机是800*600, 这里返回的是什么 320*533
在网上进行调查后,发现是配置文件中 <supports-screens android:anyDensity/> 的设置问题,原来设置的是false
改成 <supports-screens android:anyDensity="true"/> 就一切正常了