2010-02-04 22 views
4

내 프로그램이 Android 1.5를 타겟팅합니다. 장치 자체에 대한 시스템 정보를 검색하고 싶습니다. API를 검색하여 유용한 클래스를 찾지 못했습니다. 지금까지 찾은 것 중 가장 좋은 것은 Runtime 클래스와 몇 가지 Build.* 시스템 속성입니다.Android에서 기기 정보 가져 오기

기기의 메모리 총량, 사용 가능한 메모리의 양을 구체적으로 나타 내기 때문에 Runtime 클래스가 나를 제공하고 있는지 여부를 알 수없는 사용 가능한 메모리 양과 같은 정보를 얻을 수 있기를 바랍니다. JVM에 대한 정보)와 프로세서에 대한 정보를 제공합니다.

이 정보를 사용할 수 있습니까? 그렇다면 어디에서 찾을 수 있습니까?

답변

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를 조사 할 수 있습니다.

+0

이 응용 프로그램은 여러 장치에서 최대의 호환성을 제공하기 위해 Android 1.5 용으로 설계되었습니다. 이는 제어 할 수없는 제약 사항입니다. Build.CPU_ABI를 사용하는 것은 (1.6에서 시작하는) 옵션이 아니며, 2.0에서 도입 된 UI도 아닙니다. 실용적인 상황에서 그 값이 상당히 쓸모 없더라도 장치에 대한 통계를보고하기 위해 총 메모리와 여유 메모리가 필요합니다. NDK 사용에 대해 살펴 보 겠지만 기능이 상당히 제한되어 있고 주로 계산 집약적 인 작업을 능률화하는 데 주로 사용되었다는 인상을 받았습니다. – Brandon