Camera2 笔记之一:CameraManager分析

1. CameraManager API

1.1 获取物理相机以及逻辑相机id

//方法:public String[] getCameraIdList();CameraManagerGlobal中有白名单配置辅摄的包名,保存在“vendor.camera.aux.packagelist”系统属性中,如下:
130|msm8953_64:/ # getprop vendor.camera.aux.packagelist
org.codeaurora.snapcam,com.android.dialer,com.android.phone
如果非白名单里面的应用程序则最多可获取到两个摄像头ID

1.2 注册Camera状态监听

//方法: public void registerAvailabilityCallback(@NonNull AvailabilityCallback callback,@Nullable Handler handler);
public static abstract class AvailabilityCallback {
        public void onCameraAvailable(@NonNull String cameraId) {
        // default empty implementation
    	}
		public void onCameraUnavailable(@NonNull String cameraId) {
		// default empty implementation
		}
        
        public void onCameraAccessPrioritiesChanged() {
		// default empty implementation
		}
	} 

1.3 注销Camera状态监听

//方法:
public void unregisterAvailabilityCallback(@NonNull AvailabilityCallback callback) 

1.4 注销Camera状态监听

//方法: 
public void unregisterAvailabilityCallback(@NonNull AvailabilityCallback callback)

1.5 注册手电筒

//方法: 
public void registerTorchCallback(@NonNull TorchCallback callback, @Nullable Handler handler)
		public static abstract class TorchCallback {
	public void onTorchModeUnavailable(@NonNull String cameraId) {}
	public void onTorchModeChanged(@NonNull String cameraId, boolean enabled){}
}

1.6 注销手电筒监听

//方法:
public void registerTorchCallback(@NonNull @CallbackExecutor Executor executor,@NonNull TorchCallback callback)

1.7 获取CameraID的属性

//方法: 判断是否隐藏摄像头,是否支持API2。不支持API2的话通过LegacyMetadataMapper.createCharacteristics生成Characteristics
public CameraCharacteristics getCameraCharacteristics(@NonNull String cameraId);
	

1.8 打开Camera

public void openCamera(@NonNull String cameraId,@NonNull final CameraDevice.StateCallback callback, @Nullable Handler handler)

public void openCameraForUid(@NonNull String cameraId, @NonNull final CameraDevice.StateCallback callback, @NonNull Executor executor,int clientUid)

private CameraDevice openCameraDeviceUserAsync(String cameraId, CameraDevice.StateCallback callback, Executor executor, final int uid)
	//返回CameraDevice实际上new 一个CameraDeviceImpl对象,从HAL层cameraService创建一个cameraUser(cameraUsercameraService.connectDevice(callbacks, cameraId,mContext.getOpPackageName(), uid);callbacks 为CameraDeviceImpl中的CameraDeviceCallbacks 继承于ICameraDeviceCallbacks) openCamera后在StateCallback回调中拿到CameraDeviceImpl实例对象

1.9 手电筒开关接口

//方法:
public void setTorchMode(@NonNull String cameraId, boolean enabled)

1.10 检测是否是隐层摄像头

public static boolean isHiddenPhysicalCamera(String cameraId)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值