传感器类型 | 作用 |
---|---|
环境光传感器 | 感应周边环境光线的强弱(自动调节屏幕亮度) |
距离传感器 | 感应是否有其他物体靠近设备屏幕(打电话自动锁屏) |
磁力计传感器 | 感应周边的磁场 |
内部温度传感器 | 感应设备内部的温度(提醒用户降温,防止损伤设备) |
湿度传感器 | 感应设备是否进水(方便维修人员) |
陀螺仪 | 感应设备的持握方式(赛车类游戏) |
加速计 | 感应设备的运动(摇一摇、计步器) |
- (void)viewDidLoad {
[super viewDidLoad];
// 1.开启距离传感器(注意: 默认情况距离传感器是关闭的)
// [UIApplication sharedApplication].proximitySensingEnabled = YES;
// 只要开启之后, 就开始实时监听
[UIDevice currentDevice].proximityMonitoringEnabled = YES;
// 2.当监听到有物体靠近设备时系统会发出通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(proximityStateDidChange:) name:UIDeviceProximityStateDidChangeNotification object:nil];
}
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
// 当监听到有物体靠近设备时调用
- (void)proximityStateDidChange:(NSNotification *)note
{
// NSLog(@"%@", note);
if( [UIDevice currentDevice].proximityState)
{
NSLog(@"有物体靠近");
}else
{
NSLog(@"物体离开");
}
}
// 获得单例对象
UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
// 设置代理
accelerometer.delegate = self;
// 设置采样间隔
accelerometer.updateInterval = 1.0/30.0; // 1秒钟采样30次
// 实现代理方法
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
// acceleration中的x、y、z三个属性分别代表每个轴上的加速度
// 2.判断加速计是否可用(最好判断) if (mgr.isAccelerometerAvailable) { // 加速计可用 }
// 3.设置采样间隔 mgr.accelerometerUpdateInterval = 1.0/30.0; // 1秒钟采样30次
// 4.开始采样(采样到数据就会调用handler,handler会在queue中执行)
// 2.判断加速计是否可用(最好判断) if (mgr.isAccelerometerAvailable) { // 加速计可用 }
// 3.开始采样
// 4.在需要的时候采集加速度数据 CMAcceleration acc = mgr.accelerometerData.acceleration; NSLog(@"%f, %f, %f", acc.x, acc.y, acc.z); ```
- (void)viewDidLoad {
[super viewDidLoad];
// 1.判断计步器是否可用(iOS7开始有的API)
if (![CMStepCounter isStepCountingAvailable]) {
NSLog(@"计步器不可用");
return;
}
// 2.创建计步器对象
CMStepCounter *stepCounter = [[CMStepCounter alloc] init];
// 3.开始计步
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[stepCounter startStepCountingUpdatesToQueue:queue updateOn:5 withHandler:^(NSInteger numberOfSteps, NSDate *timestamp, NSError *error) {
if (error) return;
NSString *stepString = [NSString stringWithFormat:@"您一共走%ld步", numberOfSteps];
// [self.stepLabel performSelectorOnMainThread:@selector(setText:) withObject:stepString waitUntilDone:NO];
dispatch_async(dispatch_get_main_queue(), ^{
self.stepLabel.text = stepString;
});
}];
}