前言
本文默认你已经会的Android相机开发,但是苦恼于相机屏幕适配
如果不会相机开发,可以参考以下作者的文章:
Tong ZHAN
Android相机开发(一): 最简单的相机
Android相机开发(二): 给相机加上偏好设置
Android相机开发(三): 实现拍照录像和查看
Android相机开发(四): 旋转与纵横比
Android相机开发(五): 触摸对焦,触摸测光,二指手势缩放
Android相机开发(六): 高效实时处理预览帧数据yanzi1225627
玩转Android Camera开发(一):Surfaceview预览Camera,基础拍照功能完整demo
玩转Android Camera开发(二):使用TextureView和SurfaceTexture预览Camera 基础拍照demo
玩转Android Camera开发(三):国内首发—使用GLSurfaceView预览Camera 基础拍照demo
玩转Android Camera开发(四):预览界面四周暗中间亮,只拍摄矩形区域图片(附完整源码)
玩转Android Camera开发(五):基于Google自带算法实时检测人脸并绘制人脸框(网络首发,附完整demo)
现在出现了越来越多的屏幕,再也不是那个到处充满1920x1080的时代了,所以给身为手机开发者的我们带来了不少麻烦,从而给我们带来了相机屏幕适配这块的问题,大家都知道,在使用相机的时候,如果不对屏幕做适配,那么在预览的时候,界面就会拉伸,这对用户可不是个好体验。
普通解决方案
先说说普通解决方法,我们可以通过camera得到手机摄像头的参数,比如曝光度、照片尺寸、预览尺寸等等的很多信息。所以我们通过以下代码可以得知摄像头到底支持哪些预览分辨率:
// 相机所支持的分辨率
Camera.Parameters parameters = mCamera.getParameters();
List<Camera.Size> supportedPreviewSizes = parameters.getSupportedPreviewSizes();
然后我们还可以得到手机的分辨率是多少
// 手机分辨率
DisplayMetrics dm = context.getResources().getDisplayMetrics();
int w_screen = dm.widthPixels;
int h_screen = dm.heightPixels;
Point screenRelsolution =