类型 函数 库 system.* 返回值 各种 修订 Release 2024.3703 关键词 系统信息
返回应用程序正在运行的系统信息。
system.getInfo( property )
字符串. 与所需信息对应的属性名称 - 查看以下参考列表。
“appName”
返回应用程序的名称,该名称会显示给最终用户。
“appVersionString”
返回应用程序的版本号(字符串格式)。
“architectureInfo”
返回描述您正在运行的设备的基础 CPU 架构的字符串。此 API 主要用于内部调试,但可能会有其他用途。字符串可能会根据不断变化的设备和 CPU 环境而更改。
ARM
ARM Neon
(ARMv7)iPhone6,1
或 iPad5,3
等值。i386
、x86_64
、ppc
或 ppc64
。x86
、x64
、IA64
或 ARM
。“build”
返回 Solar2D Simulator 的关于框中显示的构建字符串。
“bundleID”
返回应用程序的包/包标识符,如果未应用则返回 nil
。
“darkMode”
在支持暗模式的平台上返回 true
或 false
。
“deviceID”
返回设备的“唯一”ID,但有以下注意事项
在 iOS 上,返回设备 “identifierForVendor”
的 MD5 哈希值。
在 Android 上,如果您的应用程序使用 “android.permission.READ_PHONE_STATE”
权限,则此权限会返回 GSM 手机的 IMEI
、CDMA 手机的 MEID
或 ESN
或不是手机的设备的操作系统唯一 ID。如果您的 Android 应用程序没有使用 “android.permission.READ_PHONE_STATE”
权限,则所有设备都将返回操作系统的唯一 ID。请注意,在
如果你的应用在Android 6或更新安卓设备上使用READ_PHONE_STATE
权限且设备是一部手机,用户拒绝该应用PHONE
权限可能会更改返回的值system.getInfo( "deviceID" )
PHONE
权限。从返回的值system.getInfo( "deviceID" )
PHONE
权限,如果没有授予,就请求权限。有关更多详情,请参见以下示例。
"environment"
返回应用运行的环境。其中包括
simulator
。device
。browser
。"maxTextureSize"
返回设备支持的最大纹理宽度或高度。
"textureMemoryUsed"
返回纹理内存使用情况(以字节为单位)。图形/图像的纹理内存往往是移动开发中最受严格限制的资源,因为它先于常规内存耗尽。
"manufacturer"
返回设备的制造商。在 Android 上,这会返回android.os.Build.MANUFACTURER
的原始值(参考)。示例包括
Apple
— 返回所有 Apple 设备(iOS、macOS 或 tvOS)。Amazon
— 返回所有samsung
— 返回所有samsung
)HTC
— 返回所有HTC
)LENOVO
— 返回由联想制造的 Windows 笔记本电脑LENOVO
)"model"
返回设备型号(由制造商指定)。请注意,大多数 Android 设备返回型号编号,而不是型号名称。示例包括
iPhone
iPad
Apple TV
AFTM
(Amazon Fire TV)iPhone Simulator
iPad Simulator
Droid
Galaxy Tab
"name"
返回可读性模型名称。在 iPhone 上,这将是手机在 iTunes 中显示的名称,例如"Steve's iPhone"
"platform"
返回操作系统平台标记,该标记可以是:
android
— 所有 Android 设备和 Android 仿真器。ios
— 所有 iOS 设备和 Xcode iOS 模拟器。macos
— macOS 桌面应用。tvos
— Apple 的 tvOS(Apple TV)。win32
— Win32 桌面应用。html5
— HTML5 应用。在 Solar2D 模拟器中,返回的值取决于所选的皮肤,这可让你通过更改皮肤来测试
此选项已弃用;请改为使用"platform"
(见上文)。
"platformVersion"
返回平台版本字符串表示形式。有时它是一个数字,但并非总是如此 — 例如,一台 Droid X 当前返回2.1-update1
"targetAppStore"
返回应用程序构建时的应用商店名称
apple
— 始终返回 iOS 和 macOSamazon
— 目标是 Amazon 应用商店(仅返回 Android)。google
— 目标是 Google Play(仅返回 Android)。windows
— 目标是 Windows 应用商店。none
— 指示应用程序无针对特定应用程序商店。这始终由 Solar2D Simulator 返回。"androidApiLevel"
返回一个整数,该整数指示应用程序在哪一个 Android 操作系统版本 中运行。例如,
"androidAppVersionCode"
以数字形式返回应用程序的版本号。在所有其他平台上返回 nil
。
"androidAppPackageName"
返回应用程序唯一的以点分隔的包名。在所有其他平台上返回 nil
。
"androidGrantedAppPermissions"
返回一个包含字符串的表,该字符串表示已请求并授予应用程序的每个应用程序权限。这些权限以标准的 Android 权限名称的形式出现,例如 android.permission.WRITE_EXTERNAL_STORAGE
或 com.android.vending.BILLING
。
"androidDeniedAppPermissions"
返回一个包含字符串的表,该字符串表示已请求但被应用程序拒绝的每个应用程序权限。这些权限以标准的 Android 权限名称的形式出现,例如 android.permission.WRITE_EXTERNAL_STORAGE
或 com.android.vending.BILLING
。
"grantedAppPermissions"
返回一个包含字符串的表,该字符串表示已请求并授予该应用程序的每个应用程序权限。这可能包含以下内容的组合Calendars
,和标准 Android 权限名称,例如 android.permission.INTERNET
。
"deniedAppPermissions"
返回一个包含字符串的表,该字符串表示已请求但被应用程序拒绝的每个应用程序权限。这可能包含以下内容的组合Calendars
,和标准 Android 权限名称,例如 android.permission.INTERNET
。
"androidDisplayApproximateDpi"
以数字形式返回屏幕的近似 DPI(每英寸点数)。此 DPI 值基于设备分配的密度名称(例如 hdpi
或 xhdpi
),这些名称提供 Android 上的标准化 DPI 值。此值通常不是显示屏的实际 DPI,而可以通过 "androidDisplayXDpi"
和 "androidDisplayYDpi"
获取。
下表列出了将针对每种显示密度类型返回的 DPI 值。在所有其他平台上返回 nil
。
密度 | DPI |
---|---|
ldpi |
120 |
mdpi |
160 |
hdpi |
240 |
xhdpi |
320 |
xxhdpi |
480 |
xxxhdpi |
640 |
tvdpi |
213 |
"androidDisplayDensityName"
以字符串形式返回设备的屏幕密度,可以是 ldpi
、mdpi
、hdpi
、xhdpi
、xxhdpi
、xxxhdpi
、tvdpi
或 unknown
。在所有其他平台上返回 nil
。
"androidDisplayWidthInInches"
以英寸为单位返回应用程序窗口的宽度,相对于应用程序的方向。在所有其他平台上返回 nil
。
"androidDisplayHeightInInches"
以英寸为单位返回应用程序窗口的高度,相对于应用程序的方向。在所有其他平台上返回 nil
。
"androidDisplayXDpi"
以 相对于应用程序的方向,沿x 轴返回屏幕的 DPI(每英寸点数)。这可用于将像素转换为英寸,反之亦然。在所有其他平台上返回 nil
。
"androidDisplayYDpi"
返回相对于应用程序方向沿y 轴屏幕的 DPI(每英寸点)。这可用于将像素转换为英寸,反之亦然。在所有其他平台上返回 nil
。
"hasSoftwareKeys"
返回布尔值,如果 Android 设备有软件键(例如,主页键和后退键)而不是物理键,则为 true
。在所有其他平台上返回 nil
。需要 Solar2D 2023.3686
或更高版本。
"iosIdentifierForVendor"
返回一个字母数字字符串,它向应用程序的供应商唯一地标识设备。(请参见 Apple 文档)。
"reduceMotion"
返回布尔值,指示是否启用了“减少运动”系统首选项。(请参见 Apple 文档)需要 Solar2D 2023.3693
或更高版本。
"reduceTransparency"
返回布尔值,指示是否启用了“减少透明度”系统首选项。(请参见 Apple 文档)需要 Solar2D 2023.3693
或更高版本。
"differentiateWithoutColor"
返回布尔值,指示是否启用了“不带颜色区分”系统首选项。(请参见 Apple 文档)需要 Solar2D 2023.3693
或更高版本。
"gpuSupportsHighPrecisionFragmentShaders"
返回布尔值,指示该设备上的片段着色器中是否支持 HIGHP
。
"maxVertexTextureUnits"
返回在该设备上的顶点着色器中可使用的采样器的数量。请参见 自定义着色器效果 指南中的顶点纹理。
"GL_VENDOR"
返回负责此设备上 GL 实现的公司。有关详细信息,请 在此处。
"GL_RENDERER"
返回 GL 渲染器的名称。有关详细信息,请 在此处。
"GL_VERSION"
返回 GL 版本。有关详细信息,请 在此处。
"GL_SHADING_LANGUAGE_VERSION"
返回 GLSL 着色语言的 GL 版本或发布版本号。有关详细信息,请 在此处。
"GL_EXTENSIONS"
返回此设备上支持的扩展列表。有关详细信息,请 在此处。
if ( system.getInfo( "environment" ) == "simulator" ) then print( "You're in the Solar2D Simulator." ) end
local storedDeviceID = "" local function hasPhonePermission() -- Check to see if the user has previouslly granted permissions local grantedPermissions = system.getInfo( "grantedAppPermissions" ) local hasPhonePermission = false -- Check for the "Phone" group permission for i = 1,#grantedPermissions do if ( "Phone" == grantedPermissions[i] ) then hasPhonePermission = true break end end return hasPhonePermission end local function appPermissionsListener( event ) local phonePermissionGranted = hasPhonePermission() if not phonePermissionGranted then -- We can't continue, exit the app native.requestExit() else -- Safe to get the device ID storedDeviceID = system.getInfo( "deviceID" ) end end -- This only matters for Android 6 or later if ( system.getInfo( "platform" ) == "android" and system.getInfo( "androidApiLevel" ) >= 23 ) then local phonePermissionGranted = hasPhonePermission() if not phonePermissionGranted then -- If phone permission is not yet granted, prompt for it local permissionOptions = { appPermission = "Phone", urgency = "Critical", listener = appPermissionsListener, rationaleTitle = "Read phone state required", rationaleDescription = "This app needs this state to retrieve previously saved data. Re-request now?", settingsRedirectTitle = "Alert", settingsRedirectDescription = "Without the ability to access your device's unique ID, it can't function properly. Please grant phone access within Settings." } native.showPopup( "requestAppPermission", permissionOptions ) else -- We already have the needed permission storedDeviceID = system.getInfo( "deviceID" ) end end