在上述代码中,首先查询Camera.Parameters对象,以通过getSupportedColorEffects方法查看所支持的效果列表。然后,使用迭代器循环查询该效果列表,并判断其中是否有一个效果能够匹配我们想要的效果,在当前情况下是Camera.Parameters.EFFECT_SOLARIZE。如果该效果出现在列表中,那么它是获得支持的,我们可以继续操作,在Camera.Parameters对象上调用setColorEffect,并传入EFFECT_SOLARIZE常量。图2-3显示了使用中的Camera. Parameters.EFFECT_SOLARIZE效果。
其他可能的效果也以常量的形式在Camera.Parameters类中列出。
● EFFECT_NONE
● EFFECT_MONO
● EFFECT_NEGATIVE
● EFFECT_SOLARIZE
● EFFECT_SEPIA
● EFFECT_POSTERIZE
● EFFECT_WHITEBOARD
● EFFECT_BLACKBOARD
● EFFECT_AQUA
还存在用于抗条带(antibanding)、闪光灯模式(flash mode)、聚焦模式(focus mode),情景模式(scene mode)及白平衡(white balance)等参数的类似常量。
2. 更改摄像头预览大小
另一个在Camera.Parameters中特别有用的设置是能够设置预览大小。与其他的设置一样,首先将查询参数对象并获得所支持的值。在获得所支持的大小列表之后,就可以在设置之前通过遍历它来确保所想要的大小是否获得支持。
在这个示例中,我们不是指定一个精确的大小,而是选择接近但不超过一对常量的大小。图2-4展示了这个示例的输出。
...
public static final int LARGEST_WIDTH = 200;
public static final int LARGEST_HEIGHT= 200;
...