没有合适的资源?快使用搜索试试~ 我知道了~
首页Android中关于自定义相机预览界面拉伸问题
Android中关于自定义相机预览界面拉伸问题
17 下载量 89 浏览量
更新于2023-05-12
收藏 49KB PDF 举报
主要为大家详细介绍了Android中关于自定义相机预览界面拉伸问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
资源详情
资源推荐
Android中关于自定义相机预览界面拉伸问题中关于自定义相机预览界面拉伸问题
主要为大家详细介绍了Android中关于自定义相机预览界面拉伸问题,具有一定的参考价值,感兴趣的小伙伴们
可以参考一下
关于自定义相机预览界面拉伸问题
1、导致主要变形的原因是Camera预览界面旋转的角度和摄像头挂载的角度不同导致的
2、我们的Activity设置的方向是竖屏,这是手机的自然方向 所以宽比高短
3、角度:所谓屏幕和摄像头的角度,指的是相对于自然方向旋转过的角度,根据旋转角度即可获知当前的方向
4、假如说:手机是竖屏的情况下, 自然角度为0,但是Camera逆时针旋转90度,那咱们设置顺时针旋转90度,就正常 。手
机是横屏的情况下Camera返回为0度 ,如果设置顺时针旋转90度,就回旋转
怎么设置预览界面与实景保持一致的方法,官方给出的文档:
public static void setCameraDisplayOrientation(Activity activity,int cameraIo, Camera camera){
Camera.CameraInfo info=new Camera.CameraInfo();
Camera.getCameraInfo(cameraIo,info);
int rotation=activity.getWindowManager().getDefaultDisplay().getRotation();
int degress=0;
switch(rotation){
case Surface.ROTATION_0:
degress=0;
break;
case Surface.ROTATION_90:
degress=90;
break;
case Surface.ROTATION_180:
degress=180;
break;
case Surface.ROTATION_270:
degress=270;
break;
}
int result;
if(info.facing=Camera.CameraInfo.CAMERA_FACING_FRONT){
result = (info.orientation + degrees) % 360;
> 就是摄像头需要顺时针转过多少度才能恢复自然方向
result = (360 - result) % 360;
} else { // back-facing
result = (info.orientation - degrees + 360) % 360;
}
camera.setDisplayOrientation(result);
switch (result) {
case 0:
case 180:
setCameraSize(camera.getParameters(), getScreenWidth(), getScreenHeight());
break;
case 90:
case 270:
setCameraSize(camera.getParameters(), getScreenHeight(), getScreenWidth());
break;
}
}
public static void setCameraSize(Camera.Parameters parameters, int width, int height) {
Map<String, List<Size>> allSizes = new HashMap<>();
String typePreview = "typePreview";
String typePicture = "typePicture";
allSizes.put(typePreview, parameters.getSupportedPreviewSizes());
allSizes.put(typePicture, parameters.getSupportedPictureSizes());
Iterator iterator = allSizes.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, List<Size>> entry = (Map.Entry<String, List<Size>>) iterator.next();
List<Size> sizes = entry.getValue();
if (sizes == null || sizes.isEmpty()) continue;
ArrayList<WrapCameraSize> wrapCameraSizes = new ArrayList<>(sizes.size());
for (Size size : sizes) {
WrapCameraSize wrapCameraSize = new WrapCameraSize();
wrapCameraSize.setWidth(size.width);
wrapCameraSize.setHeight(size.height);
wrapCameraSize.setD(Math.abs((size.width - width)) + Math.abs((size.height - height)));
if (size.width == width && size.height == height) {
if (typePreview.equals(entry.getKey())) {
parameters.setPreviewSize(size.width, size.height);
} else if (typePicture.equals(entry.getKey())) {
weixin_38654589
- 粉丝: 2
- 资源: 942
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功