如何让自己的应用支持amazon的Kindle Fire

来源:互联网 发布:淘宝营销软件有用吗 编辑:程序博客网 时间:2024/04/28 19:35

今天客户反馈说,还是不能支持 Kindle Fire,也就是说上次的工作,只是自己想当然地认为实现了对Kindle Fire的支持,虽然 Galaxy Tab 7 与 Kindle Fire 7大小,分辨率都一样,

本以为支持了前者,后者自然也就是支持,今天发现,这个观点是错误的!


上次的改动,用Galaxy tab 测试过了,布局都ok。 还用模拟器测试了一下,也是ok的,

模拟器配置信息如下:


自己也试着为Kindle Fire 建立了一个模拟器:


结果app还是没有能够支持 kindle Fire 。 今天找到了官方的文档:


We also recommend that you test your app on your own and submit an update if you discover any problems. It is possible to configure a standard Android emulator to simulate the Kindle Fire device platform. You should configure your emulator with the following characteristics:

  • *Width: 600px
  • *Height: 1024px
  • Abstracted LCD Density: 169
  • Target: Android 2.3.4 - API Level 10
  • RAM: 512 MB

*Note: The device will reserve 20px to display a soft key menu, making the effective portrait resolution 1004px high x 600px wide and the effective landscape resolution 580px high x 1024px wide.

这跟我以前的模拟器设置不一样,所以才有了偏差。其实上周我就看到这一段说明,可是没有明白 Galaxy Tab 为什么 设置成 density = 240 ???   本来以为 如果 app支持Galaxy Tab模拟器的话,那么一定不会支持 真机。 可是真机测试结果表明一样支持得很好,当时就感觉非常的奇怪。 为什么 density = 240 要设置成这样。还记得以前一个项目,要支持HTC EVO 3D 这样的手机(resolution: 960X540)发现用模拟器时 density 也要设置成 240这种高密度才行。自己计算一下手机屏幕的密度显然不是这一个值。


不知道为什么 ???


用官方的说明来配置,发现显示出来的效果跟客户给你的截图压根不一致!不一样,也不知道为什么??? 纠结啊!

上网找了找发现也有人跟我遇到了同样的问题:

http://stackoverflow.com/questions/8307084/android-kindle-fire-not-showing-applications-graphics-correctly

http://stackoverflow.com/questions/8253449/how-to-make-emulator-for-the-kindle-fire-in-android



终于找了一个与我的情况特别相符合的帖子:

http://stackoverflow.com/questions/7895931/android-emulator-reports-600x1024-mdpi-as-xlarge


从这个帖子中,可以得出: 在真机(Kindle Fire)环境下,app用的是layout-large(由于自己的项目中没有这样的文件夹,但是有layout-1024X600,所以它就用了layout-1024X600)资源文件夹,而在模拟器当中用的是layout-xlarge资源夹。

这也就解释了“ 为什么自己根据amazon文档提示的配置模拟器显示出来的效果与用户反馈的真机截图不一样 ” 的疑问!!!


试了一下,暂时先去除layout-xlarge资源文件夹,发现在simulator里运行的页面显示结果与用户的feedback 是一样的哎,太好了,真 是太好了!


那只有暂时先删除layout-xlarge资源文件夹,建一个layout-large,结果不发现在Galaxy Tab上,它只认layout-large,不再认layout-1024X600了,这就矛盾了,如何既保持对Galaxy Tab 的支持,也能再支持 Kindle Fire能 ???? 两者的区别现在是,模拟器的配置(Galaxy Tab 的Abstracted LCD Density: 是 240 ,而kindle Fire 根据官方文档的要求 是 Abstracted LCD Density: 169 )。


解决方案,再加标识符啦,不建layout-large,而改建layout-large-hdpi 和layout-large-mdpi,一个对应Galaxy Tab ,一个对应 Kindle Fire. 

那这个density,到底是按什么来的的呢?我以前的计算方法是不是又不对了,真机上测试结果会是什么样子的呢???



先保留参考资料:

https://developer.amazon.com/help/faq.html#KindleFire