MCPcopy Index your code
hub / github.com/RustPython/RustPython / android_ver

Function android_ver

Lib/platform.py:575–609  ·  view source on GitHub ↗
(release="", api_level=0, manufacturer="", model="", device="",
                is_emulator=False)

Source from the content-addressed store, hash-verified

573 "AndroidVer", "release api_level manufacturer model device is_emulator")
574
575def android_ver(release="", api_level=0, manufacturer="", model="", device="",
576 is_emulator=False):
577 if sys.platform == "android":
578 try:
579 from ctypes import CDLL, c_char_p, create_string_buffer
580 except ImportError:
581 pass
582 else:
583 # An NDK developer confirmed that this is an officially-supported
584 # API (https://stackoverflow.com/a/28416743). Use `getattr` to avoid
585 # private name mangling.
586 system_property_get = getattr(CDLL("libc.so"), "__system_property_get")
587 system_property_get.argtypes = (c_char_p, c_char_p)
588
589 def getprop(name, default):
590 # https://android.googlesource.com/platform/bionic/+/refs/tags/android-5.0.0_r1/libc/include/sys/system_properties.h#39
591 PROP_VALUE_MAX = 92
592 buffer = create_string_buffer(PROP_VALUE_MAX)
593 length = system_property_get(name.encode("UTF-8"), buffer)
594 if length == 0:
595 # This API doesn’t distinguish between an empty property and
596 # a missing one.
597 return default
598 else:
599 return buffer.value.decode("UTF-8", "backslashreplace")
600
601 release = getprop("ro.build.version.release", release)
602 api_level = int(getprop("ro.build.version.sdk", api_level))
603 manufacturer = getprop("ro.product.manufacturer", manufacturer)
604 model = getprop("ro.product.model", model)
605 device = getprop("ro.product.device", device)
606 is_emulator = getprop("ro.kernel.qemu", "0") == "1"
607
608 return AndroidVer(
609 release, api_level, manufacturer, model, device, is_emulator)
610
611
612### System name aliasing

Callers 1

unameFunction · 0.85

Calls 3

CDLLClass · 0.90
getattrFunction · 0.85
getpropFunction · 0.85

Tested by

no test coverage detected