产生这种旋转的原因是Camera对象假定方向是水平或横向模式。修正旋转的最简单方法是使活动以横向模式显示。为此,可以在活动的onCreate方法中添加以下代码。
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
现在摄像头预览将会正确地显示,如图2-2所示。但是,我们的应用程序现在被限定在横向模式。
前面提及,Camera类有一个嵌套的Camera.Parameters类。这个类有一系列重要的属性或设置,可以用来改变Camera对象运作的方式。其中一个现在能够帮助我们的参数可用来处理在预览时遇到的旋转/横向问题。
可以对Camera对象使用的Parameters做如下修改:
Camera.Parameters parameters = camera.getParameters();
parameters.set("some parameter", "some value");
// 或者
parameters.set("some parameter", some_int);
camera.setParameters(parameters);
此处有两个不同的通用Parameters.set方法。第一个方法的参数名称和值都采用字符串,而第二个方法的参数名称为字符串,但是值为整数。
应该在创建Camera对象和指定它的预览Surface之后立即在surfaceCreated方法中设置Parameters。