RuntimeException:无法连接到相机服务?

Posted

技术标签:

【中文标题】RuntimeException:无法连接到相机服务?【英文标题】:RuntimeException: Fail to connect to camera service? 【发布时间】:2017-10-29 23:34:39 【问题描述】:

E/androidRuntime: 致命异常: main java.lang.RuntimeException:无法连接到相机服务 在 android.hardware.Camera.native_setup(本机方法) 在 android.hardware.Camera.(Camera.java:423) 在 android.hardware.Camera.open(Camera.java:384) 在 ge.baqari.dev.capture.ui.view.CameraView.surfaceChanged(CameraView.kt:39) 在 android.view.SurfaceView.updateWindow(SurfaceView.java:617) 在 android.view.SurfaceView.access$000(SurfaceView.java:88) 在 android.view.SurfaceView$3.onPreDraw(SurfaceView.java:183) 在 android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:692) 在 android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2123) 在 android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1139) 在 android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4879) 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:776) 在 android.view.Choreographer.doCallbacks(Choreographer.java:579) 在 android.view.Choreographer.doFrame(Choreographer.java:548) 在 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762) 在 android.os.Handler.handleCallback(Handler.java:725) 在 android.os.Handler.dispatchMessage(Handler.java:92) 在 android.os.Looper.loop(Looper.java:153) 在 android.app.ActivityThread.main(ActivityThread.java:5341) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:511) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:929) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) 在 dalvik.system.NativeStart.main(Native Method)

我找到了很多答案,但没有一个对我有帮助,我正在尝试创建自定义相机视图,实现表面支架,但它总是使用 Camera.open() 方法崩溃,参数和参数相同,崩溃

class CameraView : android.view.SurfaceView, android.view.SurfaceHolder.Callback 

    var camera: android.hardware.Camera? = null
    var previewing = false
    var cameraCallback: CameraCallBack? = null
    var pictureCallback: PictureCallback? = null
    var cameraParameters: android.hardware.Camera.Parameters? = null

    private fun init() 
        holder.addCallback(this)
        holder.setType(SURFACE_TYPE_NORMAL)
    

    constructor(context: android.content.Context, attrs: android.util.AttributeSet) : super(context, attrs) 
        init()
    

    override fun surfaceCreated(surfaceHolder: android.view.SurfaceHolder) 

    

    override fun surfaceChanged(surfaceHolder: android.view.SurfaceHolder, i: Int, i1: Int, i2: Int) 
        if (context.packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH))
            if (previewing) 
                camera?.stopPreview()
                previewing = false
            

            if (camera == null) 
                try 
                    camera = Camera.open(android.hardware.Camera.CameraInfo.CAMERA_FACING_BACK)
                    cameraParameters!!.setPreviewSize(i1, i2)
                    camera!!.parameters = cameraParameters!!
                    camera!!.startPreview()
                    camera!!.setPreviewDisplay(holder)
                    previewing = true
                 catch (e: java.io.IOException) 
                    e.printStackTrace()
                
            
        
    

    override fun surfaceDestroyed(surfaceHolder: android.view.SurfaceHolder) 
        camera!!.stopPreview()
        camera!!.release()
        previewing = false;
    

【问题讨论】:

尝试重启设备。有时,相机服务会打开并且永远不会关闭,而我发现的唯一一致的恢复方法是重新启动设备。 我已经重启了 2 次,但是处理,尝试了两个 android 设备,但都是华为设备 发布后,设置camera var为null。 【参考方案1】:

问题出在CameraParameters,参数为空,你尝试设置空参数

修复:

camera = Camera.open(android.hardware.Camera.CameraInfo.CAMERA_FACING_BACK)
cameraParameters = camera!!.parameters
cameraParameters!!.setPreviewSize(i1, i2)
camera!!.parameters = cameraParameters!!
camera!!.startPreview()
camera!!.setPreviewDisplay(holder)

您也可以将此库用于camera preview

【讨论】:

@BaqarGogia 你设置相机权限了吗? 不允许我为 hardware.camera 设置使用功能 我的意思是你是否在 Manifest 中添加了摄像头权限?您可以在此处阅读有关权限的信息 - developer.android.com/guide/topics/permissions/index.html 我没有添加,因为我没有使用内置相机应用程序来启动活动结果我使用相机功能,谢谢你的建议))),但要么它没有帮助 @BagarGoggia 即使您使用相机功能也需要许可))

以上是关于RuntimeException:无法连接到相机服务?的主要内容,如果未能解决你的问题,请参考以下文章

Android 6.0 RuntimeException:无法连接到相机服务

Xamarin Forms Java.Lang.RuntimeException:无法连接到相机服务

相机错误“无法连接到相机”或在某些手机中出现错误“相机正在被另一个应用程序使用”

无法连接到手电筒小部件中的相机服务

错误:无法连接到相机服务@Android marshmallow

错误:无法连接到相机服务@Android marshmallow