Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在AndroidManifest.xml中指定禁止在小于4.7英寸的设备上安装?_Android_Android Manifest_Google Play_Screen Size - Fatal编程技术网

如何在AndroidManifest.xml中指定禁止在小于4.7英寸的设备上安装?

如何在AndroidManifest.xml中指定禁止在小于4.7英寸的设备上安装?,android,android-manifest,google-play,screen-size,Android,Android Manifest,Google Play,Screen Size,我有一款在7英寸平板电脑上感觉最好的游戏,在10英寸平板电脑和5英寸三星笔记本大小的设备上感觉可以接受。在Nexus4或S3大小的手机上,它甚至还可以说是相当有趣的。在任何更小的东西上玩一点也不好玩。在这种情况下,如何编写清单,使其能够安装在从4.7英寸设备到10英寸平板电脑的任何设备上,同时又受到小型手机的限制 编辑 退一步说,这个问题的原因是因为我发现Android开发者网站上的文档令人难以置信地困惑和冲突。让我们举一些例子来说明混淆的来源: 让我们以两个不同的设备为例 机器人3 4英寸显

我有一款在7英寸平板电脑上感觉最好的游戏,在10英寸平板电脑和5英寸三星笔记本大小的设备上感觉可以接受。在Nexus4或S3大小的手机上,它甚至还可以说是相当有趣的。在任何更小的东西上玩一点也不好玩。在这种情况下,如何编写清单,使其能够安装在从4.7英寸设备到10英寸平板电脑的任何设备上,同时又受到小型手机的限制

编辑

退一步说,这个问题的原因是因为我发现Android开发者网站上的文档令人难以置信地困惑和冲突。让我们举一些例子来说明混淆的来源:

让我们以两个不同的设备为例

机器人3

  • 4英寸显示器
  • 540x960像素
  • 275 ppi
查看支持屏幕的文档,我们可以推断

  • 在4英寸时,它可能位于“大”的裸露边缘,但可能为中等
  • 在540x960时,它在“大”的最小值范围内
  • 在275 ppi时,它声称是一个hdpi屏幕
然而,这个设备比我想要支持的要小得多。。。但是文档显示,在三分之二的情况下,这个设备有一个“大”屏幕。4英寸屏幕“大”这个词的定义并不明智。现在,让我们更进一步

Nexus 4

  • 4.7英寸显示器
  • 768x1280像素
  • 318 ppi
查看支持屏幕的文档,我们可以推断

  • 此屏幕的物理尺寸正好位于中型和大型屏幕的边界上
  • 像素尺寸表明它可能是xlarge
  • ppi指示它是一个xhdpi设备
同样,4.7英寸的屏幕“xlarge”的定义也不合理。。。屏幕的大小可能刚好足以让游戏变得有趣,但它是一个“中等”屏幕吗?大屏幕?你怎么可能知道

上述两款手机都是“中档”吗?机器人是“中型”的,而Nexus是“大型”的吗?为什么?如果Nexus是“大”的,那么它与同样应该是“大”的7英寸平板电脑有什么区别呢

还有一个事实,即从3.2版开始,文档声称支持屏幕/大小的内容就被弃用了


但是,如果一个人想同时支持旧手机(假设屏幕大小以英寸为单位)和新平板电脑,或者如果它被隐藏在森林深处,那么在它的位置上使用什么,就没有明确的指导。有人能清楚地说明cretieria真正重要的是什么,以及为什么一个给定的设备会适合给定的过滤器或失败吗?

我认为基于谷歌文档,这将满足您的要求(5英寸或更小):


或使用此(4.7英寸及更小):


我推荐第二种方法,因为它更准确

536是如何计算的?根据我们的数据(高度x宽度):

  • xlarge屏幕至少为960dp x 720dp
  • 大屏幕至少为640dp x 480dp
  • 正常屏幕至少为470dp x 320dp
  • 小屏幕至少为426dp x 320dp
(720-480)/(7-4)=80480+(80*0.7)=536

不要担心“不推荐的警告”,因为新建议的方法适用于平板电脑应用程序(IMO),当游戏可能在全屏模式下运行时,UI不是全屏的,屏幕底部和顶部的一些空间用于标题栏和/或背面、菜单等按钮

从谷歌文档中查看此信息,网址为:

注意:使用这些限定符指定的大小不是实际的屏幕大小。更确切地说,尺寸是指活动窗口可用的宽度或高度(单位为dp)。Android系统可能会将部分屏幕用于系统UI(如屏幕底部的系统栏或顶部的状态栏),因此部分屏幕可能无法用于您的布局。因此,您声明的大小应该特别是您的活动所需的大小。在声明系统UI为布局提供的空间量时,系统会占用系统UI使用的任何空间。还要注意的是,操作栏被视为应用程序窗口空间的一部分,尽管您的布局没有声明它,因此它会减少布局的可用空间,您必须在设计中考虑它

在这种情况下,如何编写清单,使其能够安装在从4.7英寸设备到10英寸平板电脑的任何设备上,同时又受到小型手机的限制

从技术上讲,你不能

android:requiresSmallestWidthDp
最接近您的目标。由于这是以密度无关像素测量的,并且密度无关像素应该是1/160英寸,因此可以通过乘以160得出任意英寸数的
dp

但是,根据您的要求,这不是指对角线。这是指最短边的宽度(例如,纵向宽度、横向高度)

因此,如果你能用最小宽度来重新表达你的愿望,请使用android:requiresMallestWidthDP,并祈祷当提到Google Play是否尊重它时,文档会一团糟。当您将应用程序上传到Play Store开发者控制台并查看哪些设备支持它时,您将能够确定——找到一些您知道的设备太小(但应运行应用程序),并查看是否已对其进行过滤

如果android:requiresMallestWidthDP的文档是正确的,并且Play Store出于过滤目的(grrrrr…)忽略了它,那么您
<compatible-screens>

    <screen android:screenSize="large" android:screenDensity="ldpi" />
    <screen android:screenSize="large" android:screenDensity="mdpi" />

    <screen android:screenSize="xlarge" android:screenDensity="ldpi" />
    <screen android:screenSize="xlarge" android:screenDensity="mdpi" />
    <screen android:screenSize="xlarge" android:screenDensity="hdpi" />
    <screen android:screenSize="xlarge" android:screenDensity="xhdpi" />

</compatible-screens>
<supports-screens android:smallScreens="false"
                  android:normalScreens="true"
                  android:largeScreens="true"
                  android:xlargeScreens="true"
                  android:requiresSmallestWidthDp="536" />