iOS开发传感器相关
手机里面内置了很多的传感器,例如:光传感器,湿度传感器,温度传感器,距离传感器等等
//开发传感器相关的东西必须使用真机
//在螺旋仪和加速计所有两种方式push和pull的方式,push的方式是时时检测,pull的方式是需要时获取检测值
/*
加速计push的使用步骤:
1.创建运动管理者
_mgr = [[CMMotionManager alloc] init];
2.判断手机加速计是否可用
if (!self.mgr.isAccelerometerAvailable) {
NSLog(@"加速计不可使用,请更换手机");
return;
}
3.设置取样间隔
self.mgr.accelerometerUpdateInterval = 1.0/30.0;
4.开启检测
[self.mgr startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData * _Nullable accelerometerData, NSError * _Nullable error) {
CMAcceleration acceleration = accelerometerData.acceleration;
NSLog(@"x:%f y:%f z:%f",acceleration.x,acceleration.y,acceleration.z);
}];
2.陀螺仪pull方式使用步骤
1.创建运动管理者
_mgr = [[CMMotionManager alloc] init];
2.判断手机陀螺仪是否可用
if (!self.mgr.isGyroAvailable) {
NSLog(@"陀螺仪不可用");
return;
}
3.开启检测
[self.mgr startGyroUpdates];
4.获取需要的值
CMRotationRate rotationRate = self.mgr.gyroData.rotationRate;
NSLog(@"x:%f y:%f z:%f",rotationRate.x,rotationRate.y,rotationRate.z);
//加速计和陀螺仪的用法基本一致--------------
//运动管理者控制器要去拥有它,否则有可能为局部变量,不能使用.
*/
//#import <CoreMotion/CoreMotion.h>导入与运动相关框架
#import "ViewController.h"
#import <CoreMotion/CoreMotion.h>
@interface ViewController ()
@property (nonatomic,strong) CMMotionManager * mgr;
@end
@implementation ViewController
//懒加载创建运动管理者
- (CMMotionManager *)mgr
{
if (_mgr == nil) {
_mgr = [[CMMotionManager alloc] init];
}
return _mgr;
}
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
NSLog(@"%zd,%@",motion,event);
NSLog(@"开始摇晃");
}
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
NSLog(@"%zd,%@",motion,event);
NSLog(@"摇晃取消");
}
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
NSLog(@"%zd,%@",motion,event);
NSLog(@"摇晃结束");
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
//加速计相关
// CMAcceleration acceleration = self.mgr.accelerometerData.acceleration;
// NSLog(@"x:%f y:%f z:%f",acceleration.x,acceleration.y,acceleration.z);
//加速计相关
//陀螺仪相关
CMRotationRate rotationRate = self.mgr.gyroData.rotationRate;
NSLog(@"x:%f y:%f z:%f",rotationRate.x,rotationRate.y,rotationRate.z);
}
- (void)pullGyro
{
if (!self.mgr.isGyroAvailable) {
NSLog(@"陀螺仪不可用");
return;
}
[self.mgr startGyroUpdates];
}
- (void)pushGyro
{
//判断手机的陀螺仪是否可用
if (!self.mgr.gyroAvailable) {
NSLog(@"陀螺仪不可用,请更换手机");
return;
}
//设置采样间隔
self.mgr.gyroUpdateInterval = 1.0/20.0;
//开始检测陀螺仪的变化
[self.mgr startGyroUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMGyroData * _Nullable gyroData, NSError * _Nullable error) {
CMRotationRate rotationRate = self.mgr.gyroData.rotationRate;
NSLog(@"x:%f y:%f z:%f",rotationRate.x,rotationRate.y,rotationRate.z);
}];
}
- (void)pullAccelerometer
{
if (!self.mgr.isAccelerometerAvailable) {
NSLog(@"加速计不可使用,请更换手机");
return;
}
[self.mgr startAccelerometerUpdates];
}
- (void)pushAccelerometer
{
//CMMotionManager * mgr = [[CMMotionManager alloc] init];
//判断加速计是否可用
if (!self.mgr.isAccelerometerAvailable) {
NSLog(@"加速计不可用,请更换手机");
return;
}
//设置采样间隔
self.mgr.accelerometerUpdateInterval = 1.0/30.0;
[self.mgr startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData * _Nullable accelerometerData, NSError * _Nullable error) {
CMAcceleration acceleration = accelerometerData.acceleration;
NSLog(@"x:%f y:%f z:%f",acceleration.x,acceleration.y,acceleration.z);
}];
}
- (void)proximityMonitoring
{
//开启距离传感器
[UIDevice currentDevice].proximityMonitoringEnabled = YES;
//监听距离的变化
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(proximityStateDidChange:) name:UIDeviceProximityStateDidChangeNotification object:nil];
}
- (void)proximityStateDidChange:(NSNotification*)noti
{
if ([UIDevice currentDevice].proximityState == YES) {
NSLog(@"有物品靠近");
}else{
NSLog(@"物品离开");
}
}
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
iOS开发传感器相关的更多相关文章
- iOS 开发,相关网址
iOS 开发,相关网址 说明 网址 注册开发者 https://developer.apple.com/cn/programs/enroll/ 未付费688个人开发账号真机调试测试教程 http:// ...
- iOS开发其他相关
1.iOS开发行情 1.1 iOS系统各个版本的占比查询 2.Xcode的使用 开发软件下载 Xcode Help(官方) 2.1 Xcode面板 Xcode面板 2.2 Xcode版本新功能 Xco ...
- iOS开发,UITableView相关问题
第一条:UITableViewCell 内容的设置 //文本放到最后 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_dataArr.co ...
- iOS开发 传感器(加速计、摇一摇、计步器)
一.传感器 1.什么是传感器传感器是一种感应\检测周围环境的一种装置, 目前已经广泛应用于智能手机上 传感器的作用用于感应\检测设备周边的信息不同类型的传感器, 检测的信息也不一样 iPhone中的下 ...
- iOS 开发库相关(持续更新)
01-给任意view添加毛玻璃效果 https://github.com/JagCesar/iOS-blur 02-浮动式的textfield输入框(可用于登录界面) https://github ...
- 【转】 iOS开发之打包上传到App Store——(一)各种证书的理解
OK,有日子没写iOS开发的相关文章啦,主要是最近的精力都没在这上面,不过既然产品已经快要出来了,就有必要了解一下各种证书啥的(众所周知iOS的一堆证书可是很让人头大呀),最近确实被这个搞得头大,然后 ...
- Mac和iOS开发资源汇总
小引 本文主要汇集一些苹果开发的资源,会经常更新,建议大家把这篇文章单独收藏(在浏览器中按command+D). 今天(2013年7月19日)收录了许多中文网站和博客.大家一定要去感受一下哦. 如果大 ...
- 【转】Mac和iOS开发资源汇总—更新于2013-07-19
小引 本文主要汇集一些苹果开发的资源,会经常更新,建议大家把这篇文章单独收藏(在浏览器中按command+D). 今天(2013年7月19日)收录了许多中文网站和博客.大家一定要去感受一下哦. 如果大 ...
- (转载)Mac和iOS开发资源汇总—更新于2013-07-19
(转载)http://beyondvincent.com/2013/07/18/resources-for-mac-and-ios-developers/ 小引 本文主要汇集一些苹果开发的资源,会经常 ...
随机推荐
- 主成分分析 R语言
主成分分析(Principal Component Analysis,PCA), 是一种统计方法.通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分. 原理: ...
- C# 语言规范_版本5.0 (第20章 附录B_语法)
A. 语法 此附录是主文档中描述的词法和语法以及不安全代码的语法扩展的摘要.这里,各语法产生式是按它们在主文档中出现的顺序列出的. A.1 词法文法 input: input-sectionopt i ...
- 四位len灯流水
#include <msp430x14x.h> //#include<intrins.h> #define uint unsigned int void delay(long ...
- Python3 md5加密
import hashlibuser = 'jointwisdom'pwd = 'zhonghui123'm2 = hashlib.md5()m2.update(pwd.encode("ut ...
- 了解OutOfMemoryError异常 - 深入Java虚拟机读后总结
JVM中的异常发生 Java虚拟机规范中除了程序计数器外,其他几个运行时区域都有发生OutOfMemoryError异常的可能. 本章笔记通过代码来验证Java虚拟机规范中描述的各个运行时区域存储的内 ...
- linux for 使用
第一种:命令使用方法 例子1: cat test.txt 1 2 3 for i in $(cat test.txt) do echo $i done 例子2: for i in 1 2 3 4 do ...
- jsp日期插件My97DatePicker 强大的日期控件 使用方便简单
本文属转载(希望对编程爱好者有所帮助)详情请访问官方网站 http://www.my97.net/dp/index.asp 一. 简介 1. 简介 目前的版本是:4.7 2. 注意事项 My97Dat ...
- <蛇形填数>--算法竞赛 入门经典(第2版)- 3.1 数组 程序3-3 蛇形填数
蛇形填数: 在n×n方阵里填入1,2,....,n×n,要求填成蛇形.例如,n = 4 时方阵为: 10 11 12 1 9 16 13 2 8 15 14 3 7 ...
- Android UI方面的学习记录
1,android:textAllCaps=“false” android5.0后有可能button的text显示全是大写,设置这个后才能正常显示小写 2,优化listview性能: 1,view重用 ...
- informix数据迁移工具使用介绍
一.dbschema USAGE: dbschema [-q] [-t tabname] [-s user] [-p user] [-r rolename] [-f procname] ...