Android camera2 判断相机功能是否可控的实例

Android Camera2 可调功能适配

首先获取到设备等级:

Float hardwareLevel = mCameraCharacteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);

LEGACY < LIMITED < FULL < LEVEL_3. 越靠右边权限越大

•INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY = 2
•INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED = 0
•INFO_SUPPORTED_HARDWARE_LEVEL_FULL = 1
•INFO_SUPPORTED_HARDWARE_LEVEL_3 = 3

在相应的等级下面会有各自支持的功能,LEGACY为最低权限

在LIMITED中

Additional capabilities may optionally be supported by a LIMITED-level device, and can be checked for in *android.request.availableCapabilities*.

android.request.availableCapabilities

介绍:List of capabilities that this camera device advertises as fully supporting.

int[] ints = mCameraCharacteristics.get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES);

Possible values:

•BACKWARD_COMPATIBLE
•MANUAL_SENSOR
•MANUAL_POST_PROCESSING
•RAW
•PRIVATE_REPROCESSING
•READ_SENSOR_SETTINGS
•BURST_CAPTURE
•YUV_REPROCESSING
•DEPTH_OUTPUT
•CONSTRAINED_HIGH_SPEED_VIDEO

For example manual_semsor:REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
The camera device can be manually controlled (3A algorithms such as auto-exposure, and auto-focus can be bypassed). The camera device supports basic manual control of the sensor image acquisition related stages. This means the following controls are guaranteed to be supported:
Manual frame duration control
- android.sensor.frameDuration
- android.sensor.info.maxFrameDuration
Manual exposure control
- android.sensor.exposureTime
- android.sensor.info.exposureTimeRange
Manual sensitivity control
- android.sensor.sensitivity
- android.sensor.info.sensitivityRange
Manual lens control (if the lens is adjustable)
- android.lens.*
Manual flash control (if a flash unit is present)
- android.flash.*
Manual black level locking
- android.blackLevel.lock
Auto exposure lock
- android.control.aeLock 

这些值对应的特征值举例:

final String name3 = CaptureRequest.SENSOR_FRAME_DURATION.getName();
name3 -》android.sensor.frameDuration

列出这个的意思是,如果想知道该设备是否支持此功能,可以通过getName()获取其包名,然后在

mCameraCharacteristics.getAvailableCaptureRequestKeys();生成的队列中寻找。

如果有匹配则是可控;

CaptureRequest.LENS_FOCUS_DISTANCE;调节焦距
CaptureRequest.CONTROL_AF_MODE;自动对焦模式
CaptureRequest.SENSOR_SENSITIVITY 调节iso
CaptureRequest.CONTROL_AE_MODE 自动曝光模式

