setParameters failed
Got the follow exception when starting the camera on Galaxy s6 SM-G925I (cameraKit 0.13.1)
06-19 10:37:15.328 2936-2936/com.charaku.popsical.tv D/RecorderActivity: onEvent: CameraKitError
06-19 10:37:15.328 2936-2936/com.charaku.popsical.tv E/RecorderActivity: setParameters failed
java.lang.RuntimeException: setParameters failed
at android.hardware.Camera.native_setParameters(Native Method)
at android.hardware.Camera.setParameters(Camera.java:1940)
at com.wonderkiln.camerakit.Camera1.adjustCameraParameters(Camera1.java:804)
at com.wonderkiln.camerakit.Camera1.adjustCameraParameters(Camera1.java:779)
at com.wonderkiln.camerakit.Camera1.openCamera(Camera1.java:671)
at com.wonderkiln.camerakit.Camera1.start(Camera1.java:124)
at com.wonderkiln.camerakit.CameraView$2.run(CameraView.java:266)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
I was playing around with the source and noticed that the crash stops after I disable the invertPreviewSizes inside Camer1.getPreviewResolution
//boolean invertPreviewSizes = (this.mCameraInfo.orientation + this.mDeviceOrientation) % 180 == 90;
boolean invertPreviewSizes = false;
The problem is that the preview will then be stretched in portrait mode (front camera). Perhaps this means that the size from getSupportedPreviewSizes cannot just be inverted manually like that.
Anyway I end up with the following.
In Camera1.java
Size getPreviewResolution() {
return getPreviewResolution(false);
}
Size getPreviewResolution(boolean oriented) {
....
boolean invertPreviewSizes = oriented && (this.mCameraInfo.orientation + this.mDeviceOrientation) % 180 == 90;
return this.mPreviewSize != null && invertPreviewSizes ? new Size(this.mPreviewSize.getHeight(), this.mPreviewSize.getWidth()) : this.mPreviewSize;
}
...
protected void adjustCameraParameters(int currentTry) {
boolean haveToReadjust = false;
Parameters resolutionLess = this.mCamera.getParameters();
Size previewRes = this.getPreviewResolution();
Size orientedPreviewRes = this.getPreviewResolution(true);
if (previewRes != null && orientedPreviewRes != null) {
this.mPreview.setPreviewParameters(orientedPreviewRes.getWidth(), orientedPreviewRes.getHeight(), this.mCameraParameters.getPreviewFormat());
this.mCameraParameters.setPreviewSize(previewRes.getWidth(), previewRes.getHeight());
try {
this.mCamera.setParameters(this.mCameraParameters);
resolutionLess = this.mCameraParameters;
} catch (Exception var9) {
this.notifyErrorListener(var9);
this.mCameraParameters = resolutionLess;
}
} else {
haveToReadjust = true;
}
....
}
Basically separating preview size from camera preview size
@platinum7919 Thanks for the issue and for looking into this. We have been working hard on CameraKit version 1.0.0 which has many stability and use-ability improvements over 0.13.x. It is currently in a stable Beta, take a look at the notes here #318.
Could you test your implementation on 1.0.0 and let me know if the problem persists? Thank you!
I used 0.13.x, some mobile record video error , I find the error messsages 'setParameters failed'. so i can't record .
0.13.5 +1
0.13.4 +1, 'setParameters failed' on record video attempt
+1
+1 on 0.13.5. Just seeing the "setParameters failed" msg wrapped in a RuntimeException logged under the CameraKitEventListener#onError(CameraKitError) callback. Unable to record video