我正在制作一款采用相机的应用程序。启动时,它会执行代码以检查摄像机的功能。我做的一项检查如下:
List<String> supported_colour_effects_list = java_recording_camera_parameters.getSupportedColorEffects();
Mylog("There are "+supported_colour_effects_list.size()+" supported colour effects");
for (int i = 0;i < supported_colour_effects_list.size();i++)
{
Mylog("Colour effect: ["+supported_colour_effects_list.get(i)+"]");
}
执行此代码时,我会看到以下输出:
I/xx(11517): There are 12 supported colour effects
I/xx(11517): Colour effect: [none]
I/xx(11517): Colour effect: [mono]
I/xx(11517): Colour effect: [negative]
I/xx(11517): Colour effect: [solarize]
I/xx(11517): Colour effect: [sepia]
I/xx(11517): Colour effect: [posterize]
I/xx(11517): Colour effect: [whiteboard]
I/xx(11517): Colour effect: [blackboard]
I/xx(11517): Colour effect: [aqua]
I/xx(11517): Colour effect: [emboss]
I/xx(11517): Colour effect: [sketch]
I/xx(11517): Colour effect: [neon]
程序然后继续,我可以查看相机看到的连续预览。如果我按下按钮来发起以下代码......
java_recording_camera_parameters.setZoom(75);
java_camera_for_recording.setParameters(java_recording_camera_parameters);
然后一切都按照预期完成,您可以看到预览图像突然放大。如果我将java_recording_camera_parameters.setZoom(75);
换成java_recording_camera_parameters.setColorEffect(Camera.Parameters.EFFECT_SEPIA);
,那么当我按下相同的按钮时,我得到以下内容错误...
W/System.err(4128): java.lang.RuntimeException: setParameters failed
W/System.err(4128): at android.hardware.Camera.native_setParameters(Native Method)
W/System.err(4128): at android.hardware.Camera.setParameters(Camera.java:1551)
我不知道为什么。
答案 0 :(得分:1)
这是它的工作原理(或者不是)。在某些设备上,声明支持的某些设置会失败。有时它会因RuntimeException失败,但经常 - 静默:你在Galaxy Nexus上将预览大小设置为320x240,但回调会带回VGA帧。
某些设置与其他设置不兼容:可能是Sepia与预览尺寸不兼容,或者必须在预览停止时设置。
一个好的测试是看你是否可以在同一台设备上的内置相机应用程序中选择Sepia。