首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >响应本地Android get设备的比率

响应本地Android get设备的比率
EN

Stack Overflow用户
提问于 2018-11-25 13:09:09
回答 1查看 5.5K关注 0票数 4

我使用的相机,来自expo包,我有困难的相机视图失真。我的手机有2:1比率,这是不标准的.

当我使用相机的getSupportedRatiosAsync方法时,我得到了各种比率,比如1:12:14:316:9,但是只有2:1看起来很好。

如何选择符合设备自然分辨率的比率?有没有办法,访问设备的首选比率?或者它周围是否有任何黑客,比如总是选择16:9,让相机组件添加黑色边距,而实际设备的比率与16:9不匹配

编辑:

我的电话分辨率是2196x1080,所以正确的比率应该是2:1。但是我无法想出一个计算2196x1080=>2:1的函数,因为(2 * 1080) !== 2196

有什么办法可以推断出最好的比率,即使是这样愚蠢的决议?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-25 21:17:20

在三星S9上,18.5:9的屏幕纵横比非常接近2:1。如果您不使用隐藏导航条,则用于相机预览的区域可能更接近所支持的2:1

但是,如果您想要在所有具有不同屏幕纵横比和不同支持的相机纵横比的设备上工作,您必须将预览裁剪到您的窗口,参见例如https://github.com/waitopiggu/rn-camera-android-cropping-test

至于选择最佳的相机纵横比,你是对的,准确的匹配可能无法达到;让我们找出最接近我们想要的那一个:

代码语言:javascript
复制
const wantedRatio = height/width
var bestRatio = 0;
var bestRatioError = 100000;
for (i in ratios) {
    const r = ratios[i].split(":")
    if (abs(wantedRatio - r[0]/r[1]) < bestRatioError) {
        bestRatioError = abs(wantedRatio - r[0]/r[1])
        bestRatio = ratios[i]
    }
}

this.setState({
    bestRatio
})
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53467776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档