diff options
Diffstat (limited to 'base/sys_info_android.cc')
-rw-r--r-- | base/sys_info_android.cc | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/base/sys_info_android.cc b/base/sys_info_android.cc index b84b557..d2bfbcb 100644 --- a/base/sys_info_android.cc +++ b/base/sys_info_android.cc @@ -12,6 +12,38 @@ namespace { +// Default version of Android to fall back to when actual version numbers +// cannot be acquired. +// TODO(dfalcantara): Keep this reasonably up to date with the latest publicly +// available version of Android. +static const int kDefaultAndroidMajorVersion = 4; +static const int kDefaultAndroidMinorVersion = 0; +static const int kDefaultAndroidBugfixVersion = 3; + +// Parse out the OS version numbers from the system properties. +void ParseOSVersionNumbers(const char* os_version_str, + int32 *major_version, + int32 *minor_version, + int32 *bugfix_version) { + if (os_version_str[0]) { + // Try to parse out the version numbers from the string. + int num_read = sscanf(os_version_str, "%d.%d.%d", major_version, + minor_version, bugfix_version); + + if (num_read > 0) { + // If we don't have a full set of version numbers, make the extras 0. + if (num_read < 2) *minor_version = 0; + if (num_read < 3) *bugfix_version = 0; + return; + } + } + + // For some reason, we couldn't parse the version number string. + *major_version = kDefaultAndroidMajorVersion; + *minor_version = kDefaultAndroidMinorVersion; + *bugfix_version = kDefaultAndroidBugfixVersion; +} + int ParseHeapSize(const base::StringPiece& str) { const int64 KB = 1024; const int64 MB = 1024 * KB; @@ -51,6 +83,36 @@ int GetDalvikHeapSizeMB() { namespace base { +std::string SysInfo::GetAndroidBuildCodename() { + char os_version_codename_str[PROP_VALUE_MAX]; + __system_property_get("ro.build.version.codename", os_version_codename_str); + return std::string(os_version_codename_str); +} + +std::string SysInfo::GetAndroidBuildID() { + char os_build_id_str[PROP_VALUE_MAX]; + __system_property_get("ro.build.id", os_build_id_str); + return std::string(os_build_id_str); +} + +std::string SysInfo::GetDeviceName() { + char device_model_str[PROP_VALUE_MAX]; + __system_property_get("ro.product.model", device_model_str); + return std::string(device_model_str); +} + +void SysInfo::OperatingSystemVersionNumbers(int32* major_version, + int32* minor_version, + int32* bugfix_version) { + // Read the version number string out from the properties. + char os_version_str[PROP_VALUE_MAX]; + __system_property_get("ro.build.version.release", os_version_str); + + // Parse out the numbers. + ParseOSVersionNumbers(os_version_str, major_version, minor_version, + bugfix_version); +} + int SysInfo::DalvikHeapSizeMB() { static int heap_size = GetDalvikHeapSizeMB(); return heap_size; |