现代智能手机不仅仅是一个计算设备,更是一组强大的传感器。摄像头、加速度计、陀螺仪、NFC、面部扫描仪 — 所有这些都可以通过平台API供开发者使用。硬件功能允许您创建与物理世界交互的应用程序:从健身追踪器到增强现实游戏。本文将介绍iOS和Android的所有主要传感器和API。更多详情,请参阅官方Android传感器文档。
关键要点
智能手机的硬件功能包括数十个传感器,用于收集环境和设备位置的数据。这些数据可通过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进行基本图像捕获的示例:
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()))
}
}
生物识别硬件功能允许用户使用指纹或面部登录应用程序。iOS使用Face ID(TrueDepth摄像头,30,000个不可见点)和Touch ID(电容式指纹扫描仪)。Android使用BiometricPrompt,它结合了指纹扫描仪(电容式或超声波)和面部解锁(摄像头+ML)。Face ID比Touch ID更安全:匹配概率为1:1,000,000对比1:50,000。
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(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)和设备端机器学习代表了智能手机硬件能力的顶峰。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是使用TrueDepth摄像头(30,000点投影)的面部生物识别认证。Touch ID是通过电容式扫描仪进行的指纹认证。Face ID更安全(百万分之一对比五万分之一),且无需接触即可工作。
现代方法是CameraX(Jetpack库)。CameraX简化了摄像头的工作:自动管理生命周期,支持预览、图像捕获、图像分析和视频捕获。对于旧项目,使用Camera2 API。
NFC允许:读取和写入NFC标签(智能海报、名片)、非接触式支付(Google Pay、Apple Pay)、设备间数据传输、文档验证、开门、使用交通卡。在iOS上,NFC仅可用于读取(Apple Pay除外)。
ARKit是Apple用于iOS增强现实的框架。ARCore是Google用于Android的等效框架。两者都支持平面跟踪、图像识别和光照估计。ARKit使用LiDAR(在iPad Pro/iPhone Pro上)进行更精确的定位。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。