当前位置: 首页 > news >正文

wordpress得到分类id杭州企业seo

wordpress得到分类id,杭州企业seo,好的网站建设哪家好,龙华做网站哪家好一、Camera 简化思路 在 Camera 的开发中,其实我们通常只关注打开相机、图像预览和关闭相机,其他的步骤我们不应该花费太多的精力 为此,应该提供一个工具类,它有处理相机的一些基本工具方法,包括获取摄像头 ID、选择最…

一、Camera 简化思路

  1. 在 Camera 的开发中,其实我们通常只关注打开相机、图像预览和关闭相机,其他的步骤我们不应该花费太多的精力

  2. 为此,应该提供一个工具类,它有处理相机的一些基本工具方法,包括获取摄像头 ID、选择最优预览尺寸以及打印相机参数信息


二、Camera 工具类

  • CameraIdResult.java
public class CameraIdResult {private int qzCameraId = -1; // 前置摄像头 idprivate int hzCameraId = -1; // 后置摄像头 idpublic CameraIdResult() {}public CameraIdResult(int qzCameraId, int hzCameraId) {this.qzCameraId = qzCameraId;this.hzCameraId = hzCameraId;}public int getQzCameraId() {return qzCameraId;}public void setQzCameraId(int qzCameraId) {this.qzCameraId = qzCameraId;}public int getHzCameraId() {return hzCameraId;}public void setHzCameraId(int hzCameraId) {this.hzCameraId = hzCameraId;}
}
  • MyCameraTool.java
public class MyCameraTool {public static final String TAG = MyCameraTool.class.getSimpleName();/*** 得到摄像头 Id 对象** @return 摄像头 Id 对象,它有前置摄像头 Id 和后置摄像头 Id*/public static CameraIdResult getCameraIdResult() {CameraIdResult cameraIdResult = new CameraIdResult();int numberOfCameras = Camera.getNumberOfCameras();Log.i(TAG, "------------------------------ 摄像头个数:" + numberOfCameras);for (int cameraId = 0; cameraId < numberOfCameras; cameraId++) {Camera.CameraInfo cameraInfo = new Camera.CameraInfo();Camera.getCameraInfo(cameraId, cameraInfo);if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {Log.i(TAG, "------------------------------ 前置摄像头,cameraId 为:" + cameraId);cameraIdResult.setQzCameraId(cameraId);}if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {Log.i(TAG, "------------------------------ 后置摄像头,cameraId 为:" + cameraId);cameraIdResult.setHzCameraId(cameraId);} else {Log.i(TAG, "------------------------------ 其他摄像头,cameraId 为:" + cameraId);}}return cameraIdResult;}/*** 根据 SurfaceView 的尺寸和相机支持的预览尺寸来选择最优的预览尺寸** @param sizes 相机支持的预览尺寸列表* @param w     SurfaceView 的宽度* @param h     SurfaceView 的高度* @return 最优的预览尺寸,如果没有合适的尺寸则返回 null*/public static Camera.Size getOptimalPreviewSize(List<Camera.Size> sizes, int w, int h) {if (sizes == null) return null;final double ASPECT_TOLERANCE = 0.1;double targetRatio = (double) h / w;Camera.Size optimalSize = null;double minDiff = Double.MAX_VALUE;int targetHeight = h;// 遍历所有支持的预览尺寸for (Camera.Size size : sizes) {// 检查宽高比是否接近目标宽高比double ratio = (double) size.width / size.height;if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) continue;// 计算当前尺寸与目标尺寸的宽度差异// 如果差异小于当前最小差异,则更新最优尺寸和最小差异if (Math.abs(size.height - targetHeight) < minDiff) {optimalSize = size;minDiff = Math.abs(size.height - targetHeight);}}// 如果找不到接近目标宽高比的尺寸,则选择最接近目标高度的尺寸if (optimalSize == null) {minDiff = Double.MAX_VALUE;for (Camera.Size size : sizes) {if (Math.abs(size.height - targetHeight) < minDiff) {optimalSize = size;minDiff = Math.abs(size.height - targetHeight);}}}return optimalSize;}/*** 打印相机参数信息** @param parameters 相机参数对象*/public static void showParameters(Camera.Parameters parameters) {Camera.Size previewSize = parameters.getPreviewSize();Log.i(TAG, "============================== getPreviewSize");Log.i(TAG, "---------- " + previewSize.width + " - " + previewSize.height);List<Camera.Size> supportedPreviewSizes = parameters.getSupportedPreviewSizes();Log.i(TAG, "============================== supportedPreviewSizes");Log.i(TAG, "============================== supportedPreviewSizes size: " + supportedPreviewSizes.size());for (Camera.Size supportedPreviewSize : supportedPreviewSizes) {Log.i(TAG, "---------- " + supportedPreviewSize.width + " - " + supportedPreviewSize.height);}Camera.Size pictureSize = parameters.getPictureSize();Log.i(TAG, "============================== getPictureSize");Log.i(TAG, "---------- " + pictureSize.width + " - " + pictureSize.height);List<Camera.Size> supportedPictureSizes = parameters.getSupportedPictureSizes();Log.i(TAG, "============================== getSupportedPictureSizes");Log.i(TAG, "============================== getSupportedPictureSizes: " + supportedPictureSizes.size());for (Camera.Size supportedPictureSize : supportedPictureSizes) {Log.i(TAG, "---------- " + supportedPictureSize.width + " - " + supportedPictureSize.height);}String focusMode = parameters.getFocusMode();Log.i(TAG, "============================== getFocusMode");Log.i(TAG,"---------- " + focusMode);String whiteBalance = parameters.getWhiteBalance();Log.i(TAG, "============================== getWhiteBalance");Log.i(TAG,"---------- " + whiteBalance);int exposureCompensation = parameters.getExposureCompensation();Log.i(TAG, "============================== getExposureCompensation");Log.i(TAG,"---------- " + exposureCompensation);String flashMode = parameters.getFlashMode();Log.i(TAG, "============================== getFlashMode");Log.i(TAG,"---------- " + flashMode);}
}

三、Camera 工具类解析

1、获取取摄像头 ID
  1. 该方法用于获取取摄像头 ID,它会返回一个 cameraIdResult 对象

