要读取镜头的制造商/型号,您可以使用Camera2 API来获取该信息。以下是使用Camera2 API和AndroidX ExifInterface来读取相机制造商和型号以及镜头制造商和型号的示例代码:
首先,确保您的项目已添加以下依赖项:
implementation 'androidx.exifinterface:exifinterface:1.3.3'
implementation 'androidx.camera:camera-camera2:1.1.0'
接下来,创建一个CameraManager的实例,并使用它来获取相机的制造商和型号:
val cameraManager = getSystemService(Context.CAMERA_SERVICE) as CameraManager
val cameraId = cameraManager.cameraIdList[0] // 选取第一个相机
val cameraCharacteristics = cameraManager.getCameraCharacteristics(cameraId)
val cameraManufacturer = cameraCharacteristics.get(CameraCharacteristics.MANUFACTURER)
val cameraModel = cameraCharacteristics.get(CameraCharacteristics.MODEL)
然后,通过读取照片的Exif信息,获取镜头的制造商和型号:
val exifInterface = ExifInterface(photoPath)
val lensMake = exifInterface.getAttribute(ExifInterface.TAG_LENS_MAKE)
val lensModel = exifInterface.getAttribute(ExifInterface.TAG_LENS_MODEL)
注意:在上述代码中,photoPath
是照片的文件路径。您需要根据您的实际情况进行调整。
综合起来,以下是一个完整的示例代码:
val cameraManager = getSystemService(Context.CAMERA_SERVICE) as CameraManager
val cameraId = cameraManager.cameraIdList[0] // 选取第一个相机
val cameraCharacteristics = cameraManager.getCameraCharacteristics(cameraId)
val cameraManufacturer = cameraCharacteristics.get(CameraCharacteristics.MANUFACTURER)
val cameraModel = cameraCharacteristics.get(CameraCharacteristics.MODEL)
val exifInterface = ExifInterface(photoPath)
val lensMake = exifInterface.getAttribute(ExifInterface.TAG_LENS_MAKE)
val lensModel = exifInterface.getAttribute(ExifInterface.TAG_LENS_MODEL)
请注意,使用Camera2 API需要在AndroidManifest.xml文件中添加相应的权限:
同时也要在运行时请求相机权限。