我正在使用 Android 来处理增强现实应用程序,并且我实现了相机代码。
我当前的基本 SDK 版本是 1.6。有了这个,我的应用程序在操作系统版本高达 1.6 的设备上运行良好,但在操作系统 2.0 及更高版本上出现问题..
有什么解决办法吗?
谢谢。
最佳答案
我用谷歌搜索并得到了以下解决方案。用下面的方法替换你的表面更改方法
private static Method getSupportedPreviewSizes = null;
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
try {
Camera.Parameters parameters = camera.getParameters();
Integer version = Integer.parseInt(Build.VERSION.SDK);
if (version >= Build.VERSION_CODES.ECLAIR) {
try {
getSupportedPreviewSizes = Parameters.class.getMethod(
"getSupportedPreviewSizes", (Class[]) null);
/* success, this is a newer device */
} catch (NoSuchMethodException nsme) {
/* failure, must be older device */
}
Object supportedFormats = getSupportedPreviewSizes.invoke(
parameters, (Object[]) null);
List<Size> sizes;
if (supportedFormats instanceof List<?>) {
sizes = (List<Camera.Size>) supportedFormats;// params.getSupportedPreviewSizes();
Size optimalSize = getOptimalPreviewSize(sizes, w, h);
parameters.setPreviewSize(optimalSize.width,
optimalSize.height);
}
} else {
parameters.setPreviewSize(100, 100);
}
parameters.setPictureSize(320, 480);
camera.setParameters(parameters);
camera.startPreview();
} catch (Exception e) {
e.printStackTrace();
}
}
关于android - Android OS 2.0 及更高版本的相机预览出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4049341/