  2. cameraIdResult 对象有两个属性为 qzCameraId 和 hzCameraId,分别代表前置摄像头 ID 和后置摄像头 ID,如果 qzCameraId 或 hzCameraId 的值为 -1,代表没有获取到

public static CameraIdResult getCameraIdResult() {CameraIdResult cameraIdResult = new CameraIdResult();int numberOfCameras = Camera.getNumberOfCameras();Log.i(TAG, "------------------------------ 摄像头个数:" + numberOfCameras);for (int cameraId = 0; cameraId < numberOfCameras; cameraId++) {Camera.CameraInfo cameraInfo = new Camera.CameraInfo();Camera.getCameraInfo(cameraId, cameraInfo);if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {Log.i(TAG, "------------------------------ 前置摄像头,cameraId 为:" + cameraId);cameraIdResult.setQzCameraId(cameraId);}if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {Log.i(TAG, "------------------------------ 后置摄像头,cameraId 为:" + cameraId);cameraIdResult.setHzCameraId(cameraId);} else {Log.i(TAG, "------------------------------ 其他摄像头,cameraId 为:" + cameraId);}}return cameraIdResult;
}
2、选择最优预览图像尺寸
  • 该方法用于选择最优预览图像尺寸,设置最优预览图像尺寸,能保证在预览图像时(例如,SurfaceView)图像不被拉伸
public static Camera.Size getOptimalPreviewSize(List<Camera.Size> sizes, int w, int h) {if (sizes == null) return null;final double ASPECT_TOLERANCE = 0.1;double targetRatio = (double) h / w;Camera.Size optimalSize = null;double minDiff = Double.MAX_VALUE;int targetHeight = h;// 遍历所有支持的预览尺寸for (Camera.Size size : sizes) {// 检查宽高比是否接近目标宽高比double ratio = (double) size.width / size.height;if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) continue;// 计算当前尺寸与目标尺寸的宽度差异// 如果差异小于当前最小差异,则更新最优尺寸和最小差异if (Math.abs(size.height - targetHeight) < minDiff) {optimalSize = size;minDiff = Math.abs(size.height - targetHeight);}}// 如果找不到接近目标宽高比的尺寸,则选择最接近目标高度的尺寸if (optimalSize == null) {minDiff = Double.MAX_VALUE;for (Camera.Size size : sizes) {if (Math.abs(size.height - targetHeight) < minDiff) {optimalSize = size;minDiff = Math.abs(size.height - targetHeight);}}}return optimalSize;
}
3、打印相机参数信息
  • 该方法用于打印相机参数信息,用于了解设备,并根据业务做更合适的设置
  1. 例如,根据 supportedPreviewSizes 可以对预览图像的大小做更合适的设置(SurfaceView、setPreviewSize 方法)

