移动开发中的硬件功能:它们是什么、类型以及如何使用

作者: IT Sectr 发布日期: 2026-03-18 阅读时间: 10 分钟

现代智能手机不仅仅是一个计算设备,更是一组强大的传感器。摄像头、加速度计、陀螺仪、NFC、面部扫描仪 — 所有这些都可以通过平台API供开发者使用。硬件功能允许您创建与物理世界交互的应用程序:从健身追踪器到增强现实游戏。本文将介绍iOS和Android的所有主要传感器和API。更多详情,请参阅官方Android传感器文档

关键要点

  • 加速度计、陀螺仪和磁力计 — 基本的运动和方向传感器
  • CameraX(Android)和AVFoundation(iOS) — 标准摄像头API
  • Face ID和Touch ID — iOS上的生物识别认证;Android上的BiometricPrompt
  • NFC — 用于非接触式数据传输和支付
  • HealthKit(iOS)和Google Fit(Android) — 健康和活动数据聚合
  • ARKit和ARCore — 增强现实框架;ML Kit和Core ML — 设备端机器学习

智能手机的主要传感器

智能手机的硬件功能包括数十个传感器,用于收集环境和设备位置的数据。这些数据可通过Sensors API(Android)和Core Motion(iOS)获取。传感器分为三类:运动传感器(加速度计、陀螺仪)、位置传感器(磁力计)和环境传感器(气压计、光线、温度)。

加速度计

加速度计测量设备沿三个轴(x、y、z)的加速度,单位为m/s²。用于:屏幕方向检测(自动旋转)、步数计数(行人导航)、手势识别(摇动撤销)、倾斜控制游戏。Android Sensor.TYPE_ACCELEROMETER和Core Motion CMMotionManager(iOS)提供高达200Hz的原始数据。

陀螺仪

陀螺仪测量设备沿三个轴(rad/s)旋转的角速度。与加速度计不同,陀螺仪不受重力影响,使其成为跟踪旋转的理想选择。应用:视频稳定、VR/AR应用、室内导航、游戏控制器。Sensor.TYPE_GYROSCOPE(Android)和CMMotionManager(iOS)是主要的API。

磁力计

磁力计沿三个轴(µT)测量地球磁场,并作为电子指南针使用。在导航应用中用于确定北方方向。磁力计对金属物体和扬声器的干扰敏感;需要校准(典型的8字形运动)。Sensor.TYPE_MAGNETIC_FIELD — Android API。

气压计测量大气压力(hPa),用于确定海拔高度,精度达1米。接近传感器在通话时将手机贴近耳朵时关闭屏幕。环境光传感器调节屏幕亮度。所有这些传感器都可通过统一的SensorManager(Android)或CMMotionManager(iOS)访问大多数运动传感器。

摄像头和麦克风

摄像头是最受欢迎的硬件组件之一。在Android上,通过CameraX(现代Jetpack API)或Camera2(低级API)访问。CameraX自动处理生命周期,支持预览、图像捕获、图像分析(ML帧分析)和视频捕获。在iOS上,摄像头可通过AVFoundation使用:AVCaptureSession管理捕获,AVCaptureDevice配置参数(对焦、ISO、白平衡)。

麦克风用于录音、语音控制和语音识别。在Android上 — MediaRecorder或AudioRecord;在iOS上 — AVAudioRecorder。访问摄像头和麦克风需要用户权限:Manifest.permission.CAMERA和RECORD_AUDIO(Android),NSCameraUsageDescription和NSMicrophoneUsageDescription(iOS) — Info.plist中描述使用原因的字符串。

在IT Sectr,我们已经实现了20多个具有自定义摄像头的项目:从QR码扫描器到具有AR滤镜的应用程序。关键结论:在Android上,CameraX比Camera2节省数周的开发时间,而在iOS上,AVFoundation提供对拍摄参数的完全控制。通过CameraX进行基本图像捕获的示例:

kotlin
class CameraFragment : Fragment() {
    private lateinit var imageCapture: ImageCapture

    fun startCamera() {
        val processCameraProvider =
            ProcessCameraProvider.getInstance(requireContext())

        processCameraProvider.addListener({
            val cameraProvider = processCameraProvider.get()
            val preview = Preview.Builder()
                .build()
                .also {
                    it.setSurfaceProvider(viewFinder.surfaceProvider)
                }

            imageCapture = ImageCapture.Builder()
                .setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
                .build()

            val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA

            cameraProvider.bindToLifecycle(
                this, cameraSelector, preview, imageCapture
            )
        }, ContextCompat.getMainExecutor(requireContext()))
    }
}

生物识别和NFC

Face ID、Touch ID、指纹扫描仪

生物识别硬件功能允许用户使用指纹或面部登录应用程序。iOS使用Face ID(TrueDepth摄像头,30,000个不可见点)和Touch ID(电容式指纹扫描仪)。Android使用BiometricPrompt,它结合了指纹扫描仪(电容式或超声波)和面部解锁(摄像头+ML)。Face ID比Touch ID更安全:匹配概率为1:1,000,000对比1:50,000。

NFC和蓝牙/BLE

