利用反射获取Camera支持尺寸大小
2014-12-30 11:17
489 查看
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);
相关文章推荐
- 利用js获取图片尺寸与图片大小(高度与宽度)
- 利用ASP获取设置图片尺寸大小
- 利用js获取图片尺寸与图片大小(高度与宽度)
- 获取Camera 支持视频的尺寸
- android里camera支持的预览尺寸的获取
- android里camera支持的预览尺寸的获取
- 109_利用反射调用隐藏api获取应用程序的缓存大小
- 利用ASP获取设置图片尺寸大小
- 96利用反射获取缓存和应用程序的大小信息
- 利用反射技术动态获取任意Java类实例的属性值
- 用php或js获取图片大小,高宽尺寸
- 利用反射,泛型,静态方法快速获取表单值到Model。(Henq)
- Flex中如何利用Camera.names和Camera.getCamera(),获取摄像头名称数组
- 利用反射,泛型,静态方法快速获取表单值到Model。
- Asp.net获取上传图片大小的尺寸!
- 利用ASP得到图片尺寸大小
- Visual C++利用Intel C++ 编译器提升多核性能与多媒体指令支持获取更高的程序效率与缩小程序体积
- 利用反射,泛型,静态方法快速获取表单值到Model。(转)
- 获取网站图片大小尺寸
- 利用反射技术动态获取任意Java类实例的属性值