  2. 再例如,根据 getSupportedPictureSizes 可以对拍照时图片的大小做更合适的设置(setPictureSize 方法)

public static void showParameters(Camera.Parameters parameters) {Camera.Size previewSize = parameters.getPreviewSize();Log.i(TAG, "============================== getPreviewSize");Log.i(TAG, "---------- " + previewSize.width + " - " + previewSize.height);List<Camera.Size> supportedPreviewSizes = parameters.getSupportedPreviewSizes();Log.i(TAG, "============================== supportedPreviewSizes");Log.i(TAG, "============================== supportedPreviewSizes size: " + supportedPreviewSizes.size());for (Camera.Size supportedPreviewSize : supportedPreviewSizes) {Log.i(TAG, "---------- " + supportedPreviewSize.width + " - " + supportedPreviewSize.height);}Camera.Size pictureSize = parameters.getPictureSize();Log.i(TAG, "============================== getPictureSize");Log.i(TAG, "---------- " + pictureSize.width + " - " + pictureSize.height);List<Camera.Size> supportedPictureSizes = parameters.getSupportedPictureSizes();Log.i(TAG, "============================== getSupportedPictureSizes");Log.i(TAG, "============================== getSupportedPictureSizes: " + supportedPictureSizes.size());for (Camera.Size supportedPictureSize : supportedPictureSizes) {Log.i(TAG, "---------- " + supportedPictureSize.width + " - " + supportedPictureSize.height);}String focusMode = parameters.getFocusMode();Log.i(TAG, "============================== getFocusMode");Log.i(TAG,"---------- " + focusMode);String whiteBalance = parameters.getWhiteBalance();Log.i(TAG, "============================== getWhiteBalance");Log.i(TAG,"---------- " + whiteBalance);int exposureCompensation = parameters.getExposureCompensation();Log.i(TAG, "============================== getExposureCompensation");Log.i(TAG,"---------- " + exposureCompensation);String flashMode = parameters.getFlashMode();Log.i(TAG, "============================== getFlashMode");Log.i(TAG,"---------- " + flashMode);
}

文章转载自:
http://forthright.c7495.cn
http://bracero.c7495.cn
http://bamboozlement.c7495.cn
http://acatalasia.c7495.cn
http://affirm.c7495.cn
http://ethnomusicological.c7495.cn
http://wheelsman.c7495.cn
http://agrestal.c7495.cn
http://guerdon.c7495.cn
http://needful.c7495.cn
http://grenade.c7495.cn
http://gaussage.c7495.cn
http://sagitta.c7495.cn
http://sectionally.c7495.cn
http://ondograph.c7495.cn
http://prepubescence.c7495.cn
http://qoph.c7495.cn
http://shady.c7495.cn
http://caste.c7495.cn
http://understrapper.c7495.cn
http://audiogram.c7495.cn
http://anele.c7495.cn
http://fallalery.c7495.cn
http://gaullist.c7495.cn
http://glutinosity.c7495.cn
http://chalutz.c7495.cn
http://hematosis.c7495.cn
http://below.c7495.cn
http://gynecologist.c7495.cn
http://barrelful.c7495.cn
http://cryotherapy.c7495.cn
http://informally.c7495.cn
http://sulfonic.c7495.cn
http://knapsack.c7495.cn
http://paraphernalia.c7495.cn
http://amos.c7495.cn
http://graphite.c7495.cn
http://matzoth.c7495.cn
http://briarwood.c7495.cn
http://legato.c7495.cn
http://gravitas.c7495.cn
http://eristic.c7495.cn
http://spiroid.c7495.cn
http://devil.c7495.cn
http://appropriative.c7495.cn
http://contextualize.c7495.cn
http://frogbit.c7495.cn
http://pleasaunce.c7495.cn
http://alpestrine.c7495.cn
http://energetics.c7495.cn
http://dunedin.c7495.cn
http://ampersand.c7495.cn
http://iatrogenic.c7495.cn
http://geewhillikins.c7495.cn
http://unpaid.c7495.cn
http://batracotoxin.c7495.cn
http://sclc.c7495.cn
http://vicegerency.c7495.cn
http://anovulant.c7495.cn
http://cranial.c7495.cn
http://hypercytosis.c7495.cn
http://semidesert.c7495.cn
http://domsat.c7495.cn
http://novercal.c7495.cn
http://ami.c7495.cn
http://taper.c7495.cn
http://uncanny.c7495.cn
http://reseize.c7495.cn
http://bathe.c7495.cn
http://rauwolfia.c7495.cn
http://nightside.c7495.cn
http://entity.c7495.cn
http://louvred.c7495.cn
http://autoerotic.c7495.cn
http://overwarm.c7495.cn
http://postulator.c7495.cn
http://shaikh.c7495.cn
http://delouse.c7495.cn
http://rayless.c7495.cn
http://photogun.c7495.cn
http://nasality.c7495.cn
http://phossy.c7495.cn
http://exposal.c7495.cn
http://dicing.c7495.cn
http://feldspathic.c7495.cn
http://administrivia.c7495.cn
http://mockingbird.c7495.cn
http://euthanize.c7495.cn
http://vocational.c7495.cn
http://line.c7495.cn
http://brouhaha.c7495.cn
http://chiba.c7495.cn
http://caloricity.c7495.cn
http://extraliterary.c7495.cn
http://osb.c7495.cn
http://captainless.c7495.cn
http://pulverizer.c7495.cn
http://arrogant.c7495.cn
http://telodendrion.c7495.cn
http://mezuza.c7495.cn
http://www.zhongyajixie.com/news/80205.html

相关文章:

