【发布时间】:2010-10-14 16:05:14
【问题描述】:
我已经在从 1.5 到 2.2 的所有 Android SDK 上测试了我的应用程序,并且我的活动中的相机代码工作正常。在具有 2.1 的设备上运行它也可以正常工作。但同一应用程序在 HTC Desire 和 Nexus One 上无法与 2.2 一起使用,并且应用程序崩溃。任何想法为什么它们可能会发生?
我正在使用 import android.hardware.Camera;。
在 onCreate 里面我有这个:
preview = (SurfaceView) findViewById(R.id.preview);
previewHolder = preview.getHolder();
previewHolder.addCallback(surfaceCallback);
previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
而回调是
SurfaceHolder.Callback surfaceCallback = new SurfaceHolder.Callback() {
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
camera.stopPreview();
camera.release();
camera = null;
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
camera = Camera.open();
try {
camera.setPreviewDisplay(previewHolder);
} catch (Throwable t) {
Log.e(TAG, "Exception in setPreviewDisplay", t);
Toast.makeText(CameraActivity.this, t.getMessage(),
Toast.LENGTH_LONG).show();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
Camera.Parameters parameters = camera.getParameters();
parameters.setPreviewSize(width, height);
camera.setParameters(parameters);
camera.startPreview();
}
};
【问题讨论】:
-
一般来说,大多数涉及 Android 崩溃的 SO 问题最终都会被忽略,除非您包含来自 Logcat 的错误跟踪的复制粘贴。这很容易做到,而且通常可以帮助其他开发人员快速发现问题。
-
我的 SDK 和 Android 2.1 没有崩溃。所以在 logcat 中看不到任何错误(我在 SDK 中尝试过,它有效)。在几百公里外的朋友的手机上崩溃。 :(
标签: android camera android-2.2-froyo