1、摄像头:https://blog.csdn.net/wyb2018/article/details/49426519
2、麦克风:https://www.jianshu.com/p/81adddd41dcb
3、GPS:
是否开启:https://blog.csdn.net/wang1018960145/article/details/47153861
iOS GPS点的处理方法: https://www.jianshu.com/p/646caf195b29
iOS自带的GPS定位:https://blog.csdn.net/wenhaiwang/article/details/52163709
4、电子罗盘:(方位传感器)是利用地磁场来定位北极的方法。它配合GPS和地图使用时,可以快速定位方向。
https://blog.csdn.net/sifenkesi1/article/details/52621873
5、重力感应器:感知手机重心变化,来获取相关数据。当手机拿在手里是竖的,页面显示是竖的;当手机横过来,页面显示也变为横向。由苹果公司率先开发。
http://www.osjoin.com/ios/60.html
6、加速度传感器:测量手机的加速度。
当手机在任何方向上运动时,加速度传感器就会有信号输出,手机静止不动时加速度传感器则没有信号输出。加速度传感器还能测量手机在三个方向上的角度。应用可利用加速度传感器的信号判断手机的状态是平放,还是有一定角度?显示屏向上还是向下。
https://www.jianshu.com/p/37a65f683bb9
四. 加速计/陀螺仪/磁力计
- 加速计/陀螺仪/磁力计这三种感应器使用也很简单,直接通过CMMotionManager对象处理,获取数据的方法大同小异;
- CMMotionManager对象可以检测设备的可用性、获取数据、设置数据的更新频率,有需要的可以直接去头文件看看
- 通过计步器制作摇一摇、计步器:按我理解呢,如果考虑周全,摇一摇、记步也需要比较复杂的算法,自己做难免不全面;并且这些苹果已经有对应API,直接调用就好
- CMMotion的使用可以参考这篇文章详说CMDeviceMotion
由于这三种感应器获取数据方式一致,就只对加速计进行举例说明
成员变量及方法
// 存储加速计数据 @property(readonly, nullable) CMAccelerometerData *accelerometerData;// 开始更新加速计数据,不带回调,可以添加定时器定时去获取CMMotionManager对象的accelerometerData数据 - (void)startAccelerometerUpdates;// 开始更新加速计数据,带回调,由于数据可能更新频率快,不建议使用主队列 - (void)startAccelerometerUpdatesToQueue:(NSOperationQueue *)queue withHandler:(CMAccelerometerHandler)handler;// 不再需要更新数据的时候需要调用停止更新的方法 - (void)stopAccelerometerUpdates;
使用步骤
// 1. 初始化CMMotionManager对象并设置属性存储,设置数据的更新间隔
- (CMMotionManager *)motionManage {
if (!_motionManage) {
_motionManage = [[CMMotionManager alloc] init];
// 控制传感器的更新间隔
_motionManage.accelerometerUpdateInterval = 0.2;
_motionManage.gyroUpdateInterval = 0.2;
_motionManage.magnetometerUpdateInterval = 0.2;
}
return _motionManage;
}// 2. 开始/结束更新数据,只举例带回调的方法 - (IBAction)accelerometerTest:(UIButton *)sender {BOOL start = !sender.selected;// 2.1 根据设置的时间间隔定期更新数据if (start) {// 可用性检测if(![self.motionManage isAccelerometerAvailable]){[self showWithTitle:@"加速计不可用" message:nil];return;}sender.selected = YES;__weak typeof (self) weakSelf = self;// 数据更新有可能比较频繁,不建议使用主队列NSOperationQueue *queue = [NSOperationQueue new];[self.motionManage startAccelerometerUpdatesToQueue:queue withHandler:^(CMAccelerometerData * _Nullable accelerometerData, NSError * _Nullable error) {// 回到主线程dispatch_async(dispatch_get_main_queue(), ^{// 数据显示weakSelf.accelerationXLbl.text = [NSString stringWithFormat:@"%.2f", accelerometerData.acceleration.x];weakSelf.accelerationYLbl.text = [NSString stringWithFormat:@"%.2f", accelerometerData.acceleration.y];weakSelf.accelerationZLbl.text = [NSString stringWithFormat:@"%.2f", accelerometerData.acceleration.z];});}];} else {// 2.2 停止获取数据sender.selected = NO;[self.motionManage stopAccelerometerUpdates];} }
自带摇一摇功能
UIResponder类中已经封装好了摇一摇功能,当对象成为第一响应者之后,
系统就会通知对象摇一摇的开始/结束状态,实现以下方法就可以- (void)motionBegan:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event; - (void)motionEnded:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event; - (void)motionCancelled:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event;
作者:YaoYaoX
链接:https://www.jianshu.com/p/37a65f683bb9
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
7、光线传感器:检测环境的亮度。
https://blog.csdn.net/ModalYin/article/details/78401549
8、距离传感器:由一个红外LED灯和红外辐射光线探测器构成。距离传感器位于手机的听筒附近,其工作原理是,红外LED灯发出的不可见红外光由附近的物体反射后,被红外辐射光线探测器探测到。
https://www.cnblogs.com/liuwj/p/6869983.html
9、气压传感器:测量气压。它的数据能用来判断手机所处位置的海拔高度,有助于提高GPS的精度。摩托罗拉XOOM和三星Galaxy Nexus是两款首批配置气压传感器的Android手机。
https://blog.csdn.net/u013263917/article/details/54980734
10、三轴陀螺仪:同时测定6个方向的位置、移动轨迹和加速度。三轴的体积小、重量轻、结构简单、可靠性好,这样手机可以获取到精度更高的角度信息。借助陀螺仪,手机可以判断在哪个方向上旋转了多少度。
https://www.jb51.net/article/130954.htm
https://www.jb51.net/article/94428.htm
************************************我**是**分**割**线*******************************************************
欢迎在留言区补充!