# InputInfo 硬件特性检测使用示例 ## 概述 InputInfo 类现在提供了完整的硬件特性检测功能,包括输入设备信息和各种硬件特性支持(USB、指纹、NFC、GPS等)。 ## 新增功能 ### 硬件特性检测方法(12个) 1. **USB 相关** - `hasUsbHostSupport()` - USB Host 模式支持 - `hasUsbAccessorySupport()` - USB 配件模式支持 2. **生物识别** - `hasFingerprintSensor()` - 指纹识别器 3. **传感器** - `hasInfraredSensor()` - 红外线传感器(遥控器功能) - `hasUwbSupport()` - UWB 超宽带支持 4. **NFC 相关** - `hasNfcSupport()` - NFC 近场通信支持 - `hasNfcHostCardEmulation()` - NFC 主机卡模拟 - `hasNfcHostCardEmulationOffHost()` - NFC 离线主机卡模拟 - `hasSecureNfcSupport()` - 安全 NFC 支持 5. **定位相关** - `hasGpsSupport()` - GPS 定位支持 - `hasNetworkLocationSupport()` - 网络定位支持 - `hasLocationSupport()` - 任何定位服务支持 6. **综合方法** - `getHardwareFeatures()` - 获取所有硬件特性支持信息 ## 使用方法 ### 1. 初始化 ```kotlin import com.xyzshell.andinfo.AndInfo // 在 Application 或 Activity 中初始化 AndInfo.init(applicationContext) // 获取 InputInfo 实例 val inputInfo = AndInfo.instance.input ``` ### 2. USB 功能检测 #### USB Host 支持 ```kotlin // 检查是否支持 USB Host 模式 val hasUsbHost = inputInfo.hasUsbHostSupport() println("USB Host 支持: ${if (hasUsbHost) "是" else "否"}") // USB Host 允许 Android 设备连接: // - USB 键盘 // - USB 鼠标 // - USB 存储设备 // - USB 游戏手柄 // - USB 打印机等 ``` #### USB 配件模式 ```kotlin // 检查是否支持 USB 配件模式 val hasUsbAccessory = inputInfo.hasUsbAccessorySupport() println("USB 配件模式: ${if (hasUsbAccessory) "是" else "否"}") // USB 配件模式允许 Android 设备作为配件连接到: // - 汽车娱乐系统 // - 音频设备 // - 医疗设备等 ``` ### 3. 指纹识别检测 ```kotlin // 检查是否有指纹识别器 val hasFingerprint = inputInfo.hasFingerprintSensor() println("指纹识别器: ${if (hasFingerprint) "有" else "无"}") // 用于判断设备是否支持指纹解锁、指纹支付等功能 if (hasFingerprint) { // 可以使用 BiometricPrompt API 进行指纹认证 println("设备支持指纹认证功能") } ``` ### 4. 红外线传感器检测 ```kotlin // 检查是否有红外线传感器(IR Blaster) val hasInfrared = inputInfo.hasInfraredSensor() println("红外线传感器: ${if (hasInfrared) "有" else "无"}") // 红外线传感器可用于: // - 遥控电视 // - 遥控空调 // - 遥控机顶盒等 if (hasInfrared) { println("设备可以作为万能遥控器使用") } ``` ### 5. UWB 超宽带支持检测 ```kotlin // 检查是否支持 UWB(Ultra-Wideband) val hasUwb = inputInfo.hasUwbSupport() println("UWB 支持: ${if (hasUwb) "是" else "否"}") // UWB 技术用于: // - 精确室内定位(厘米级) // - 数字车钥匙 // - 查找设备(类似 AirTag) // - 设备间高速数据传输 if (hasUwb) { println("设备支持精确定位和数字车钥匙功能") } ``` ### 6. NFC 功能检测 #### 基本 NFC 支持 ```kotlin // 检查是否支持 NFC val hasNfc = inputInfo.hasNfcSupport() println("NFC 支持: ${if (hasNfc) "是" else "否"}") // NFC 用于: // - 移动支付(Apple Pay、Google Pay等) // - 读取 NFC 标签 // - 点对点数据传输 // - 公交卡模拟 ``` #### NFC 主机卡模拟(HCE) ```kotlin // 检查是否支持 NFC HCE val hasNfcHce = inputInfo.hasNfcHostCardEmulation() println("NFC HCE 支持: ${if (hasNfcHce) "是" else "否"}") // HCE 允许应用模拟 NFC 卡片,无需物理安全元素 // 用于: // - 虚拟公交卡 // - 虚拟门禁卡 // - 虚拟会员卡 ``` #### NFC 离线主机卡模拟 ```kotlin // 检查是否支持离线 HCE val hasNfcOffHost = inputInfo.hasNfcHostCardEmulationOffHost() println("NFC 离线 HCE: ${if (hasNfcOffHost) "是" else "否"}") // 允许在设备离线时进行 NFC 交易 ``` #### 安全 NFC ```kotlin // 检查是否支持安全 NFC val hasSecureNfc = inputInfo.hasSecureNfcSupport() println("安全 NFC: ${if (hasSecureNfc) "是" else "否"}") // 安全 NFC 使用安全元素(Secure Element) // 提供更高的安全性,用于: // - 金融级支付 // - 敏感数据交换 ``` ### 7. GPS 定位检测 #### GPS 支持 ```kotlin // 检查是否支持 GPS val hasGps = inputInfo.hasGpsSupport() println("GPS 支持: ${if (hasGps) "是" else "否"}") // GPS 提供卫星定位功能 // 用于: // - 导航 // - 位置追踪 // - 地理标记 ``` #### 网络定位 ```kotlin // 检查是否支持网络定位 val hasNetworkLocation = inputInfo.hasNetworkLocationSupport() println("网络定位: ${if (hasNetworkLocation) "是" else "否"}") // 网络定位使用: // - Wi-Fi 定位 // - 基站定位 // 比 GPS 更省电但精度较低 ``` #### 任何定位服务 ```kotlin // 检查是否支持任何定位服务 val hasLocation = inputInfo.hasLocationSupport() println("定位服务: ${if (hasLocation) "是" else "否"}") // 综合检测设备是否有定位能力 ``` ### 8. 获取所有硬件特性 ```kotlin // 一次性获取所有硬件特性支持信息 val features = inputInfo.getHardwareFeatures() println("=== 硬件特性汇总 ===") println("USB Host: ${if (features.usbHost) "✓" else "✗"}") println("USB 配件: ${if (features.usbAccessory) "✓" else "✗"}") println("指纹识别: ${if (features.fingerprint) "✓" else "✗"}") println("红外线: ${if (features.infrared) "✓" else "✗"}") println("UWB: ${if (features.uwb) "✓" else "✗"}") println("NFC: ${if (features.nfc) "✓" else "✗"}") println("NFC HCE: ${if (features.nfcHce) "✓" else "✗"}") println("NFC 离线: ${if (features.nfcHceOffHost) "✓" else "✗"}") println("安全 NFC: ${if (features.secureNfc) "✓" else "✗"}") println("GPS: ${if (features.gps) "✓" else "✗"}") println("网络定位: ${if (features.networkLocation) "✓" else "✗"}") println("定位服务: ${if (features.location) "✓" else "✗"}") ``` ### 9. 输入设备信息(原有功能) ```kotlin // 获取所有输入设备 val devices = inputInfo.getInputDevices() println("输入设备数量: ${devices.size}") devices.forEach { device -> println("--- ${device.name} ---") println("ID: ${device.id}") println("类型: ${when { device.sources and InputDevice.SOURCE_KEYBOARD != 0 -> "键盘" device.sources and InputDevice.SOURCE_MOUSE != 0 -> "鼠标" device.sources and InputDevice.SOURCE_TOUCHSCREEN != 0 -> "触摸屏" device.sources and InputDevice.SOURCE_GAMEPAD != 0 -> "游戏手柄" else -> "其他" }}") println("虚拟设备: ${device.isVirtual}") println("外部设备: ${device.isExternal}") println("有震动: ${device.hasVibrator}") println("有麦克风: ${device.hasMicrophone}") println() } ``` ## HardwareFeatures 数据类 ```kotlin data class HardwareFeatures( val usbHost: Boolean, // USB Host 支持 val usbAccessory: Boolean, // USB 配件支持 val fingerprint: Boolean, // 指纹识别器 val infrared: Boolean, // 红外线传感器 val uwb: Boolean, // UWB 支持 val nfc: Boolean, // NFC 支持 val nfcHce: Boolean, // NFC 主机卡模拟 val nfcHceOffHost: Boolean, // NFC 离线主机卡模拟 val secureNfc: Boolean, // 安全 NFC val gps: Boolean, // GPS 支持 val networkLocation: Boolean, // 网络定位支持 val location: Boolean // 任何定位支持 ) ``` ## 典型应用场景 ### 1. 功能适配检查 ```kotlin fun checkDeviceCapabilities(): DeviceCapabilities { val inputInfo = AndInfo.instance.input return DeviceCapabilities( canUseUsbAccessories = inputInfo.hasUsbHostSupport(), canUseFingerprint = inputInfo.hasFingerprintSensor(), canControlTv = inputInfo.hasInfraredSensor(), canUseNfcPayment = inputInfo.hasNfcSupport(), canUseDigitalKey = inputInfo.hasUwbSupport(), canUseGps = inputInfo.hasGpsSupport() ) } ``` ### 2. 功能引导 ```kotlin fun showFeatureTips() { val inputInfo = AndInfo.instance.input if (inputInfo.hasInfraredSensor()) { showTip("您的设备支持红外遥控功能,可以控制电视、空调等设备") } if (inputInfo.hasUwbSupport()) { showTip("您的设备支持 UWB,可以使用数字车钥匙功能") } if (inputInfo.hasNfcSupport()) { showTip("您的设备支持 NFC,可以使用移动支付和刷卡功能") } } ``` ### 3. 支付功能检查 ```kotlin fun canUseNfcPayment(): Boolean { val inputInfo = AndInfo.instance.input // 检查基本 NFC 支持 if (!inputInfo.hasNfcSupport()) { return false } // 检查 HCE 支持(用于虚拟卡片) val hasHce = inputInfo.hasNfcHostCardEmulation() // 检查安全 NFC(用于金融级支付) val hasSecureNfc = inputInfo.hasSecureNfcSupport() return hasHce || hasSecureNfc } ``` ### 4. 定位功能检查 ```kotlin fun getBestLocationMethod(): String { val inputInfo = AndInfo.instance.input return when { inputInfo.hasGpsSupport() -> "GPS(高精度)" inputInfo.hasNetworkLocationSupport() -> "网络定位(省电)" inputInfo.hasLocationSupport() -> "基础定位" else -> "不支持定位" } } ``` ### 5. 设备档案生成 ```kotlin fun generateDeviceProfile(): String { val inputInfo = AndInfo.instance.input val features = inputInfo.getHardwareFeatures() return buildString { appendLine("=== 设备功能档案 ===") appendLine() appendLine("📱 连接性") appendLine("USB Host: ${if (features.usbHost) "✓" else "✗"}") appendLine("USB 配件: ${if (features.usbAccessory) "✓" else "✗"}") appendLine("NFC: ${if (features.nfc) "✓" else "✗"}") appendLine("UWB: ${if (features.uwb) "✓" else "✗"}") appendLine() appendLine("🔐 安全性") appendLine("指纹: ${if (features.fingerprint) "✓" else "✗"}") appendLine("安全 NFC: ${if (features.secureNfc) "✓" else "✗"}") appendLine() appendLine("📍 定位") appendLine("GPS: ${if (features.gps) "✓" else "✗"}") appendLine("网络定位: ${if (features.networkLocation) "✓" else "✗"}") appendLine() appendLine("🔌 特殊功能") appendLine("红外遥控: ${if (features.infrared) "✓" else "✗"}") } } ``` ## 示例输出 ### 完整硬件特性检测结果 ``` === 硬件特性汇总 === USB Host: ✓ USB 配件: ✓ 指纹识别: ✓ 红外线: ✗ UWB: ✓ NFC: ✓ NFC HCE: ✓ NFC 离线: ✗ 安全 NFC: ✓ GPS: ✓ 网络定位: ✓ 定位服务: ✓ ``` ### 高端设备示例(如 Samsung Galaxy S24 Ultra) ``` USB Host: ✓ USB 配件: ✓ 指纹识别: ✓(屏下指纹) 红外线: ✗ UWB: ✓(数字车钥匙、SmartTag+ 支持) NFC: ✓ NFC HCE: ✓ 安全 NFC: ✓(Samsung Pay) GPS: ✓ ``` ### 中端设备示例(如 Google Pixel 7a) ``` USB Host: ✓ USB 配件: ✓ 指纹识别: ✓(屏下指纹) 红外线: ✗ UWB: ✗ NFC: ✓ NFC HCE: ✓ 安全 NFC: ✗ GPS: ✓ ``` ### 预算设备示例 ``` USB Host: ✓ USB 配件: ✓ 指纹识别: ✓(侧面指纹) 红外线: ✗ UWB: ✗ NFC: ✗ NFC HCE: ✗ 安全 NFC: ✗ GPS: ✓ ``` ## 注意事项 1. **权限要求**: - USB 功能不需要特殊权限 - 指纹使用需要 `USE_BIOMETRIC` 权限 - NFC 使用需要 `NFC` 权限 - 定位使用需要 `ACCESS_FINE_LOCATION` 或 `ACCESS_COARSE_LOCATION` 权限 2. **版本兼容性**: - UWB 支持需要 Android 12+ - 某些 NFC 功能需要 Android 4.4+ 3. **设备差异**: - 不同品牌和型号的设备支持的功能不同 - 某些功能可能被厂商禁用 4. **用户设置**: - 即使硬件支持,用户也可能在设置中禁用某些功能 - 建议在使用前检查功能是否已启用 ## 完成度 ✅ **100%** - 所有请求的功能都已实现 - USB Host 支持检测 ✅ - USB 配件支持检测 ✅ - 指纹识别器检测 ✅ - 红外线传感器检测 ✅ - UWB 支持检测 ✅ - NFC 支持检测 ✅ - 安全 NFC 支持检测 ✅ - GPS 支持检测 ✅ - 完整的中文注释 ✅ - 综合查询方法 ✅