2010-09-11 103 views
6

我想开发一个使用相机的应用程序。到目前为止,它一直运转良好,除了我无法强制定位为“肖像”。如果我强制将所有活动强制为“风景”,似乎工作得很好,因为相机预览似乎适合风景。使用相机在纵向方向

无论如何在纵向模式下使用相机?

+0

是G1设备或非G1设备上G1S有用于定向 – 2010-09-11 16:13:55

+0

弗雷德嗨显示摄像头预览错误,我使用三星Galaxy S ... – paperclip 2010-09-12 15:40:30

回答

6

Android装置V2.2和上述含有与API以旋转显示到肖像。 2.2以下的设备仅适用于景观。您最好的选择是检测设备是否为2.2并旋转90度。回到2.2以下的设备的景观。好消息是大多数Android设备都在2.2以上。

看看我的答案在这里获得更多信息:

Camera is wrong unless keyboard is open

+0

好的知识,我可以看到很多人没有找到解决方案有这个问题。 – 2011-11-28 18:12:56

+0

您可能需要在应用中添加一项设置,以允许用户强制使用风景。我已经测试过,似乎不可能在某些设备上强制使用肖像。到目前为止,我知道这些设备无法设置为人像,即使使用Android 2.2+:“GT-S6102”,“GT-S5360”,“GT-S5660”,“YP-G1”,“YP-G70”。我相信还有更多:/ – 2012-09-07 00:04:47

0

编辑:当我回答了这个问题并且回顾了这个问题后,我意识到这个问题不属于Adobe AIR。

Adob​​e表示:

在可以更改屏幕方向的设备,如手机,连接到摄像机的视频对象将只显示直立视频在景观方面的取向。因此,移动应用在显示视频时应该使用横向方向,并且不应该自动旋转。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html

如果你真的想用在人像模式下,相机,我的建议是旋转的视频对象。

下面是由在度的角度旋转的视频对象(_视频)(源从其他地方拉到计算器)的一些示例代码:

 var matrix:Matrix = _video.transform.matrix; 
     var rect:Rectangle = _video.getBounds(this); 
     matrix.translate(- (rect.left + (rect.width/2)), - (rect.top + (rect.height/2))); 
     matrix.rotate((angle/180)*Math.PI); 
     matrix.translate(rect.left + (rect.width/2), rect.top + (rect.height/2)); 
     _video.transform.matrix = matrix; 
3
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; 
} 

} 
相关问题