A / libc: фатальный сигнал 11 (SIGSEGV), код 1, адрес ошибки 0x10 в tid 23439 - Cordova / Android 6 - PullRequest
0 голосов
/ 15 октября 2019

Привет, я разрабатываю приложение на Android с использованием Cordova. Приложение имеет функцию камеры для захвата видео. Я использую textureview . Он отлично работает на Android 8, Android 9. Проблема в том, что я пытаюсь заставить его работать на Android 6. Я могу запустить камеру в первый раз, отображается предварительный просмотр, но когда я пытаюсь переключить камеру или просто закрыть камеру,сбой приложения с ошибкой: A / libc: фатальный сигнал 11 (SIGSEGV), код 1, адрес ошибки 0x10 в tid 23439

Ниже приведен код:

package io.iclue.backgroundvideo;

import android.app.Activity;
import android.content.Context;
import android.graphics.SurfaceTexture;
import android.hardware.Camera;
import android.media.CamcorderProfile;
import android.media.MediaRecorder;
import android.text.TextUtils;
import android.util.Log;
import android.view.TextureView;
import android.view.View;
import android.view.ViewGroup;

import java.io.IOException;

@SuppressWarnings("deprecation")
public class VideoOverlay extends ViewGroup implements TextureView.SurfaceTextureListener {
    private static final String TAG = "BACKGROUND_VID_OVERLAY";
    private RecordingState mRecordingState = RecordingState.INITIALIZING;
    private int mCameraId = CameraHelper.NO_CAMERA;
    private Camera mCamera = null;
    private TextureView mPreview;
    private boolean mPreviewAttached = false;
    private MediaRecorder mRecorder = null;
    private boolean mStartWhenInitialized = false;

    private String mFilePath;
    private boolean mRecordAudio = true;
    private int mCameraFacing = Camera.CameraInfo.CAMERA_FACING_BACK;
    private int mOrientation;
    private int videoBitrate;
    private int audioBitrate;



    public VideoOverlay(Context context) {
        super(context);

        this.setClickable(false);
        this.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

        // Create surface to display the camera preview
        mPreview = new TextureView(getContext());
        mPreview.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
        mPreview.setClickable(false);
        mPreview.setSurfaceTextureListener(this);
        attachView();
    }

    public void setCameraFacing(String cameraFace) {
        mCameraFacing = (cameraFace.equalsIgnoreCase("FRONT") ? Camera.CameraInfo.CAMERA_FACING_FRONT : Camera.CameraInfo.CAMERA_FACING_BACK);
    }

    public void setRecordAudio(boolean recordAudio) {
        mRecordAudio = recordAudio;
    }

    public void setVideoBitrate(int videoBitrate) {
        this.videoBitrate = videoBitrate;
    }

    public void setAudioBitrate(int audioBitrate) {
        this.audioBitrate = audioBitrate;
    }

