0

我正在开发三星 Galaxy Tab(7 英寸)。我的应用程序只能处于纵向模式,即我已在我的应用程序和设备设置中将其锁定为纵向模式。问题是当我尝试旋转相机预览时,它当前以错误的方向旋转了 90 度。

现在这是我的surfaceCreated

    public void surfaceCreated(SurfaceHolder holder) {
    camera = Camera.open();
    try {
        camera.setPreviewDisplay(holder);
        Camera.Parameters parameters = camera.getParameters();
        parameters.setPictureFormat(PixelFormat.JPEG);
        parameters.set("orientation", "portrait");
        //camera.setDisplayOrientation(90); 
        parameters.setRotation(90);
        camera.setParameters(parameters);
    }
    catch (IOException exception) {
        camera.release();
    }
}

camera.setDisplayOrientation(90) 似乎没有工作(它什么也没做,这就是我评论它的原因)。然而,parameters.setRotation(90) 实际上完成了工作!但它会在应用程序的一侧创建一个丑陋的“闪烁颜色”“条纹”。setDisplayOrientation() 应该对我有用,因为我正在运行 android api 8 (Froyo 2.2)!!

谷歌上有一个关于与旋转问题有关的问题http://code.google.com/p/android/issues/detail?id=1193#c26的帖子,但据我所知,它对我没有任何建议问题。

与此问题有关的任何和所有解决方案将不胜感激!谢谢!

4

3 回答 3

1

这在三星 Galaxy 标签中对我有用:

public void surfaceCreated(SurfaceHolder holder)
    {
    // The Surface has been created, acquire the camera and tell it where to draw.
    mCamera = Camera.open();

    Parameters params = mCamera.getParameters();

    if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE)
    {
    params.set("orientation", "portrait");
    mCamera.setDisplayOrientation(90);
    }

    try
    {
    mCamera.setPreviewDisplay(holder);
    }
    catch (IOException exception)
    {
    mCamera.release();
    mCamera = null;
    }

    }
于 2012-08-24T05:39:06.250 回答
0

如果您的应用程序设计为仅拍摄人像照片,那么最简单的做法是在拍摄照片后旋转图像数据,而不必担心相机设置。我不确定选项卡是否有问题(我从未尝试过旋转相机预览)但是在你拍摄后旋转图像非常简单......问题只是你需要知道哪种方式拍摄照片时,设备正在被握住。如果这不是你关心的问题,那么不要担心它:)

于 2011-04-11T08:46:04.237 回答
0

尝试这个。我编写此代码并在 Galaxy Tab 上进行测试。代码运行良好

public void surfaceCreated(SurfaceHolder holder) {

    camera = Camera.open();

    try {
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO)
        {                       
         camera.setDisplayOrientation(90);
        } else {
          Parameters parameters = camera.getParameters();
          parameters.setRotation(90);       
          camera.setParameters(parameters); 
        }

        camera.setPreviewDisplay(holder);
    } catch (IOException exception) {
        camera.release();
    }
}
于 2011-04-11T09:16:04.780 回答