在安卓系统上获取设备信息

5
我的程序针对Android 1.5。我想要获取有关设备本身的系统信息。通过搜索API,我找到的有用类很少,目前最好的是Runtime类和一些Build.*系统属性。
我想要能够获取诸如设备上总内存量、可用内存量(我不知道Runtime类是否实际给出了这个信息,因为它特别指的是JVM可用内存),以及处理器信息等信息。
这些信息是否可用,如果可以,我应该在哪里找到它们?
1个回答

3
“总内存量”是相当没有意义的(例如,G1有192MB的物理RAM,其中在不同版本中核心和应用程序之间可用的为90-100MB,但这不包括用于窗口缓冲区和其他各种事物的内存,每个Java应用程序的堆限制为16MB,因此系统可用的RAM更多地涉及可以同时运行多少进程)。
“可用内存量”真的非常没有意义。我们通常尝试让尽可能多的应用程序保持运行状态,只要有可用内存,因此在那之间和正常的Linux缓存之间通常几乎没有空闲内存。如果您查看内核中的原始空闲内存,您将看到随着应用程序启动并使用一些内存而下降,然后其他应用程序被清除导致其跳回来,直到缓存和其他事物有机会将其吞噬回来,变化得非常疯狂。
目前我想到的最好方法来查看系统的内存状态是在2.0中引入的“正在运行的服务”UI。是的,在底部的内存信息对大多数人来说都非常微妙且毫无意义;我们应该试图找出如何改进它。 :)
您可以通过android.os.Build.CPU_ABI获得NDK代码的CPU架构。这为您提供了CPU架构的基线,但是像CPU是否支持NEON指令之类的信息。对于这种信息,您可以使用NDK运行一些本地代码来询问CPU。

该应用程序正在设计为Android 1.5,以实现跨设备的最大兼容性,这是我无法控制的限制。使用Build.CPU_ABI不是一个选项(从1.6开始可用),引入于2.0的UI也不是一个选项。我需要总内存和可用内存的数量,以报告有关设备的统计信息,即使这些值在任何实际情况下都相当无价值。我将研究使用NDK,但我认为它的功能相当有限,主要用于简化计算密集型操作。 - Brandon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接