14 KiB
14 KiB
Android 系统信息库 - 完整功能总结
📋 项目概述
本项目为 Android 设备信息获取库,提供了全面的系统硬件和软件信息获取功能。所有代码都已添加详细的中文注释,便于理解和维护。
✅ 已完成的主要功能模块
1. DRMInfo - DRM信息模块 🎬
功能特性
- ✅ 获取所有支持的DRM方案(29种)
- ✅ DRM类型识别(Widevine、PlayReady、FairPlay等)
- ✅ 供应商信息(Google、Microsoft等)
- ✅ 版本信息
- ✅ 支持的加密算法
- ✅ 设备唯一ID(十六进制)
- ✅ 安全级别(L1、L3等)
- ✅ 最高HDCP级别(2.2等)
- ✅ 当前HDCP级别
- ✅ 会话信息(当前和最大会话数)
- ✅ 系统ID和描述信息
支持的DRM方案(29种)
- Widevine Content Protection (Google)
- Microsoft PlayReady
- Apple FairPlay
- ClearKey (多种变体)
- ChinaDRM
- Adobe Primetime DRM
- 以及其他23种DRM方案
使用示例
val drmInfo = AndInfo.instance.drm
// 获取Widevine详细信息
val widevineDetail = drmInfo.getDrmDetail(DRMInfo.WIDEVINE_UUID)
widevineDetail?.let { detail ->
println("供应商: ${detail.vendor}")
println("版本: ${detail.version}")
println("安全级别: ${detail.securityLevel}")
println("最高HDCP级别: ${detail.maxHdcpLevel}")
}
2. BuildInfo - 系统构建信息模块 🏗️
新增功能(37个)
Treble 和系统更新(5个):
- ✅ Treble支持检测
- ✅ Treble版本
- ✅ 无缝更新(A/B)支持
- ✅ 当前活动插槽
- ✅ 虚拟A/B支持
Root 权限和安全(3个):
- ✅ Root状态检测(多种检测方法)
- ✅ SELinux状态
- ✅ dm-verity状态
Google Play 服务(4个):
- ✅ Play服务版本名称
- ✅ Play服务版本代码
- ✅ Play商店版本
- ✅ Google Services Framework版本
系统工具版本(3个):
- ✅ Toybox版本
- ✅ Toolbox版本
- ✅ BusyBox版本
SSL/TLS 信息(3个):
- ✅ OpenSSL版本
- ✅ BoringSSL版本
- ✅ TLS支持版本列表
语言和时区(7个):
- ✅ 系统语言和代码
- ✅ 国家/地区和代码
- ✅ 系统时区
- ✅ 时区显示名称
- ✅ UTC偏移
开发者选项和调试(3个):
- ✅ USB调试状态
- ✅ 开发者选项状态
- ✅ 未知来源安装权限
内核信息(6个):
- ✅ 内核版本号
- ✅ 内核架构
- ✅ 内核名称
- ✅ 内核命令行参数
- ✅ CPU信息(/proc/cpuinfo)
- ✅ 内存信息(/proc/meminfo)
设备标识符(3个):
- ✅ Android ID
- ✅ 序列号
- ✅ 设备唯一ID
使用示例
val buildInfo = AndInfo.instance.build
// Treble 和系统更新
val isTreble = buildInfo.isTrebleEnabled
val currentSlot = buildInfo.currentSlot
// Root 检测
val isRooted = buildInfo.isRooted
// Google Play 服务
val playVersion = buildInfo.googlePlayServicesVersion
// 语言和时区
val language = buildInfo.systemLanguage
val timeZone = buildInfo.timeZone
// USB 调试
val usbDebug = buildInfo.isUsbDebuggingEnabled
// 内核信息
val kernelVer = buildInfo.kernelVersion
val kernelArch = buildInfo.kernelArchitecture
// 设备标识符
val androidId = buildInfo.androidId
3. GpuInfo - GPU信息模块 🎮
新增功能(17个方法)
GPU基本信息(4个):
- ✅ GPU供应商(Qualcomm、ARM、Mali等)
- ✅ GPU型号(Adreno 650、Mali-G78等)
- ✅ GPU设备类型枚举
- ✅ 设备类型中文描述(集成显卡、独立显卡等)
Vulkan信息(3个):
- ✅ Vulkan支持检测
- ✅ Vulkan API版本(1.1.0、1.3.0等)
- ✅ Vulkan驱动版本
OpenGL ES信息(3个):
- ✅ OpenGL ES版本
- ✅ OpenGL ES扩展列表
- ✅ OpenGL ES扩展数量
EGL信息(4个):
- ✅ EGL版本
- ✅ EGL扩展列表
- ✅ EGL扩展数量
- ✅ EGL客户端API列表
完整信息(3个):
- ✅ 获取完整GPU数据结构
- ✅ 格式化GPU信息摘要
- ✅ 中英文设备类型和供应商映射
支持的GPU供应商
- Qualcomm Adreno
- ARM Mali
- Imagination PowerVR
- NVIDIA Tegra
- AMD Radeon
- Intel HD Graphics
- Vivante、VeriSilicon等
使用示例
val gpuInfo = AndInfo.instance.gpu
// GPU基本信息
val vendor = gpuInfo.getVendorName() // "Qualcomm"
val renderer = gpuInfo.getRendererName() // "Adreno (TM) 650"
val deviceType = gpuInfo.getDeviceTypeDescription() // "集成显卡"
// Vulkan信息
val vulkanSupported = gpuInfo.isVulkanSupported() // true
val vulkanVersion = gpuInfo.getVulkanApiVersion() // "1.3.0"
// OpenGL ES信息
val glVersion = gpuInfo.getOpenGLVersion() // "OpenGL ES 3.2"
val glExtCount = gpuInfo.getOpenGLExtensionCount() // 156
// 完整摘要
val summary = gpuInfo.getGpuSummary()
4. DeviceInfo - 设备信息模块 📱
功能特性(已添加注释)
- ✅ 设备代号
- ✅ 品牌
- ✅ 机型
- ✅ 制造商
- ✅ 产品名称
- ✅ 硬件名称
- ✅ 主板名称
- ✅ 硬件SKU(Android 12+)
- ✅ ODM SKU(Android 12+)
- ✅ SoC制造商(Android 12+)
- ✅ SoC型号(Android 12+)
- ✅ 内存信息
5. SensorInfo - 传感器信息模块 🎯
功能特性(已添加完整注释)
通用传感器功能:
- ✅ 获取所有传感器列表
- ✅ 获取单个传感器详细信息
- ✅ 动态传感器发现支持检测
具体传感器类型:
-
温度传感器
- 环境温度传感器
- 设备温度传感器
- 实时温度数据流
-
加速度传感器
- 三轴加速度数据(x, y, z)
- 实时数据流
-
磁力传感器
- 三轴磁场强度
- 总磁场强度计算
-
方向传感器
- 方位角、俯仰角、横滚角
- 方向文字描述(北、东北、东等)
-
陀螺仪传感器
- 三轴角速度
-
环境光传感器
- 当前光照强度
- 最小值、平均值、最大值统计
-
重力传感器
- 三轴重力加速度
-
线性加速度传感器
- 排除重力的线性加速度
-
旋转矢量传感器
- 设备旋转方向和角度
-
游戏旋转矢量传感器
- 游戏优化的旋转数据
-
步数传感器
- 自重启以来的步数统计
数据类型
- ✅ SensorDetail - 传感器详细信息
- ✅ TemperatureSensorData - 温度传感器数据
- ✅ AccelerometerData - 加速度传感器数据
- ✅ ThreeAxisData - 三轴数据
- ✅ MagnetometerData - 磁力传感器数据
- ✅ MagneticFieldData - 磁场数据
- ✅ OrientationSensorData - 方向传感器数据
- ✅ OrientationData - 方向数据
- ✅ GyroscopeData - 陀螺仪数据
- ✅ LightSensorData - 环境光传感器数据
- ✅ LightData - 环境光数据
- ✅ GravitySensorData - 重力传感器数据
- ✅ LinearAccelerationData - 线性加速度数据
- ✅ RotationVectorSensorData - 旋转矢量传感器数据
- ✅ RotationVectorData - 旋转矢量数据
- ✅ GameRotationVectorSensorData - 游戏旋转矢量传感器数据
- ✅ StepCounterSensorData - 步数传感器数据
使用示例
val sensorInfo = AndInfo.instance.sensor
// 获取所有传感器
val allSensors = sensorInfo.getAllSensors()
// 获取温度传感器列表
val tempSensors = sensorInfo.getTemperatureSensors()
// 实时监听加速度数据
lifecycleScope.launch {
sensorInfo.getAccelerometerFlow().collect { data ->
println("加速度: x=${data.x}, y=${data.y}, z=${data.z}")
}
}
// 获取环境光传感器信息
val lightInfo = sensorInfo.getLightSensorInfo()
// 实时监听步数
lifecycleScope.launch {
sensorInfo.getStepCounterFlow().collect { steps ->
println("步数: $steps")
}
}
6. NetworkInfo - 网络信息模块 🌐
功能特性(已添加注释)
网络类型检测:
- ✅ Wi-Fi
- ✅ 移动数据
- ✅ 无网络
Wi-Fi详细信息:
- ✅ SSID和BSSID
- ✅ 连接速率
- ✅ 信号强度(dBm和百分比)
- ✅ 频率和信道
- ✅ Wi-Fi标准(802.11a/b/g/n/ac/ax/be)
- ✅ DHCP信息(服务器、网关、DNS)
- ✅ IP地址(IPv4和IPv6)
- ✅ 子网掩码
- ✅ 支持的Wi-Fi标准列表
- ✅ Wi-Fi Direct支持
- ✅ Wi-Fi Aware支持
- ✅ Passpoint支持
- ✅ 5GHz/6GHz/60GHz频段支持
移动数据详细信息:
- ✅ 双卡检测
- ✅ 卡槽数量
- ✅ eSIM支持
- ✅ 移动数据开关状态
- ✅ SIM卡信息列表(每张卡)
- 运营商名称
- 运营商代码(MCC+MNC)
- 国家代码
- 漫游状态
- SIM卡状态
- 网络类型
- 是否eSIM
📊 代码质量统计
总体统计
- 模块数量: 7个主要模块
- 新增功能: 70+ 个方法/属性
- 数据类: 25+ 个数据类
- 中文注释: 100% 覆盖
- 编译状态: ✅ 无严重错误
各模块详情
| 模块 | 新增方法 | 数据类 | 注释完整度 | 编译状态 |
|---|---|---|---|---|
| DRMInfo | 6 | 1 | ✅ 100% | ✅ 无错误 |
| BuildInfo | 37 | 1 | ✅ 100% | ✅ 无错误 |
| GpuInfo | 17 | 1 | ✅ 100% | ✅ 无错误 |
| DeviceInfo | 13 | 0 | ✅ 100% | ✅ 无错误 |
| SensorInfo | 23 | 18 | ✅ 100% | ✅ 无错误 |
| NetworkInfo | 7 | 3 | ✅ 100% | ⚠️ 仅警告 |
📚 文档清单
已创建的使用文档:
- ✅ DRMInfo使用示例.md - DRM信息获取完整指南
- ✅ BuildInfo新增功能使用示例.md - 系统构建信息使用指南
- ✅ GpuInfo使用示例.md - GPU信息获取完整指南
每份文档包含:
- 功能列表
- 详细使用示例
- 数据结构说明
- 注意事项
- 典型应用场景
- 示例输出
🎯 关键技术特性
1. 智能回退机制
// 优先使用新API,自动回退到旧API
fun getVendorName(): String? {
// 优先使用 Vulkan 信息
gpuInfo.vkPhysicalDevices?.firstOrNull()?.let { device ->
return getVendorNameFromId(device.vendorId)
}
// 回退到 OpenGL ES 信息
return gpuInfo.eglInformation?.glInformation?.glVendor
}
2. 版本兼容性处理
所有涉及版本差异的API都有完善的兼容性处理:
val isRooted: Boolean
get() = checkRootAccess()
val serialNumber: String
get() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
try {
Build.getSerial()
} catch (_: SecurityException) {
"需要权限"
}
} else {
@Suppress("DEPRECATION", "HardwareIds")
Build.SERIAL
}
3. 异常安全处理
所有可能失败的操作都有完善的异常处理:
private fun executeCommand(command: String): String? {
return try {
val process = Runtime.getRuntime().exec(command)
val reader = BufferedReader(InputStreamReader(process.inputStream))
val output = reader.readText()
process.waitFor()
reader.close()
output.takeIf { it.isNotEmpty() }
} catch (_: Exception) {
null
}
}
4. 实时数据流支持
使用 Kotlin Flow 提供实时传感器数据:
fun getAccelerometerFlow(): Flow<ThreeAxisData> = callbackFlow {
val sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
val listener = object : SensorEventListener {
override fun onSensorChanged(event: SensorEvent) {
trySend(ThreeAxisData(
x = event.values[0],
y = event.values[1],
z = event.values[2]
))
}
override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) {}
}
sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL)
awaitClose {
sensorManager.unregisterListener(listener)
}
}
🚀 使用入门
初始化
// 在Application或Activity中初始化
AndInfo.init(applicationContext)
基本使用
// 获取各模块实例
val drmInfo = AndInfo.instance.drm
val buildInfo = AndInfo.instance.build
val gpuInfo = AndInfo.instance.gpu
val deviceInfo = AndInfo.instance.device
val sensorInfo = AndInfo.instance.sensor
// 使用示例
val isRooted = buildInfo.isRooted
val gpuVendor = gpuInfo.getVendorName()
val allSensors = sensorInfo.getAllSensors()
⚠️ 注意事项
权限要求
- READ_PHONE_STATE: NetworkInfo 的某些功能
- ACCESS_FINE_LOCATION: Wi-Fi详细信息
- READ_PRIVILEGED_PHONE_STATE: 序列号(系统应用)
设备差异
- 不同设备支持的功能可能不同
- 某些属性可能返回
null - Google服务在国内设备上通常不可用
性能考虑
- Shell命令执行是同步的,避免在主线程频繁调用
- GPU信息获取涉及native调用,建议后台执行
- 传感器数据流会持续消耗资源,及时取消订阅
🎉 完成度总结
总体完成度:100% ✅
所有请求的功能都已实现:
- ✅ DRM信息(类型、供应商、版本、算法、设备ID、安全级别、HDCP级别)
- ✅ Treble支持和无缝更新检测
- ✅ Root权限检测
- ✅ Google Play服务版本
- ✅ Toybox等系统工具信息
- ✅ SSL/TLS版本
- ✅ 语言和时区
- ✅ USB调试状态
- ✅ 内核信息
- ✅ 设备标识符
- ✅ GPU供应商和型号
- ✅ Vulkan和OpenGL支持
- ✅ 所有模块的详细中文注释
- ✅ 完整的使用文档
代码质量
- ✅ 无严重编译错误
- ✅ 完整的中文注释
- ✅ 异常安全处理
- ✅ 版本兼容性处理
- ✅ 智能回退机制
- ✅ 详细的使用文档
📞 技术支持
所有代码都经过测试,可以直接使用。如有问题,请参考各模块的使用示例文档。
最后更新: 2025年12月24日 项目状态: ✅ 完成 文档状态: ✅ 完整