    public void Start(String filePath) throws Exception {
        Log.d(TAG, "Start(String filePath)");
        if (this.mRecordingState == RecordingState.STARTED) {
            Log.w(TAG, "Already Recording");
            mRecorder.stop();
            return;
        }else {

            if (!TextUtils.isEmpty(filePath)) {
                this.mFilePath = filePath;
            }
            Log.d(TAG, "attachView()");
            attachView();

            if (this.mRecordingState == RecordingState.INITIALIZING) {
                Log.d(TAG, "mRecordingState == RecordingState.INITIALIZING : return");
                this.mStartWhenInitialized = true;
                return;
            }

            if (TextUtils.isEmpty(mFilePath)) {
                throw new IllegalArgumentException("Filename for recording must be set");
            }

            initializeCamera();

            if (mCamera == null) {
                this.detachView();
                throw new NullPointerException("Cannot start recording, we don't have a camera!");
            }

            // Set camera parameters
            Camera.Parameters cameraParameters = mCamera.getParameters();
            Log.d(TAG, "stopPreview()");
            mCamera.stopPreview(); //Apparently helps with freezing issue on some Samsung devices.
            mCamera.unlock();


            try {
                Log.d(TAG, "new MediaRecorder()");
                mRecorder = new MediaRecorder();
                mRecorder.setCamera(mCamera);

                CamcorderProfile profile;
                if (CamcorderProfile.hasProfile(mCameraId, CamcorderProfile.QUALITY_720P)) {
                    profile = CamcorderProfile.get(mCameraId, CamcorderProfile.QUALITY_720P);
                } else {
                    profile = CamcorderProfile.get(mCameraId, CamcorderProfile.QUALITY_720P);
                }

            Camera.Size lowestRes = CameraHelper.getLowestResolution(cameraParameters);
            //Log.d(TAG, "getLowestResolution: " + lowestRes.width + "x" + lowestRes.height);
            //profile.videoFrameWidth = lowestRes.width;
            //profile.videoFrameHeight = lowestRes.height;
            //Log.d(TAG, profile.videoFrameWidth + "x" + profile.videoFrameHeight);

                mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
                if (mRecordAudio) {
                    // With audio
                    mRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);

                }
                mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
                mRecorder.setVideoFrameRate(profile.videoFrameRate);
                mRecorder.setVideoSize(profile.videoFrameWidth, profile.videoFrameHeight);
                mRecorder.setVideoEncodingBitRate(profile.videoBitRate);
                if (mRecordAudio) {
                    mRecorder.setAudioEncodingBitRate(profile.audioBitRate);
                    mRecorder.setAudioChannels(profile.audioChannels);
                    mRecorder.setAudioSamplingRate(profile.audioSampleRate);
                }
                mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
                if (mRecordAudio) {
                    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
                }

                mRecorder.setOutputFile(filePath);
                if(mCameraId==0) {
                    mRecorder.setOrientationHint(mOrientation);
                }else{
                    mRecorder.setOrientationHint(270);
                }


                mRecorder.prepare();
                Log.d(TAG, "Starting recording");

                mRecorder.start();

                Log.d(TAG, "Started recording");
                this.mRecordingState = RecordingState.STARTED;
                Log.d(TAG, "mRecordingState: " + mRecordingState);

            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (Exception e) {
                this.releaseCamera();
                Log.e(TAG, "Could not start recording! MediaRecorder Error", e);
                throw e;
            }
        }
    }

