beautifulSoup/RtmpRecoder

该如何将屏幕设成直的

Closed this issue · 9 comments

您好,我想把屏幕设成直的,于是把

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

这行砍掉,结果相机的方向就变成反的,我Android 功力不太强,能否麻烦帮忙解惑,感谢万分

稍等,有点事在忙

好的,您慢来!

Camera 这个类的默认展示方向是横向的,它有一个setDisplayOrientation(int degrees) 方法,传入90 度就可以变成纵向的了。不过这个类现在已经被Deprecated 了,这是我很久之前写的一个demo项目,所以一直也没改,建议你换成Camera2

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对象的时候

谢谢,我成功试出来了,另外我试了下,这个 view 长宽比似乎要符合16.2比12.4,否则的话影像的比例会有偏差,请问这是正常现象吗

不是 你看add camera view注释下面那段 是根据屏幕长款设置 CameraView的长宽,因为你把Camera设成竖直的了,所以那里的长宽设置倒过来了,你可以相应换下就好了应该。我回家了手上没有环境,你先自己试一下吧。

是这样的,我把这个 view 设成全萤幕了,但是比例跟一般相机相差满多的,我在猜会不会是 camera 抓下来的大小是固定的关系,这边我给个两张图来看看比较清楚

2016-10-10 12 05 47

2016-10-10 12 05 38

是的,只支持几种固定尺寸 你可以google一下Android Camera 拉伸问题 上面会有解决方案

非常感谢,研究后解决了