import android.content.Context
import android.hardware.camera2.CameraCharacteristics
import android.hardware.camera2.CameraManager
import android.util.Log
fun getCameraIdByLensFacing(context: Context, lensFacing: Int): String? {
val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
try {
for (cameraId in cameraManager.cameraIdList) {
val characteristics = cameraManager.getCameraCharacteristics(cameraId)
val facing = characteristics.get(CameraCharacteristics.LENS_FACING)
if (facing != null && facing == lensFacing) {
return cameraId
}
}
} catch (e: Exception) {
Log.e("CameraUtil", "Error getting camera ID", e)
}
return null
}
正常情况下可根据摄像头方向信息获取id,如果系统方进行定制,新建摄像头信息,需要进行修改
private val INFO_CAMERA_ID = CameraCharacteristics.Key<Byte>("android.my.info",Byte::class.java)
private const val MY_CAMERA_ID: Byte = 21
fun getCameraId(context: Context): String? {
val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
try {
for (cameraId in cameraManager.cameraIdList) {
val characteristics = cameraManager.getCameraCharacteristics(cameraId)
val info = characteristics.get(INFO_CAMERA_ID )
if (info != null && info == MY_CAMERA_ID) {
return cameraId
}
}
} catch (e: Exception) {
Log.e("CameraUtil", "Error getting camera ID", e)
}
return null
}