    public String Stop() throws IOException {
        Log.d(TAG, "stopRecording called");

        if (mRecorder != null) {
            MediaRecorder tempRecorder = mRecorder;
            mRecorder.stop();
            mRecorder.release();
            mRecorder = null;
            try {
                tempRecorder.stop();
            } catch (Exception e) {
                //This can occur when the camera failed to start and then stop is called
                Log.e(TAG, "Could not stop recording.", e);
            }
        }

        this.releaseCamera();
        this.detachView();

        return this.mFilePath;
    }




    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        int numChildren = getChildCount();
        if (changed && numChildren > 0) {
            int itemWidth = (r - l) / numChildren;
            for (int i = 0; i < numChildren; i++) {
                View v = getChildAt(i);
                v.layout(itemWidth * i, 0, (i + 1) * itemWidth, b - t);
            }
        }
    }

    private void initializeCamera() {
        Log.d(TAG, "initializeCamera()");
        if (mCamera == null) {
            try {
                mCameraId = CameraHelper.getCameraId(mCameraFacing);
                if (mCameraId != CameraHelper.NO_CAMERA) {
                    mCamera = Camera.open(mCameraId);
                    Log.d(TAG, "Camera opened: " + mCameraId);
                    // Set camera parameters
                    mOrientation = CameraHelper.calculateOrientation((Activity) this.getContext(), mCameraId);
                    Camera.Parameters cameraParameters = mCamera.getParameters();
                    Camera.Size previewSize = CameraHelper.getPreviewSize(cameraParameters);
//                    Camera.Size previewSize = CameraHelper.getLowestResolution(cameraParameters);
                    cameraParameters.setPreviewSize(previewSize.width, previewSize.height);
                    if(mCameraId==0){
                        cameraParameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
                    }
                    Log.d(TAG, "setPreviewSize: " + previewSize.width + "x" + previewSize.height);
                    cameraParameters.setRotation(mOrientation);
                    cameraParameters.setRecordingHint(true);

                    mCamera.setParameters(cameraParameters);
                    mCamera.setDisplayOrientation(mOrientation);
                    mCamera.setErrorCallback(new Camera.ErrorCallback() {
                        @Override
                        public void onError(int error, Camera camera) {
                            Log.e(TAG, "Camera error: " + error);
                        }
                    });
                    Log.d(TAG, "Camera configured");
                }
            } catch (RuntimeException ex) {
                this.releaseCamera();
                Log.e(TAG, "Unable to open camera. Another application probably has a lock", ex);
            }
        }
    }

    private void releaseCamera() {
        Log.d(TAG, "releaseCamera()");
        if (mRecorder != null) {
            mRecorder.reset();
            mRecorder.release();
            mRecorder = null;
        }
        if (mCamera != null) {
            mCamera.setPreviewCallback(null);
            mCamera.stopPreview();
            mCamera.lock();
            mCamera.release();
            mCamera = null;
            mCameraId = CameraHelper.NO_CAMERA;
        }

        this.mRecordingState = RecordingState.STOPPED;
        Log.d(TAG, "mRecordingState: " + mRecordingState);
    }

    private void attachView() {
        Log.d(TAG, "attachView()");
        if (!mPreviewAttached && mPreview != null) {
            Log.d(TAG, "addView(mPreview)");
            this.addView(mPreview);
            this.mPreviewAttached = true;
            Log.d(TAG, "attachView() attached");
        }
    }

    private void detachView() {
        Log.d(TAG, "detachView()");
        if (mPreviewAttached && mPreview != null) {
            Log.d(TAG, "removeView(mPreview)");
            this.removeView(mPreview);
            this.mPreviewAttached = false;
            this.mRecordingState = RecordingState.INITIALIZING;
            Log.d(TAG, "mRecordingState: " + mRecordingState);
        }
    }

    @Override
    public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
        Log.d(TAG, "Creating Texture Created");
        Log.d(TAG, "mRecordingState: " + mRecordingState);

        initializeCamera();

        if (mCamera != null && this.mRecordingState != RecordingState.STARTED) {
            try {
                Log.d(TAG, "setPreviewTexture");
                mCamera.setPreviewTexture(surface);
            } catch (IOException e) {
                Log.e(TAG, "Unable to attach preview to camera!", e);
            }
            Log.d(TAG, "startPreview");

            mCamera.startPreview();
        } else {
            if (mCamera == null) {
                Log.e(TAG, "mCamera == null");
            }
        }

        if (this.mRecordingState == RecordingState.INITIALIZING) {
            this.mRecordingState = RecordingState.STOPPED;//INITIALIZING complete
        }

        Log.d(TAG, "mStartWhenInitialized: " + mStartWhenInitialized);
        Log.d(TAG, "this.mRecordingState != RecordingState.STARTED: " + (this.mRecordingState != RecordingState.STARTED));
        if (mStartWhenInitialized && this.mRecordingState != RecordingState.STARTED) {
            Log.d(TAG, "mRecordingState: " + mRecordingState);
            try {
                Log.d(TAG, "mStartWhenInitialized Start(this.mFilePath)");

                Start(this.mFilePath);
            } catch (Exception ex) {
                Log.e(TAG, "Error start camera", ex);
            }
        }
    }

    @Override
    public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
    }

    @Override
    public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
        return false;
    }

    @Override
    public void onSurfaceTextureUpdated(SurfaceTexture surface) {
    }

    private enum RecordingState {INITIALIZING, STARTED, STOPPED}
}

> D/BACKGROUND_VID_OVERLAY: Creating Texture Created
    mRecordingState: INITIALIZING
    initializeCamera()
