Привет, я разрабатываю приложение на 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 .
Спасибо за помощь