以上这篇Android camera2 判断相机功能是否可控的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Android相机Camera基础知识

    一.概述 本章节主要讲述的Android相机Camera的相关知识点,主要包含三个方面,Android启动系统相机生成缩略图.Android启动系统相机生成原图以及Android自定义相机等. 二.Android启动系统相机 核心代码: package com.czhappy.camerademo.activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Bit

  • Android自定义照相机Camera出现黑屏的解决方法

    本文实例讲述了Android自定义照相机Camera出现黑屏的解决方法.分享给大家供大家参考,具体如下: 对于一些手机,像HTC,当自定义Camera时,调用Camera.Parameters的 parameters.setPreviewSize(width, height)方法时,如果width和height为奇数情况下,则会出现黑屏现象,解决办法可参考SDK提供的ApiDemos中关于Camera的 例子: List<Size> sizes = parameters.getSupporte

  • Android Camera变焦编程步骤

    1.添加Camera权限 2.判断是否支持变焦 复制代码 代码如下: public boolean isSupportZoom()     {         boolean isSuppport = true;         if (mCamera.getParameters().isSmoothZoomSupported())         {             isSuppport = false;         }         return isSuppport;    

  • Android camera实时预览 实时处理,人脸识别示例

    Android camera实时预览 实时处理,面部认证. 预览操作是网友共享的代码,我在继承SurfaceView 的CameraSurfaceView 中加入了帧监听事件,每次预览监听前五个数据帧,在处理做一个面部识别. 先看目录关系 自定义控件CameraSurfaceView.java 自定义接口方法CameraInterface.java CameraActivity预览界面. CameraSurfaceView.Java package com.centaur.camera.prev

  • Android编程调用Camera和相册功能详解

    本文实例讲述了Android编程调用Camera和相册功能.分享给大家供大家参考,具体如下: xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="

  • Android利用Camera实现中轴3D卡牌翻转效果

    在Android系统API中,有两个Camera类: android.graphics.Camera android.hardware.Camera 第二个应用于手机硬件中的相机相关的操作,本文讲述的是利用第一个Camera类实现中轴3D转换的卡牌翻转效果,开始之前,先看一下Android系统中的坐标系: 对应于三维坐标系中的三个方向,Camera提供了三种旋转方法: rotateX() rotateY() rotateX() 调用这三种方法,传入旋转角度参数,即可实现视图沿着坐标轴旋转的功能.

  • Android编程中调用Camera时预览画面有旋转问题的解决方法

    本文实例讲述了Android编程中调用Camera时预览画面有旋转问题的解决方法.分享给大家供大家参考,具体如下: 在调用Camera写应用的时候,前后摄像头的情况有时候是不一样的.有时候,明明后摄像头没有问题,而调用到前摄像头时,却倒转了180°,或者其他角度,百思不得其解.在查看了Android源码之后,发现它的解决办法很是好,接下来贴个源码,以备日后查看. public static int getDisplayRotation(Activity activity) { int rotat

  • Android Camera是否支持变焦的判断方法总结

    最近老大交给了一个任务,说是要在本地视频端能够调节摄像头焦距. 碰到了一些问题: 1.手机支不支持摄像头变焦 2.系统自带摄像软件可以变焦,但是自己编写的程序不支持变焦, 这个问题网上也有很多童鞋碰到了: 复制代码 代码如下: public void setZoomIn(){     try{         params = camera.getParameters();         zoomValue +=5;         params.setZoom(zoomValue);    

  • Android camera2 判断相机功能是否可控的实例

    Android Camera2 可调功能适配 首先获取到设备等级: Float hardwareLevel = mCameraCharacteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL); LEGACY < LIMITED < FULL < LEVEL_3. 越靠右边权限越大 •INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY = 2 •INFO_SUPPORTED_HARDWAR

  • Android Camera2开启自动曝光功能

    本文实例为大家分享了Android Camera2开启自动曝光功能的具体代码,供大家参考,具体内容如下 首先,打开3A的总开关: CaptureRequest.Builder builder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO); 获取支持的 AE FPS Range: List<int[]> ae_fps_ranges = new ArrayList<>(); for (Range&l

  • android中判断服务或者进程是否存在实例

    1.判断进程是否存在 /** * 判断是否在主进程,这个方法判断进程名或者pid都可以,如果进程名一样那pid肯定也一样 * * @return true:当前进程是主进程 false:当前进程不是主进程 */ public boolean isUIProcess() { ActivityManager am = ((ActivityManager) getSystemService(Context.ACTIVITY_SERVICE)); List<ActivityManager.Running

  • Android Camera2 实现预览功能

    1. 概述 最近在做一些关于人脸识别的项目,需要用到 Android 相机的预览功能.网上查阅相关资料后,发现 Android 5.0 及以后的版本中,原有的 Camera API 已经被 Camera2 API 所取代. 全新的 Camera2 在 Camera 的基础上进行了改造,大幅提升了 Android 系统的拍照功能.它通过以下几个类与方法来实现相机预览时的工作过程: •CameraManager :摄像头管理器,主要用于检测系统摄像头.打开系统摄像头等: •CameraDevice

  • android判断相机图片朝向的简单方法

    android应用里使用相机图片时必须要考虑的一个问题就是图片朝向,只有判断对朝向才能调整图片从而更好的展现.本文将介绍一种通过ExifInterface判断图片朝向的方法! 上代码: /** * * 利用给定路径下的图片设置ImageView * * @param imgPath 手机图片文件路径 * @param imgView 需要设置的ImageView */ public void setImg(String imgPath, ImageView imgView) { File fil

  • Android中判断屏幕是否亮屏和是否解锁功能

    1.屏幕是否亮屏: PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); //true为打开,false为关闭 boolean ifOpen = powerManager.isScreenOn(); 2.屏幕是否解锁: KeyguardManager mKeyguardManager = (KeyguardManager) context.getSystemServi

  • Android判断定位功能是否可用的方法

    定位功能是否可用由定位服务和定位权限共同决定: 判断定位服务: /** * 手机是否开启位置服务,如果没有开启那么所有app将不能使用定位功能 */ public static boolean isLocServiceEnable(Context context) { LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); boolean gps

  • Android开发实现拍照功能的方法实例解析

    本文实例讲述了Android开发实现拍照功能的方法.分享给大家供大家参考,具体如下: 解析: 1)判断是否有摄像头checkCameraHardware(this) 2)获得相机camera = Camera.open(0); 3)把相机添加到mPreView = new SurfacePreView(this, mCamera); 4)实现拍照 mCamera.autoFocus 5)在拍照后使用mCamera.takePicture(null, null, mPicture);方法把图片保存

  • Android打开系统相机并拍照的2种显示方法

    本文实例为大家分享了Android打开系统相机并拍照的具体实现代码,供大家参考,具体内容如下 目标效果: 第二张为点击第一个按钮拍照后显示的,比较模糊,第三章为点击第二个按钮拍照后显示的,比较清楚. 1.activity_main.xml页面设置布局. activity_main.xml页面: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="h

  • Android实现简单手电筒功能

    本文实例为大家分享了Android实现简单手电筒功能的具体代码,供大家参考,具体内容如下 XML: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-a

随机推荐