利用反射获取Camera支持尺寸大小
来源:互联网 发布:linux一键安装脚本 编辑:程序博客网 时间:2024/06/01 09:32
import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.List;import android.hardware.Camera;import android.hardware.Camera.Size;public class SupportedSizesReflect { private static Method Parameters_getSupportedPreviewSizes = null; private static Method Parameters_getSupportedPictureSizes = null; static { initCompatibility(); }; private static void initCompatibility() { try { Parameters_getSupportedPreviewSizes = Camera.Parameters.class .getMethod("getSupportedPreviewSizes", new Class[] {}); Parameters_getSupportedPictureSizes = Camera.Parameters.class .getMethod("getSupportedPictureSizes", new Class[] {}); } catch (NoSuchMethodException nsme) { nsme.printStackTrace(); Parameters_getSupportedPreviewSizes = Parameters_getSupportedPictureSizes = null; } } /** * Android 2.1之后有效 * * @param p * @return Android1.x返回null */ public static List<Size> getSupportedPreviewSizes(Camera.Parameters p) { return getSupportedSizes(p, Parameters_getSupportedPreviewSizes); } public static List<Size> getSupportedPictureSizes(Camera.Parameters p) { return getSupportedSizes(p, Parameters_getSupportedPictureSizes); } @SuppressWarnings("unchecked") private static List<Size> getSupportedSizes(Camera.Parameters p, Method method) { try { if (method != null) { return (List<Size>) method.invoke(p); } else { return null; } } catch (InvocationTargetException ite) { Throwable cause = ite.getCause(); if (cause instanceof RuntimeException) { throw (RuntimeException) cause; } else if (cause instanceof Error) { throw (Error) cause; } else { throw new RuntimeException(ite); } } catch (IllegalAccessException ie) { return null; } }}Camera.Parameters params = mCamera.getParameters(); List<Size> supportedPictureSizes = SupportedSizesReflect.getSupportedPictureSizes(params); List<Size> supportedPreviewSizes = SupportedSizesReflect.getSupportedPreviewSizes(params); if ( supportedPictureSizes != null && supportedPreviewSizes != null && supportedPictureSizes.size() > 0 && supportedPreviewSizes.size() > 0) { //2.x Size pictureSize = supportedPictureSizes.get(0); int maxSize = 1920; if(maxSize > 0){ for(Size size : supportedPictureSizes){ if(maxSize >= Math.max(size.width,size.height)){ pictureSize = size; break; } } } Size previewSize = getOptimalPreviewSize( supportedPreviewSizes, DisplayUtil.getDisplayWidth(), DisplayUtil.getDisplayHeight()); params.setPictureSize(pictureSize.width, pictureSize.height); params.setPreviewSize(pictureSize.width, pictureSize.height); Log.i(TAG, "pictureSize .width:" + pictureSize.width + "---height:" + pictureSize.height); Log.i(TAG, "previewSize .width:" + previewSize.width + "---height:" + previewSize.height); } mCamera.setParameters(params);
0 0
- 利用反射获取Camera支持尺寸大小
- android里camera支持的预览尺寸的获取
- android里camera支持的预览尺寸的获取
- 获取屏幕尺寸大小
- 获取屏幕尺寸大小
- 96利用反射获取缓存和应用程序的大小信息
- android 获取屏幕尺寸大小
- 获取屏幕的大小尺寸
- android 获取组件尺寸大小
- 获取IOS屏幕尺寸大小
- android 获取组件尺寸大小
- 获取IOS屏幕尺寸大小
- Android Camera 找出屏幕的最佳尺寸大小
- Javascript获取页面、屏幕尺寸大小参数
- Javascript获取页面、屏幕尺寸大小参数
- 获取图片的源尺寸大小
- HTML获取屏幕、浏览器的尺寸大小
- 获取屏幕尺寸大小和密度
- Java缓存使用ArrayList/HashMap的常见问题----ConcurrentModification
- ASP.net Reuqest请求常用操作
- 239 判断一个数的所有因数的个数是偶数还是奇数
- nyoj-搜索-吝啬的国度
- 最近的android项目开发问题总结
- 利用反射获取Camera支持尺寸大小
- U3d 入门
- IOS开发笔记之开发的一些技巧
- 9.3(2)海洋之心
- 屏蔽指定代码段中的指定警告
- 解决办法---cygwin下编译的*.exe文件,在windows下,一闪而过
- 摄像机gamma校正
- iOS开发的一些奇巧淫技
- 【知识导图】第八章 排序技术