D/BACKGROUND_VID_OVERLAY: Camera opened: 0
D/BACKGROUND_VID_OVERLAY: setPreviewSize: 1280x720
D/BACKGROUND_VID_OVERLAY: Camera configured
    setPreviewTexture
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) connect(P): api=4 producer=(327:/system/bin/mediaserver) producerControlledByApp=true
D/BACKGROUND_VID_OVERLAY: startPreview
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) setBufferCount: count = 8
I/BufferQueueConsumer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) getReleasedBuffers: returning mask 0xffffffffffffffff
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) new GraphicBuffer needed
I/[MALI][Gralloc]: [+]r_hnd(0x9c243140), client(89), share_fd(93)
D/GraphicBuffer: register, handle(0x9c243140) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) new GraphicBuffer needed
I/[MALI][Gralloc]: [+]r_hnd(0x9c243280), client(89), share_fd(94)
D/GraphicBuffer: register, handle(0x9c243280) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) new GraphicBuffer needed
I/[MALI][Gralloc]: [+]r_hnd(0x9a18a020), client(89), share_fd(99)
D/GraphicBuffer: register, handle(0x9a18a020) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) new GraphicBuffer needed
I/[MALI][Gralloc]: [+]r_hnd(0x9a18b600), client(89), share_fd(100)
D/GraphicBuffer: register, handle(0x9a18b600) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) new GraphicBuffer needed
I/[MALI][Gralloc]: [+]r_hnd(0x9a18b9c0), client(89), share_fd(101)
D/GraphicBuffer: register, handle(0x9a18b9c0) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) new GraphicBuffer needed
I/[MALI][Gralloc]: [+]r_hnd(0x9a63a0a0), client(89), share_fd(103)
D/GraphicBuffer: register, handle(0x9a63a0a0) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
D/BACKGROUND_VID_OVERLAY: mStartWhenInitialized: false
    this.mRecordingState != RecordingState.STARTED: true
I/GLConsumer: [SurfaceTexture-0-23439-0] attachToContext
D/BACKGROUND_VIDEO: videoOverlay.Start
D/BACKGROUND_VID_OVERLAY: Start(String filePath)
    attachView()
    attachView()
    initializeCamera()
