Android 笔记 关于camera2使用的一些问题

来源:互联网 发布:淘宝网如何刷销量 编辑:程序博客网 时间:2024/06/03 16:48

camera2使用的一些问题、

这几天一直在研究camera2,但是实际测试的时候发现一些很令人头疼的问题。

分辨率的设置。
我希望能设置不同的预览分辨率,然后对应不同的照片分辨率,其实主要就两种,一个是16:9的宽屏,一个是4:3的普通。其他实际可用的分辨率也只有最低档的两个,比例也是4:3,在某些情况下可以用,其他的分辨率大可不用理会。

但是我发现设置最高的4:3分辨率,把textureView也设置成4:3的时候,大部分时候可以正常显示,但是设置成16:9,textureView也设置成16:9的时候却不能正常显示,图像时拉伸的。旋转手机屏幕会发现,图像不是被切割成16:9,而是被切割成了几乎是个正方形,然后却在一个16:9的view里面显示。所以图像是拉伸的。
这个状况怎么也解决不了。

同时,我设置成前置摄像头,因为默认最大输出分辨率是16:9(后置的默认最大输出是4:3),所以我把view也设置成16:9,大部分时候可以正常显示,如果设置成4:3,对应view也设置成4:3,也变成拉伸的了,无法正常显示。

另外还有一个诡异的状况。我安装了官网的example,就是那个camera2basic,大部分时候可以正常显示4:3的预览图像。
但是如果我自己的APP设置其他分辨率并且预览图像变成拉伸了的以后,切换回camera2basic,图像也扭曲拉伸了。
我猜测这样的原因是跟摄像头本身有关,或者某个系统内全局变量的问题,只有这样才可能影响到两个不相关的APP。但是具体原因不得而知。

还有一点,上次也提到,就是说,在6.0的模拟器上可以运行的,在5.0模拟器和APP上却不能运行。

关于手动模式
camera2的介绍里面说,新API拥有最全的手动模式设置(最复杂的设置)。但是实际操作的时候发现,很多设置没有效果,包括比如ISO,对焦模式等等。我测试用的是Samsung NOTE3, 5.0系统。
从网上搜索到的信息看,很多人测试CAMERA2的时候,NEXUS系列手机可以匹配,但是Samsung的手机不行,不能手动模式,并且图像也是拉伸的(没错,跟我的图像扭曲一样的那种)

因此,我估计这是跟系统有关的。即便都是5.0的系统,因为厂商定制的原因,就造成了这种状况。

我找到了一个叫Manual Camera的APP,介绍说是全面使用新Camera2 API,并且支持最全面手动模式。然而,打开以后就提示我,我的手机不支持手动模式。只有极少部分设置可以调整,不能手动对焦。

最重要的一点,分辨率设置的状况跟我自己调试APP的时候一样:4:3最大分辨率,预览正常,16:9分辨率,扭曲拉伸。
三星自带的相机APP可以设置分辨率,不同比率的分辨率完全正常。大概是使用的旧API的缘故。

总结
因为Android系统这种分散的特点,在一个手机上完美运行的APP,到另外一个手机上可能不能正常运行,即便系统版本完全相同。

越是新出现的API,越可能导致这种状况。

所以,我认为在不影响功能的情况下,尽量使用旧API。兼容性更好。

因为开发APP的目的是提供功能,不是炫耀技能。功能一样,用什么API完全没有区别。

很多厂商使用的硬件也有区别,功能的支持跟硬件密不可分。

所以,下阶段的目标是,使用旧API测试一下camera功能。

0 0
原创粉丝点击