要处理settings界面去展示摄像头数量,查了一遍网上发现没有一个能打的,哦,不,提供的答案都不行,没办法,只能自己来了。
val cameraManager = this.getSystemService(Context.CAMERA_SERVICE) as CameraManager
for (cameraId in cameraManager.getCameraIdList()) {
val characteristics: CameraCharacteristics = cameraManager.getCameraCharacteristics(cameraId)
// Find front or rear facing camera
val facing = characteristics.get(CameraCharacteristics.LENS_FACING)
// Get default camera pixel
val size = characteristics.get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE)
// Get Max camera pixel
val maxSize = characteristics.get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION)
Log.i("TAG1", "ACTIVE_ARRAY_SIZE: wxh=" + size?.width() + "x" + size?.height() + ",mwxmh=" + maxSize?.width() + "x" + maxSize?.height());
//获取摄像头数量并且区分前后摄像头逻辑
//可以用是否有physicalid过滤掉逻辑id,再用lens_facing判断前后
val physicalCameraIds: Set<String> = characteristics.getPhysicalCameraIds()
val facing = mCameraCharacteristics.get(CameraCharacteristics.LENS_FACING)
Log.i(TAG, "physicalCameraIds=: " + physicalCameraIds+", facing="+facing)
}
关于物理id和逻辑id去判断前后摄像头的数量
如上所示,可以用是否有physicalid过滤掉逻辑id,再用lens_facing判断前后,然后就可以知道当前摄像头的数量了