如何在 Adob​​e AIR 中检测 Android 操作系统版本?

Posted

技术标签:

【中文标题】如何在 Adob​​e AIR 中检测 Android 操作系统版本?【英文标题】:How can I detect the Android OS version in Adobe AIR? 【发布时间】:2012-07-02 20:11:51 【问题描述】:

ios 上,Adobe AIR 的 Capabilities.os 可能类似于 "iPhone OS 5.1.1 iPad3,1" - 非常清楚地标识操作系统版本以及设备型号。在 android 上,它看起来更像是“Linux 2.6.35.7-59465-g42bad32”。Wikipedia 列表以下适用于 android 版本的 Linux 内核:

2.6.29:1.6、2.0、2.1 2.6.32:2.2x 2.6.35:2.3x 2.6.36: 3.x 3.0.1:4.0x

这些是一成不变的还是某些系统会报告不同的 Linux 版本?

有没有更好的方法来使用 AIR 和 ActionScript 确定 Android 操作系统版本?

出于我的目的,我需要区分 4.0(冰淇淋三明治)和 4.1(果冻豆)。我认为 4.1 使用 Linux 内核 3.1.10 - 任何人都可以确认吗?

【问题讨论】:

我怀疑这些是否绝对是一成不变的,但我想说大多数用户从收到它时就没有更改它可能是一个安全的赌注,我的猜测是即使运营商修改操作系统,他们不会弄乱内核(不过只是有根据的猜测)。另一种直觉是,他们可能会切换操作系统或内核以使其与他们选择的硬件保持兼容。 出于好奇,您为什么要尝试确定它是 4.0/4.1,那是不是为您要访问的功能公开了一个属性? Adobe 说“如果存在更具体的能力属性,不要使用 Capabilities.os 来确定基于操作系统的能力。基于操作系统的能力是一个坏主意,因为如果应用程序不考虑它可能会导致问题所有潜在的目标操作系统。而是使用与您正在测试的功能相对应的属性。有关详细信息,请参阅 Capabilities 类描述。" AIR 3.3 中有一个错误,它使文本仅在 4.1 中消失。解决方法很丑陋,所以我只想在必要时使用它。我同意按操作系统确定功能是一个坏主意,但如果 AIR 在不同操作系统中的行为不同,我需要能够确定哪个正在运行。 【参考方案1】:

好吧,我有另一个解决方案。我发现这个 AS3 类通过抓取一个名为“/system/build.prop”的 Android 系统文件来确定 Android 的版本。

您还可以获得其他信息,例如型号、品牌、SDK 版本和 CPU

看一看:https://github.com/funky-monkey/Android-Native-Device-Info

有关 iOS 的信息,另请参阅:

http://forum.starling-framework.org/topic/detect-device-modelperformance

【讨论】:

rafaelfaria 最近发布了一个关于八哥论坛主题的课程,这正是我想要的。它使用适用于 Android 的 Funky Monkey build.prop 解决方案,并且也有最新的 iOS 设备。谢谢!【参考方案2】:

我可以确认通过内核检测Android版本不是那么可靠。我试图将 4.0 与以前的版本区分开来,虽然大多数 ICS 设备都有 3.x Linux 内核,但一些升级的平板电脑,如 Acer Iconia A500(最初附带 Android 3.0 Honeycomb)仍然有 2.x Linux 内核升级到 Android 4.0 ICS 后。所以我想升级到 Jelly Bean 的设备可能会发生同样的情况。

我想获取 Android 版本的一种可靠方法是创建一个 Native Extension,它调用原生 Android API 来获取该信息(请参阅:How can I check the system version of Android?)。

【讨论】:

以上是关于如何在 Adob​​e AIR 中检测 Android 操作系统版本?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Adob​​e air 在静音模式下检测设备并与之交互 - AS3

使用 Adob​​e AIR 获取任何 USB 磁盘信息

如何使用 Adob​​e AIR 在 Android 中使用原生 java 代码制作应用程序?

使用 Adob​​e AIR 下载文件

在 Adob​​e AIR 中读取未知编码的文本文件

如何使用适用于 Android 的 Adob​​e AIR 设置 Admob