user987362
user987362

Reputation: 377

Failed to connect to camera service in Android

Got an exception "failed to connect to camera service" when navigating from another activity to camera activity.The issue occurs at Camera.open().I have searched a lot and tried the solutions available.But the issue is not solved.Please provide some help.Thanks in advance.

 @Override
    public void surfaceChanged(final SurfaceHolder holder, int arg1,
            int arg2, int arg3) {


        cameraHandler = new Handler() {
            /*
             * (non-Javadoc)
             * 
             * @see android.os.Handler#handleMessage(android.os.Message)
             */
            @Override
            public void handleMessage(Message msg) {
                switch (msg.what) {
                case LOADCAMERA:
                    if (null != mProgress) {
                        if (mProgress.isShowing()) {
                            mProgress.dismiss();
                        }
                    }
                    try {
                        try {

                            mCam = Camera.open(); // attempt to get a Camera
                                                    // instance
                        } catch (Exception e) {
                            Log.e("Exception", e.getMessage());
                        }
                        mCam.setPreviewDisplay(holder);
                        mCameraParameters = mCam.getParameters();
                        if (isFlashLightOn) {
                            mCameraParameters
                                    .setFlashMode(Parameters.FLASH_MODE_TORCH);
                        } else {
                            mCameraParameters
                                    .setFlashMode(Parameters.FLASH_MODE_OFF);
                        }
                        mCameraParameters.setPreviewSize(mVideoWidth,
                                mVideoHeight);
                        mCam.setParameters(mCameraParameters);
                        mCam.startPreview();
                        mCam.unlock();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                }
                super.handleMessage(msg);
            }
        };
        Message msg = new Message();
        msg.what = LOADCAMERA;
        cameraHandler.sendMessageDelayed(msg, 700);

    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {

    }

    @Override
    public void surfaceDestroyed(SurfaceHolder arg0) {


        if (mCam != null) {
            mCam.stopPreview();
            mCam.setPreviewCallback(null);
            mCam.release();
            mCam = null;
        }

    }
}

Log cat is added

W/CameraService(   78): CameraService::connect X (pid 623) rejected (camera 0 is still      busy).
E/Exception(  623): Fail to connect to camera service
D/AndroidRuntime(  623): Shutting down VM
W/dalvikvm(  623): threadid=1: thread exiting with uncaught exception(group=0x40015560)
E/AndroidRuntime(  623): FATAL EXCEPTION: main
E/AndroidRuntime(  623): java.lang.NullPointerException
E/AndroidRuntime(  623):    at   com.gui.MainActivity$CameraPreview$1.handleMessage(MainActivity.java:2041)
E/AndroidRuntime(  623):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  623):    at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(  623):    at  android.app.ActivityThread.main(ActivityThread.java:3683)
E/AndroidRuntime(  623):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  623):    at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(  623):    at    com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:845)
E/AndroidRuntime(  623):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:603)
E/AndroidRuntime(  623):    at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager(  106):   Force finishing activity com.gui/.MainActivity
W/ActivityManager(  106):   Force finishing activity com.gui/.MainActivity
E/v4l2_utils(   78): Error = Try again from dqbuf
E/SEC_Overlay(   78): Failed to DQ/-1
E/CameraHardwareSec(   78): ERR(int    android::CameraHardwareSec::previewThread()):overlay dequeueBuffer fail
I/CameraHardwareSec(   78): int android::CameraHardwareSec::previewThreadWrapper():  calling mSecCamera->stopPreview() and waiting
I/CameraHardwareSec(   78): int android::CameraHardwareSec::previewThreadWrapper(): return from wait
I/CameraHardwareSec(   78): int android::CameraHardwareSec::previewThreadWrapper(): exiting
W/SecCamera(   78): int android::SecCamera::stopPreview(): doing nothing because m_flag_camera_start is zero
I/CameraHardwareSec(   78): virtual void android::CameraHardwareSec::release(): calling mPreviewHeap.dispose()
W/SecCamera(   78): int android::SecCamera::stopRecord(): doing nothing because     m_flag_record_start is zero
I/SecCamera(   78): DeinitCamera: m_cam_fd(15)
I/SecCamera(   78): DeinitCamera: m_cam_fd2(21)

Upvotes: 2

Views: 7166

Answers (2)

user13572750
user13572750

Reputation: 1

Perhaps, in your MainActivity you can add:

protected override void OnDestroyed() {
    if (mCam != null) {
        mCam.release();
    }
}

I think your error might be because the camera still has an open connection with the application before it was quit. At least, that's what fixed my problem.

Upvotes: 0

vikky.rk
vikky.rk

Reputation: 4159

CameraService::connect X (pid 623) rejected (camera 0 is still busy).

This means that some other process (App) has already called 'Camera.open' and did not release it . Until it releases you cannot access the Camera.

What do you mean by "Got an exception "failed to connect to camera service" when navigating from another activity to camera activity".

What is this other activity and does it access Camera?

Upvotes: 4

Related Questions