该如何将屏幕设成直的
Closed this issue · 9 comments
y1787165 commented
您好,我想把屏幕设成直的,于是把
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
这行砍掉,结果相机的方向就变成反的,我Android 功力不太强,能否麻烦帮忙解惑,感谢万分
beautifulSoup commented
稍等,有点事在忙
y1787165 commented
好的,您慢来!
beautifulSoup commented
Camera 这个类的默认展示方向是横向的,它有一个setDisplayOrientation(int degrees) 方法,传入90 度就可以变成纵向的了。不过这个类现在已经被Deprecated 了,这是我很久之前写的一个demo项目,所以一直也没改,建议你换成Camera2
beautifulSoup commented
public CameraView(Context context, Camera camera) {
super(context);
Log.w("camera", "camera view");
mCamera = camera;
mHolder = getHolder();
mHolder.addCallback(CameraView.this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mCamera.setPreviewCallback(CameraView.this);
mCamera.setDisplayOrientation(90);
}
可以加在CameraView的构造函数里面或者获取到Camera对象的时候
y1787165 commented
谢谢,我成功试出来了,另外我试了下,这个 view 长宽比似乎要符合16.2比12.4,否则的话影像的比例会有偏差,请问这是正常现象吗
beautifulSoup commented
不是 你看add camera view注释下面那段 是根据屏幕长款设置 CameraView的长宽,因为你把Camera设成竖直的了,所以那里的长宽设置倒过来了,你可以相应换下就好了应该。我回家了手上没有环境,你先自己试一下吧。
y1787165 commented
beautifulSoup commented
是的,只支持几种固定尺寸 你可以google一下Android Camera 拉伸问题 上面会有解决方案
y1787165 commented
非常感谢,研究后解决了