Android自定义相机开发:无法初始化CameraManager类问题求助
Android自定义相机:CameraManager实例创建失败解决方法
CameraManager的构造方法是**包私有(package-private)**的,无法直接通过CameraManager()实例化,必须通过系统服务获取实例。
正确实现代码
import android.content.Context import android.hardware.camera2.CameraManager import android.os.Bundle import androidx.appcompat.app.AppCompatActivity class CameraActivity : AppCompatActivity() { private lateinit var cameraManager: CameraManager override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_camera) // 通过系统服务获取CameraManager实例 cameraManager = getSystemService(Context.CAMERA_SERVICE) as CameraManager getCameraList() } private fun getCameraList() { // 获取所有相机ID列表 val cameraIds = cameraManager.cameraIdList // 遍历处理相机ID cameraIds.forEach { cameraId -> // 示例:打印相机ID println("相机ID: $cameraId") } } }
注意事项
- 权限配置:在
AndroidManifest.xml中添加相机权限:
Android 6.0(API 23)及以上版本,还需在代码中动态申请相机权限。<uses-permission android:name="android.permission.CAMERA" /> - API级别要求:Camera2 API(包括CameraManager)要求最低SDK版本为21,需在
build.gradle中设置:android { defaultConfig { minSdkVersion 21 } }
内容的提问来源于stack exchange,提问作者Dileep Raj B
相关产品推荐
相关产品推荐