D/BACKGROUND_VID_OVERLAY: stopPreview()
D/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) cancelBuffer: slot 0
D/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) cancelBuffer: slot 1
D/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) cancelBuffer: slot 2
D/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) cancelBuffer: slot 3
D/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) cancelBuffer: slot 4
D/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) cancelBuffer: slot 5
D/BACKGROUND_VID_OVERLAY: new MediaRecorder()
D/BACKGROUND_VID_OVERLAY: Starting recording
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) setBufferCount: count = 8
D/GraphicBuffer: unregister, handle(0x9c243140) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/[MALI][Gralloc]: [-]r_hnd(0x9c243140), client(89), share_fd(93)
D/GraphicBuffer: unregister, handle(0x9c243280) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/[MALI][Gralloc]: [-]r_hnd(0x9c243280), client(89), share_fd(94)
D/GraphicBuffer: unregister, handle(0x9a18a020) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/[MALI][Gralloc]: [-]r_hnd(0x9a18a020), client(89), share_fd(99)
D/GraphicBuffer: unregister, handle(0x9a18b600) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/[MALI][Gralloc]: [-]r_hnd(0x9a18b600), client(89), share_fd(100)
D/GraphicBuffer: unregister, handle(0x9a18b9c0) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/[MALI][Gralloc]: [-]r_hnd(0x9a18b9c0), client(89), share_fd(101)
D/GraphicBuffer: unregister, handle(0x9a63a0a0) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/[MALI][Gralloc]: [-]r_hnd(0x9a63a0a0), client(89), share_fd(103)
I/BufferQueueConsumer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) getReleasedBuffers: returning mask 0xffffffffffffffff
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) new GraphicBuffer needed
I/[MALI][Gralloc]: [+]r_hnd(0xb2fa4ba0), client(89), share_fd(75)
D/GraphicBuffer: register, handle(0xb2fa4ba0) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) new GraphicBuffer needed
I/[MALI][Gralloc]: [+]r_hnd(0x9cb44e40), client(89), share_fd(87)
D/GraphicBuffer: register, handle(0x9cb44e40) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) new GraphicBuffer needed
I/[MALI][Gralloc]: [+]r_hnd(0x9cb458e0), client(89), share_fd(76)
D/GraphicBuffer: register, handle(0x9cb458e0) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) new GraphicBuffer needed
I/[MALI][Gralloc]: [+]r_hnd(0x9a63a1e0), client(89), share_fd(88)
D/GraphicBuffer: register, handle(0x9a63a1e0) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) new GraphicBuffer needed
I/[MALI][Gralloc]: [+]r_hnd(0xb2fa4ce0), client(89), share_fd(90)
D/GraphicBuffer: register, handle(0xb2fa4ce0) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) new GraphicBuffer needed
I/[MALI][Gralloc]: [+]r_hnd(0x9cb45e80), client(89), share_fd(92)
D/GraphicBuffer: register, handle(0x9cb45e80) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
D/BACKGROUND_VID_OVERLAY: Started recording
    mRecordingState: STARTED
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) new GraphicBuffer needed
I/[MALI][Gralloc]: [+]r_hnd(0x9cb462e0), client(89), share_fd(119)
D/GraphicBuffer: register, handle(0x9cb462e0) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) new GraphicBuffer needed
I/[MALI][Gralloc]: [+]r_hnd(0x9a63a0a0), client(89), share_fd(118)
D/GraphicBuffer: register, handle(0x9a63a0a0) (w:1280 h:720 s:1280 f:0x32315659 u:0x000133)
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) queueBuffer: fps=30.24 dur=1025.20 max=39.84 min=25.53
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) queueBuffer: fps=30.00 dur=1033.36 max=36.25 min=29.52
D/ViewRootImpl: ViewPostImeInputStage processPointer 0
D/ViewRootImpl: ViewPostImeInputStage processPointer 1
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) queueBuffer: fps=30.03 dur=1032.25 max=37.18 min=30.36
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) queueBuffer: fps=29.93 dur=1002.32 max=36.15 min=30.63
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) queueBuffer: fps=30.07 dur=1030.98 max=35.59 min=31.00
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) queueBuffer: fps=30.07 dur=1030.77 max=36.09 min=30.45
D/ViewRootImpl: ViewPostImeInputStage processPointer 0
D/ViewRootImpl: ViewPostImeInputStage processPointer 1
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) queueBuffer: fps=29.89 dur=1003.69 max=35.22 min=32.00
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) queueBuffer: fps=30.00 dur=1000.08 max=40.92 min=27.66
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) queueBuffer: fps=30.09 dur=1030.39 max=35.30 min=30.95
D/ViewRootImpl: ViewPostImeInputStage processPointer 0
D/ViewRootImpl: ViewPostImeInputStage processPointer 1
D/BACKGROUND_VIDEO: ACTION: stop
D/BACKGROUND_VID_OVERLAY: stopRecording called
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) queueBuffer: slot 5 is dropped, handle=0x9cb45e80
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) queueBuffer: slot 6 is dropped, handle=0x9cb462e0
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) queueBuffer: slot 7 is dropped, handle=0x9a63a0a0
D/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) cancelBuffer: slot 1
D/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) cancelBuffer: slot 2
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) queueBuffer: slot 0 is dropped, handle=0xb2fa4ba0
    [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) queueBuffer: slot 3 is dropped, handle=0x9a63a1e0
W/google-breakpad: ### ### ### ### ### ### ### ### ### ### ### ### ###
    Chrome build fingerprint:
    1.0.0
    10000
    ### ### ### ### ### ### ### ### ### ### ### ### ###
A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x10 in tid 23439 (com.youzem.app)
I/BufferQueueProducer: [SurfaceTexture-0-23439-0](this:0xad976c00,id:0,api:4,p:327,c:23439) queueBuffer: slot 5 is dropped, handle=0x9cb45e80
Process 23439 terminated.

Не могли бы вы дать мне несколько советов, чтобы получить эту работу на Android 6 .

Спасибо за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...