android camera.getparameters,Android 2.3.4在Camera.setParameters上崩溃

我有一个适用于大多数手机的相机应用程序,但我今天收到了用户的错误.错误说应用程序在Camera.setParameters()上崩溃我已经阅读了有关该主题的

This StackOverflow Post,但已经实现了相同的解决方案.

这是我正在使用的代码:

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {

camera.setDisplayOrientation(90);

Camera.Parameters parameters = camera.getParameters();

Camera.Size size = getBestPreviewSize(w, h);

parameters.setPreviewSize(size.width, size.height); // preview size

camera.setParameters(parameters);

camera.startPreview();

Camera.Parameters parameters = camera.getParameters();

List previewSizes = parameters.getSupportedPreviewSizes();

// You need to choose the most appropriate previewSize for your app

Camera.Size previewSize = // .... select one of previewSizes here

}

private Camera.Size getBestPreviewSize(int width, int height)

{

// Get For Photo Size

Camera.Parameters camparams = camera.getParameters();

// Find the Best Preview Size

List sizes = camparams.getSupportedPreviewSizes();

Camera.Size result=null;

int finalHeight = 0;

for (Size s : sizes) {

if (s.width <= width && s.height <= height) {

if (result == null) {

result = s;

finalHeight = s.height;

} else {

int resultArea=result.width*result.height;

int newArea=s.width*s.height;

if (newArea>resultArea) {

result=s;

finalHeight = s.height;

}

}

}

}

// Just in case...

if (result == null) {

finalHeight = height;

}

result.width = (int)(finalHeight*cameraRatio);

return result;

}

我的想法是在camera.setParameter(size.width,size.height)周围放置一个try / catch但我不知道是否会在失败时使其崩溃?

以下是在developer.android.com上发送给我的崩溃日志:

java.lang.RuntimeException: setParameters failed at

android.hardware.Camera.native_setParameters(Native Method) at

android.hardware.Camera.setParameters(Camera.java:953) at

net.feltpad.mosaic.Preview.surfaceChanged(CameraPreview.java:145) at

android.view.SurfaceView.updateWindow(SurfaceView.java:557) at

android.view.SurfaceView.dispatchDraw(SurfaceView.java:348) at

android.view.ViewGroup.drawChild(ViewGroup.java:1730) at

android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) at

android.view.ViewGroup.drawChild(ViewGroup.java:1730) at

android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) at

android.view.ViewGroup.drawChild(ViewGroup.java:1730) at

android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) at

android.view.View.draw(View.java:6988) at

android.widget.FrameLayout.draw(FrameLayout.java:357) at

android.view.ViewGroup.drawChild(ViewGroup.java:1732) at

android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) at

android.view.ViewGroup.drawChild(ViewGroup.java:1730) at

android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) at

android.view.ViewGroup.drawChild(ViewGroup.java:1730) at

android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) at

android.view.ViewGroup.drawChild(ViewGroup.java:1730) at

android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) at

android.view.ViewGroup.drawChild(ViewGroup.java:1730) at

android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) at

android.view.View.draw(View.java:6988) at

android.widget.FrameLayout.draw(FrameLayout.java:357) at

android.view.ViewGroup.drawChild(ViewGroup.java:1732) at

android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) at

android.view.View.draw(View.java:6988) at

android.widget.FrameLayout.draw(FrameLayout.java:357) at

com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1961)

at android.view.ViewRoot.draw(ViewRoot.java:1602) at

android.view.ViewRoot.performTraversals(ViewRoot.java:1323) at

android.view.ViewRoot.handleMessage(ViewRoot.java:1961) at

android.os.Handler.dispatchMessage(Handler.java:99) at

android.os.Looper.loop(Looper.java:150) at

android.app.ActivityThread.main(ActivityThread.java:4333) at

java.lang.reflect.Method.invokeNative(Native Method) at

java.lang.reflect.Method.invoke(Method.java:507) at

com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) at

dalvik.system.NativeStart.main(Native Method)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值