Я разрабатываю приложение, которое отлично работает на всех версиях андроид до и после мороженого, а также в ICS 4.0.3. Однако для Galaxy Nexus с версии 4.0.1 и 4.0.2 это сила закрывается, когда я называю Camera.setParameters()камера setParameters, не работающая в android 4.0.1 и 4.0.2
Мой фрагмент кода приведен ниже
// mCamera is my camera object.
// mFrameWidth and mFrameHeight are my desired preview size
Camera.Parameters params = mCamera.getParameters();
List<Camera.Size> sizes = params.getSupportedPreviewSizes();
width = mFrameWidth;
height = mFrameHeight;
// selecting optimal camera preview size closest to desired size
double minDiff = Double.MAX_VALUE;
for (Camera.Size size : sizes) {
if (Math.abs(size.width - width) < minDiff) {
mFrameWidth = size.width;
mFrameHeight = size.height;
minDiff = Math.abs(size.width - width);
}
}
params.setPreviewSize(mFrameWidth, mFrameHeight);
// Crashes here
mCamera.setParameters(params);
Это отчет об врезаться
java.lang.RuntimeException: setParameters failed
at android.hardware.Camera.native_setParameters(Native Method)
at android.hardware.Camera.setParameters(Camera.java:1295)
at com.example.MySurfaceView.surfaceChanged(MySurfaceView.java:182)
at android.view.SurfaceView.updateWindow(SurfaceView.java:544)
at android.view.SurfaceView.access$000(SurfaceView.java:81)
at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:169)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:590)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1617)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Похоже, эта проблема вызвана некоторой ошибкой в версиях 4.0.1 и 4.0.2 ICS, но я не мог найти никаких ошибок или проблем, связанных с этим. Было бы здорово, если бы кто-то мог указать мне в правильном направлении. Заранее спасибо!!
Да, я, к сожалению, имел свою долю в решении проблем, вызванных фрагментацией андроида. Однако, поскольку я не мог найти никаких ошибок, связанных с этим, а также не мог найти другого телефона с поддержкой ICS 4.0.1/4.0.2, я подумал, может быть, я пропустил что-то тривиальное, я напишу его как ошибку и посмотрю, отвечает. – Slartibartfast
То, что я говорю, это то, что я не думаю, что это ошибка или связанная с 4.0. Это просто аппаратное обеспечение Galaxy Nexus, неспособное реагировать на определенные параметры. Попробуйте удалить все параметры и добавить их обратно по одному и посмотреть, можете ли вы найти параметр нарушения. – LuxuryMode
Размер предварительного просмотра является единственным параметром. И я убедился, что тот же код работает в Galaxy Nexus 4.0.3. – Slartibartfast