iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android项目中如何实现自定义相机预览界面
  • 601
分享到

Android项目中如何实现自定义相机预览界面

androidroi目中 2023-05-31 13:05:05 601人浏览 泡泡鱼
摘要

Android项目中如何实现自定义相机预览界面?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。官方文档:public static void setCameraD

Android项目中如何实现自定义相机预览界面?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

官方文档:

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())) {   parameters.setPictureSize(size.width, size.height);   }   Log.d(TAG, "best size: width=" + size.width + ";height=" + size.height);   break;  }  wrapCameraSizes.add(wrapCameraSize);  }  Log.d(TAG, "wrapCameraSizes.size()=" + wrapCameraSizes.size());  Size resultSize = null;  if (typePreview.equals(entry.getKey())) {  resultSize = parameters.getPreviewSize();  } else if (typePicture.equals(entry.getKey())) {  resultSize = parameters.getPictureSize();  }  if (resultSize == null || (resultSize.width != width && resultSize.height != height)) {  //找到相机Preview Size 和 Picture Size中最适合的大小  if(wrapCameraSizes.isEmpty()) continue;  WrapCameraSize minCameraSize = Collections.min(wrapCameraSizes);  while (!(minCameraSize.getWidth() >= width && minCameraSize.getHeight() >= height)) {   wrapCameraSizes.remove(minCameraSize);   if(wrapCameraSizes.isEmpty()) break;   minCameraSize = null;   minCameraSize = Collections.min(wrapCameraSizes);  }  Log.d(TAG, "best min size: width=" + minCameraSize.getWidth() + ";height=" + minCameraSize.getHeight());  if (typePreview.equals(entry.getKey())) {   parameters.setPreviewSize(minCameraSize.getWidth(), minCameraSize.getHeight());  } else if (typePicture.equals(entry.getKey())) {   parameters.setPictureSize(minCameraSize.getWidth(), minCameraSize.getHeight());  }  }  iterator.remove(); } }

--结束END--

本文标题: Android项目中如何实现自定义相机预览界面

本文链接: https://www.lsjlt.com/news/225768.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android项目中如何实现自定义相机预览界面
    Android项目中如何实现自定义相机预览界面?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。官方文档:public static void setCameraD...
    99+
    2023-05-31
    android roi 目中
  • Android自定义相机、预览区域裁剪
    本文实例为大家分享了Android自定义相机,预览区域裁剪的具体代码,供大家参考,具体内容如下 写法一: 预览区域裁剪,方法调用: //按照比例进行裁剪头像区域 Bitmap   ...
    99+
    2024-04-02
  • Android如何自定义手机界面状态栏
    Android如何自定义手机界面状态栏,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言我们知道IOS上的应用,状态栏的颜色总能与应用标题栏颜色保持一致,用户体验很不错,那安卓...
    99+
    2023-06-19
  • 如何在Android项目中自定义title
    这篇文章给大家介绍如何在Android项目中自定义title,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先编写title的布局文件,title.xml:<xml version="1.0&...
    99+
    2023-05-31
    android roi title
  • Android ListView自定义Adapter实现仿QQ界面
    PS:listview中有一些简单使用的适配器,如:SimpleAdapter:构造方法SimpleAdapter(Context context,List<Map<String,?>> data,reStr...
    99+
    2023-05-30
    listview adapter
  • Java 项目中如何实现自定义ArrayList
    本篇文章为大家展示了Java 项目中如何实现自定义ArrayList,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java 中模仿源码自定义ArrayList最近看了下ArrayList的源码,抽空...
    99+
    2023-05-31
    java 自定义 arraylist
  • Android自定义View实现相机对焦框
    前言 在相机APP中,手动对焦时都会出现一个对焦框,告诉用户相机正在对焦。那么这种对焦框是怎么实现的呢?最近项目中有几个需求,实现手动对焦,自动对焦和对焦框。总体来说不是很复杂,在这...
    99+
    2024-04-02
  • 如何在Android项目中自定义view函数
    如何在Android项目中自定义view函数 ?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先 往Canvas上面draw需要一个Paint。 Paint p ...
    99+
    2023-05-31
    android view roi
  • 在Spring Boot项目中如何实现自定义PropertySourceLoader
    今天就跟大家聊聊有关在Spring Boot项目中如何实现自定义PropertySourceLoader,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。SpringBoot 的配置文件...
    99+
    2023-05-31
    propertysourceloader springboot ce
  • 在spring-boot项目中如何实现自定义filter
    在spring-boot项目中如何实现自定义filter?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。传统的javaEE增加Filter是在web.xml中配置...
    99+
    2023-05-31
    springboot 自定义 filter
  • Springboot项目中如何实现异常处理自定义
    这期内容当中小编将会给大家带来有关Springboot项目中如何实现异常处理自定义,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。背景Springboot 默认把异常的处理集中到一个ModelAndView...
    99+
    2023-05-31
    springboot 异常处理 目中
  • 如何在Android项目中自定义侧滑菜单栏
    本篇文章给大家分享的是有关如何在Android项目中自定义侧滑菜单栏,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。自定义侧滑菜单的简单实现不少APP中都有这种侧滑菜单,例如QQ...
    99+
    2023-05-31
    android roi 目中
  • Android如何实现自定义View中attrs.xml
    这篇文章主要为大家展示了“Android如何实现自定义View中attrs.xml”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android如何实现自定义View中attrs.xml”这篇文章...
    99+
    2023-05-30
    android view attrs.xml
  • Android开发中项目实现一个自定义Tab选项卡功能
    Android开发中项目实现一个自定义Tab选项卡功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体如下:import android.app.TabActivity;...
    99+
    2023-05-31
    android tab roi
  • 如何在Android项目中创建一个自定义控件
    本篇文章为大家展示了如何在Android项目中创建一个自定义控件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。仿iPhone 的风格,在界面的顶部放置一个标题栏。<&#63;xml v...
    99+
    2023-05-31
    android roi 目中
  • Java项目中如何自定义抽象类
    今天就跟大家聊聊有关Java项目中如何自定义抽象类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描...
    99+
    2023-05-31
    java 抽象类 ava
  • Android项目中怎么实现一个可拖拽界面
    本篇文章为大家展示了Android项目中怎么实现一个可拖拽界面,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。以自定义ImageView为例:public class FloatingImageVie...
    99+
    2023-05-31
    android roi 目中
  • 如何在java 8项目中自定义collector
    本篇文章给大家分享的是有关如何在java 8项目中自定义collector,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。需求:将 一个容器List<Bean> 按照...
    99+
    2023-05-31
    java8 collector ava
  • Android Compose自定义TextField如何实现自定义的输入框
    这篇文章主要介绍Android Compose自定义TextField如何实现自定义的输入框,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!简单自定义BasicTextField示例代码 var&n...
    99+
    2023-06-29
  • 如何在Android应用中实现自定义View
    本篇文章为大家展示了如何在Android应用中实现自定义View,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Android自定义view的种类自定义view大概可以分为四个大类,主要是通过实现方式...
    99+
    2023-05-31
    android view roi
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作