The process of hosting the camera service died unexpectedly

I searched around to fix the problem for several days, and now I am absolutely true. I tried everything and I can’t find a reason why the My Camera app throws me a service exception.

Like this. I am using the HDI jni library, which I am already checking, and it works fine, it is not memory leadership in its own memory, and it is not a jni problem. So the problem should be in my code:

I just wait for CaptureResult to return AE_CONVERGED_STATE to me to check if the sensor has already received the correct exposure, and then I call my method:

    Log.performanceEnd("YUV capture");
        Log.d(TAG, "[onImageAvailable] YUV capture, mBurstCount: " + mBurstCount);
        Image image = imageReader.acquireNextImage();
        if (mBackgroundHandler != null) {
            mBackgroundHandler.post(new YuvCopy(image, mBurstCount));
        }
        mBurstCount++;

        if (mBurstState == BURST_STATE_HDR) {
            switch (mBurstCount) {
                case 1:
                    mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, HDR_EXPOSURE_COMPENSATION_VALUE_HIGH);
                    break;
                case 2:
                    mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, HDR_EXPOSURE_COMPENSATION_VALUE_LOW);
                    break;
                case 3:
                    //Restore exposure compensation value
                    mCaptureCallback = mPhotoCaptureCallback;
                    mSettingsManager.setExposureCompensation(mPreviewRequestBuilder);
                    mActivity.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            onPictureCaptured();
                        }
                    });
                    unlockFocus();
                    break;
            }
            if (mBurstCount != 3) {
                updatePreviewSession();
            }
            //Finish HDR session
            if (mBurstCount < YUV_BURST_LIMIT) mHdrState = STATE_PICTURE_TAKEN;
        }

Here is my YUV method:

 /**
 * Transform YUV420 to NV21 readable frames
 */
private class YuvCopy implements Runnable {
    private final Image mImage;
    private final int mPictureIndex;

    public YuvCopy(Image image, int index) {
        mImage = image;
        mPictureIndex = index;
    }

    @Override
    public void run() {
        if (mImage != null) {
            if (mImage.getWidth() * mImage.getHeight() > 0) {
                Image.Plane[] planes = mImage.getPlanes();                   

                long startCopy = System.currentTimeMillis();

                int width = mImage.getWidth();
                int height = mImage.getHeight();
                int ySize = width * height;
                ByteBuffer yBuffer = mImage.getPlanes()[0].getBuffer();
                ByteBuffer uvBuffer = mImage.getPlanes()[1].getBuffer();
                ByteBuffer vuBuffer = mImage.getPlanes()[2].getBuffer();
                byte[] mData = new byte[ySize + (ySize / 2)];
                yBuffer.get(mData, 0, ySize);
                vuBuffer.get(mData, ySize, (ySize / 2) - 1);
                mData[mData.length - 1] = uvBuffer.get(uvBuffer.capacity() - 1);
                mImage.close();

                mHdrCaptureArray[mPictureIndex] = mData;

                Log.i(TAG, "[YuvCopy|run] Time to Copy data: " + (System.currentTimeMillis() - startCopy) + "ms");

                if (mPictureIndex == YUV_BURST_LIMIT - 1) {
                    startHdrProcessing();

                } else {
                    mImage.close();
                }

            }
        }
    }

, JNI. jni, , , , , , YUV , , Burst HDR.

, , :

01-01 12:30:27.531 21945-21957/com.myCamera W/AudioSystem: AudioFlinger server died!
01-01 12:30:27.532 21945-22038/com.myCamera W/AudioSystem: AudioPolicyService server died!
1-01 12:30:27.903 21945-21978/com.myCamera I/CameraManagerGlobal: Connecting to camera service
01-01 12:30:27.903 21945-21978/com.myCamera E/CameraManagerGlobal: Camera service is unavailable
01-01 12:30:27.903 21945-21978/com.myCamera W/System.err: android.hardware.camera2.CameraAccessException: Camera service is currently unavailable
01-01 12:30:29.103 21945-21945/com.myCamera W/System.err: android.hardware.camera2.CameraAccessException: Process hosting the camera service has died unexpectedly

2 , 300, , , . , , , .

, - , , , .

!

+4
1

, , ImageReaders, , imageReaders . , INFO_SUPPORTED_HARDWARE_LEVEL == FULL JPEG, , - YUV . , , .

, , , . -, . -, , , getOutputMinFrameDuration (int, Size). , -, , , onConfigureFailed (CameraCaptureSession).

: https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html

, YUV- 4608x3456, JPEG- . (1920x1080). .

, , - !

!

+1

All Articles