NFC(近场通信)是一种无线通信技术,范围达10厘米。用于:非接触式支付(Google Pay、Apple Pay)、读取NFC标签(智能海报、名片)、验证(文档、票务)、数据传输(Android Beam — 已弃用)。Core NFC(iOS)和NfcAdapter(Android)是主要的API。在iOS上,NFC仅可用于读取(Apple Pay支付除外)。

蓝牙/BLE(低功耗蓝牙) — 用于连接外部设备:耳机、健身手环、医疗传感器、智能锁。Core Bluetooth(iOS)和android.bluetooth(Android) — 用于扫描、连接和数据交换的API。BLE能效高:设备可依靠电池运行多年。在iOS上,后台BLE操作需要启用Background Modes → Uses Bluetooth LE accessories。

健康与健身(HealthKit、Google Fit)

健康硬件功能:HealthKit(iOS) — Apple用于健康数据聚合的框架。用户授权读取和写入特定数据类型:步数、心率、睡眠、卡路里、体重、血压。所有数据存储在受保护的存储库中,并通过iCloud同步。HealthKit提供统一的接口,用于写入HKQuantitySample和通过HKSampleQuery或HKStatisticsQuery读取。

Google Fit — Google在Android上的健身数据平台。API分为两组:Sensors API(来自设备传感器的真实数据 — 步数、卡路里)和History API(读取/写入历史数据)。Google Fit还通过授权聚合来自其他健身应用(Strava、Runkeeper)的数据。在iOS上,Google Fit可通过REST API使用。

Core Motion(iOS) — 用于在没有专用芯片的情况下处理运动传感器的框架:加速度计、陀螺仪、计步器(CMPedometer)、高度计(CMAltimeter)。CMPedometer计算步数、行进距离、速度和爬楼层数。在Android上,类似的功能由Sensor.TYPE_STEP_COUNTER和Step Detector提供。所有健身数据都需要用户的明确同意。

AR和ML(ARKit、ARCore、ML Kit)

增强现实(AR)和设备端机器学习代表了智能手机硬件能力的顶峰。ARKit(Apple,iOS 11+)使用摄像头、陀螺仪、加速度计和LiDAR(在Pro型号上)来跟踪周围空间。ARCore(Google)是Android的等效产品,具有平面跟踪、图像识别和光照估计功能。两个框架都使用视觉惯性里程计(VIO) — 摄像头和惯性传感器的组合。

ML Kit(Google) — 用于Android和iOS机器学习的SDK。包括现成的API:文本识别(OCR)、条形码扫描、面部识别、姿态检测、对象跟踪、图像文本识别和自然语言处理。ML Kit完全在设备上运行 — 数据不会发送到服务器,确保隐私和脱机功能。

Core ML(Apple) — 用于将ML模型集成到iOS应用程序中的框架。模型(mlmodel)通过Core ML Tools从TensorFlow、PyTorch或Keras转换而来。Vision — 用于计算机视觉的框架:面部检测、文本、条形码、水平对齐。结合Vision和Core ML可以构建实时ML管道:帧捕获 → Vision分析 → Core ML预测 → UI更新 — 全部在设备上完成,延迟低于50毫秒。

常见问题

现代智能手机中有哪些传感器?

现代智能手机包含加速度计、陀螺仪、磁力计(指南针)、气压计、接近传感器、环境光传感器、指纹扫描仪、摄像头、麦克风、NFC、蓝牙、Wi-Fi、GPS。旗舰型号还具有LiDAR、心率监测器和温度传感器。

Face ID和Touch ID有什么区别?

Face ID是使用TrueDepth摄像头(30,000点投影)的面部生物识别认证。Touch ID是通过电容式扫描仪进行的指纹认证。Face ID更安全(百万分之一对比五万分之一),且无需接触即可工作。

如何在Android上访问摄像头?

现代方法是CameraX(Jetpack库)。CameraX简化了摄像头的工作:自动管理生命周期,支持预览、图像捕获、图像分析和视频捕获。对于旧项目,使用Camera2 API。

在移动应用中可以用NFC做什么?

NFC允许:读取和写入NFC标签(智能海报、名片)、非接触式支付(Google Pay、Apple Pay)、设备间数据传输、文档验证、开门、使用交通卡。在iOS上,NFC仅可用于读取(Apple Pay除外)。

ARKit和ARCore有什么区别?

ARKit是Apple用于iOS增强现实的框架。ARCore是Google用于Android的等效框架。两者都支持平面跟踪、图像识别和光照估计。ARKit使用LiDAR(在iPad Pro/iPhone Pro上)进行更精确的定位。

总结

  • 加速度计、陀螺仪和磁力计 — 三个主要运动传感器;可通过SensorManager(Android)和Core Motion(iOS)获取
  • CameraX(Android)和AVFoundation(iOS) — 摄像头API;权限是必需的
  • 生物识别认证 — BiometricPrompt(Android)和Face ID / Touch ID(iOS);比密码更安全
  • NFC — 用于读取标签和支付;BLE — 用于连接外部设备
  • HealthKit和Google Fit — 健康和活动数据的存储和同步
  • ARKit和ARCore — 增强现实;ML Kit和Core ML — 设备端机器学习
  • 所有硬件功能都需要用户的明确同意和适当的生命周期管理

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目