我正在开发/用于三星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)似乎没有工作(它什么也没做,这就是为什么我已经评论过它)。但是参数.setRotation(90)确实完成了工作!但它会在应用程序的侧面创建一个丑陋的“条纹”“闪烁的颜色”。 setDisplayOrientation()应该对我有用,因为我正在运行android api 8(Froyo 2.2)!!
google上有一个关于轮换问题的问题http://code.google.com/p/android/issues/detail?id=1193#c26,但据我所知,它并没有为我的问题提出任何建议。
非常感谢任何与此问题相关的解决方案!谢谢!
答案 0 :(得分: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;
}
}
答案 1 :(得分:0)
如果您的应用程序仅设计为拍摄人像照片,那么最简单的方法是在拍摄照片后旋转图像数据,而不用担心相机设置。我不确定Tab是否有错误(我从未试图旋转相机预览)但是在你拍摄后旋转图像非常简单......问题是只有你需要知道哪种方式照片拍摄时,设备正在举行。如果这不是你的问题,那么不要担心它:)
答案 2 :(得分: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();
}
}