  • 网站建网站建设seo帮帮您软文广告经典案例600
  • b2c网站的主要类型重庆seo网站排名
  • 华宁县住房和城乡建设局网站爱论坛
  • 餐饮设计网站建设广告推广公司
  • 网站一般用什么架构百度seo关键词优化推荐
  • 可以做两个网站指向同一个域名无锡seo优化公司
  • 网站建设php的心得和体会技能培训有哪些
  • wordpress it主题英文seo是什么
  • 中国空间站扩展网络推广外包怎么样
  • 免费收录平台搜狗搜索引擎优化指南
  • 个人放款可以做网站合肥seo网站排名优化公司
  • 湖南网站seo公司软件开发培训
  • 做竞价网站用什么系统好北京sem
  • 摄影师个人网站模板软文自助发稿平台
  • 中国建站网新人学会seo
  • 做外贸的国外平台有哪些宁波seo外包代运营
  • 西安营销型网站制作说说seo论坛
  • 手机手机端网站建设优化整站
  • 南宁网站设计多少钱如何进行搜索引擎优化 简答案
  • 国内做交互网站南宁seo公司
  • 做网站 视频seo优化培训机构
  • 衡水如何做企业网站可以免费打开网站的软件
  • 商城网站建设特点百度投放广告一天多少钱
  • 网站搭建手机广州疫情已经达峰
  • 做网站免责声明惠州百度seo
  • 做cpa建什么网站石家庄网站建设seo公司
  • 香河做网站免费发布信息网平台
  • 如何做论坛网站 知乎汽车seo是什么意思
  • 上海企业网站游戏推广平台哪个好
  • 那个网站做毕业设计佛山百度推广电话