iOS_传感器

iOS传感器数据采集 传感器信息采集项目到了一定的节点,总结一下iOS中传感器信息采集的相关知识。 代码下载:https://github.com/haojinming/SensorInIOS AccelerometerGyroscopeMagnetometerPedometerBarometerGPSBluetoothMotionActivity observerAudio decibelWifi statu 阅读详情
参考:

 http://www.cnblogs.com/ShaoYinling/p/4778245.html

 http://www.jianshu.com/p/233be81b8ead


一、传感器的使用举例:

1)在地图应用中,根据手机朝向识别方向

2)打电话时,手机靠近耳朵进入锁屏状态,打到省电目的

3)根据环境亮度调节手机亮度, 拍照时,闪光灯会在一定条件下自动启动


二、传感器的类型:

/** 传感器类型            作用

        环境光传感器 Ambient Light           感应周边环境光线的强弱(自动调节屏幕的亮度)

        内部温度传感器 Internal Temperature    感应设备的温度(提醒用户降温,防止设备损坏)

        湿度传感器 Moisture           感应设备是否进水(方便维护人员)

        

       距离传感器 Proximity            感应是否有其他物体靠近设备屏幕(打电话自动锁屏)

  磁力计传感器 Mangetometer           感应周边的磁场

陀螺仪 Gyroscope                  感应设备的持握方向(赛车类游戏)

        加速计 Motion/Acceletometer          感应设备的运动(摇一摇、计步器等)

     */


————————————————————————————

距离传感器实例:

- (void)viewDidLoad {

    [super viewDidLoad];


//1.开启距离传感器,default is NO

//    [UIApplication sharedApplication].proximitySensingEnabled = YES;

    [UIDevice currentDevice].proximityMonitoringEnabled = YES;

    //2.当监听到有物体靠近设备时系统会发出通知

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(proximityStateDidChange:) name:UIDeviceProximityStateDidChangeNotification object:nil];

}


- (void)proximityStateDidChange:(NSNotification *)noti

{

    if ([UIDevice currentDevice].proximityState) {

        //有物体靠近

    } else {

        //物体离开

    }

}



————————————————————————————

加速计实例:

{

//iOS5之前版本, UIAccelerometer

    UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];

    accelerometer.delegate = self;

    accelerometer.updateInterval = 1/30.0; //1秒钟采样30次

}

#pragma mark - UIAccelerometerDelegate

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration

{

    //acceleration 中 x,y,z 三个属性分别代表每个轴上的加速度

}


//2.加速计 CoreMotion  #import <CoreMotion/CoreMotion.h>

    CMMotionManager *motionManager = [[CMMotionManager alloc] init];

    if (!motionManager.isAccelerometerAvailable) { //判断加速计是否可用

        NSLog(@"-------- 加速计不可用 ------");

        return;

    }

    motionManager.accelerometerUpdateInterval = 1/30.0; //采集间隔, 1秒30次

    //开始采样

    [motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {

        if (!error) {

            //获取加速计信息

            CMAcceleration acceleration = accelerometerData.acceleration;

            NSLog(@"x:%f, y:%f, z:%f", acceleration.x, acceleration.y, acceleration.z);

        }

    }];

    

    

    //计步器

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { // iOS7

        

        if (![CMStepCounter isStepCountingAvailable]) { //iOS7

            NSLog(@"------- iOS7 计步器不可用 ------");

            return;

        }

        

        CMStepCounter *stepCounter = [[CMStepCounter alloc] init];

        //开始计步

        [stepCounter startStepCountingUpdatesToQueue:[[NSOperationQueue alloc] init] updateOn:5 withHandler:^(NSInteger numberOfSteps, NSDate *timestamp, NSError *error) {

            if (!error) {

                NSString *stepString = [NSString stringWithFormat:@"您一共走了%zd步", numberOfSteps];

                dispatch_async(dispatch_get_main_queue(), ^{

                    //更新UI显示

                });

            }

        }];

        

    } else if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) { //iOS8

        

        if (![CMPedometer isStepCountingAvailable]) {

            NSLog(@"------- iOS8 计步器不可用 ------");

            return;

        }

        

        CMPedometer *pedMeter = [[CMPedometer alloc] init];

        //更新从某个时间开始的步数变化 (当天0点开始)

        NSCalendar *caleddar = [NSCalendar currentCalendar];

        NSDateComponents *components = [caleddar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:[NSDate date]];

        NSDate *startDate = [caleddar dateFromComponents:components];

        [pedMeter startPedometerUpdatesFromDate:startDate withHandler:^(CMPedometerData *pedometerData, NSError *error) {

            if (!error) {

                if (pedometerData) {

                    NSLog(@"numberOfSteps = %@, distance = %@", pedometerData.numberOfSteps, pedometerData.distance);

                    // numberOfSteps步数, distance距离(包括走路和跑步),floorsAscended上楼, floorsDescended下楼

                    // iOS9: currentPace步伐, currentCadence速率

                    // iOS10: averageActivePace平均步伐

                    dispatch_async(dispatch_get_main_queue(), ^{

                        //更新UI显示

                    });

                }

            }

        }];

        //查询过去某时间段内走过的步数

        [pedMeter queryPedometerDataFromDate:startDate toDate:[NSDate date] withHandler:^(CMPedometerData *pedometerData, NSError *error) {

            

        }];

        

    }


//陀螺仪 

    CMMotionManager *motionManaget = [[CMMotionManager alloc] init];

    if (!motionManaget.isGyroAvailable) {

        NSLog(@"--- 陀螺仪不可用----");

        return;

    }

    motionManaget.gyroUpdateInterval = 1/30.0; //采样间隔

    [motionManaget startGyroUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMGyroData *gyroData, NSError *error) {

        if (!error) {

            NSLog(@"x: %f, y:%f, z:%f", gyroData.rotationRate.x, gyroData.rotationRate.y, gyroData.rotationRate.z);

        }

    }];

    

    //磁力计

    if (!motionManaget.isMagnetometerAvailable) {

        NSLog(@"--- 磁力计不可用----");

        return;

    }

    motionManaget.magnetometerUpdateInterval = 1/30.0;

    [motionManaget startMagnetometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMMagnetometerData *magnetometerData, NSError *error) {

        if (!error) {

            NSLog(@"x: %f, y:%f, z:%f", magnetometerData.magneticField.x, magnetometerData.magneticField.y, magnetometerData.magneticField.z);

        }

    }];


————————————————————————————

光感实例:

//获取屏幕亮度 值:0~1.0

    [[UIScreen mainScreen] brightness];

    //亮度改变通知

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(brightnessDidChange:) name:UIScreenBrightnessDidChangeNotification object:nil];

————————————————————————————

蓝牙:CoreBluetooth.framework


iOS swift实现传感器 简单实现一些传感器import UIKit import CoreMotion import CoreLocation class ViewController: UIViewController,CLLocationManagerDelegate { @IBOutlet weak var compassView: UIView! var cmm : CMMotionM 阅读详情

相关推荐

iOS App中调用iPhone各种感应器的方法总结

CoreMotion框架的使用 CoreMotion框架十分强大,它不仅将加速度传感器和螺旋仪传感器进行了统一配置和管理,还为我们封装了许多算法,我们可以直接获取到设备的运动状态信息。 1、CoreMotion负责处理的数据 CoreMotion负责处理四种数据,一种是加速度数据,一种是螺旋仪数据,一种是磁感应数据,还有一种是前三种数据通过复杂运算得到的设备的运动数据。几个主要的类如下: CMAccelerommterData:设备的加速度数据 typedef struct {     double x;     double y;     double z; } CMAcceleration

iOS开发之传感器

传感器 什么是传感器 传感器是一种感应\检测装置, 目前已经广泛应用于智能手机上 传感器的作用 用于感应\检测设备周边的信息 不同类型的传感器, 检测的信息也不一样 iPhone中的下面现象都是由传感器完成的 在地图应用中, 能判断出手机头面向的方向 一关灯, iPhone会自动降低亮度让屏幕显得不是那么刺眼 打电话时, 人脸贴近iPhone屏幕时, 屏幕会自动锁屏, 达到...

weixin_30664539的博客 378

Python-OPCUA 实现西门子PLC数据批量读写与自动化监控

本文详细介绍了如何使用Python结合OPC UA协议,实现对西门子PLC数据的批量读写与自动化监控。通过搭建开发环境、利用KEPserverEX作为通信桥梁,并配合Python代码实战,读者可以掌握高效的数据采集、批量写入以及构建带报警功能的监控系统的方法,从而大幅提升工业自动化场景下的数据处理效率和系统灵活性。

www00的博客 180

iOS中的传感器---摇一摇, 计步器,距离感应,陀螺仪

前几天项目中用到了一下CoreMotion框架,觉得iOS中的传感器还是挺好玩的,又花了点时间去了解了一下iOS中其他一些常用的传感器应用,今天简单做下总结。 iOS中的传感器大致有以下几种: 运动传感器\加速度传感器\加速计(Motion/Accelerometer Sensor) 环境光传感器(Ambient Light Sensor) 距离传感器(Proximity Sensor) 磁力计传

SandyLoo的博客 3672

Qt5.12.12安卓开发环境搭建:Windows下避开SDK版本坑的保姆级教程

本文提供Qt5.12.12在Windows下搭建Android开发环境的详细教程,重点解决SDK版本兼容性问题,特别是cmdline-tools与JDK8的匹配陷阱。通过精准选择组件版本、手动配置路径和修复常见错误,帮助开发者高效完成环境配置,适用于Qt跨平台移动开发。

weixin_33737774的博客 542

Microchip Studio 7.0 从零开始:下载、安装到首个AVR工程实战

本文为AVR单片机开发新手提供了Microchip Studio 7.0的完整入门指南。从官方下载、避坑安装,到创建首个GCC C工程、编写LED闪烁代码,再到项目配置、仿真调试与程序烧录,手把手带你完成从零到一的实战过程,是掌握AVR开发环境的必备教程。

weixin_29200741的博客 517

iOS开发——高级篇——传感器(加速计、摇一摇、计步器)

一、传感器 1、什么是传感器传感器是一种感应\检测周围环境的一种装置, 目前已经广泛应用于智能手机上 传感器的作用用于感应\检测设备周边的信息不同类型的传感器, 检测的信息也不一样 iPhone中的下面现象都是由传感器完成的在地图应用中, 能判断出手机头面向的方向一关灯, iPhone会自动调整屏幕的亮度打电话时, 人脸贴近iPhone屏幕时, 屏幕会自动锁屏... ... 二、各种...

weixin_30710457的博客 543

Silvaco TCAD | GaN HEMT器件仿真与高频功率应用实战

本文详细介绍了使用Silvaco TCAD进行GaN HEMT器件仿真的全流程,涵盖器件结构设计、极化效应建模、高频特性分析及功率损耗优化。通过实战案例展示了GaN HEMT在电动汽车电驱和快充模块等高频功率应用中的性能优势与效率提升策略,为工程师提供可靠的仿真方法与设计验证手段。

desk3的博客 182

iOS CoreMotion获取传感器数据

attitude:通俗来讲,就是告诉你手机在当前空间的位置和姿势。gravity:重力信息,其本质是重力加速度矢量在当前设备的参考坐标系中的表达。userAcceleration:加速度信息。rotationRate:计时的旋转速率,是陀螺仪的输出。//翻滚//偏航//俯仰//重力加速度在各个方向的分量.gravity.x;.gravity.y;.gravity.z;print("重力X:%f -- Y:%f -- Z:%f", gX, gY, gZ);//检测到晃动。

培根芝士的专栏 2289

《YOLO26/YOLO11/YOLOv8改进与系统实战》,改进与系统实战专栏目录和介绍

YOLOv8 是目前比较火和比较成熟的深度学习框架,是2023年1月发布的,由 Ultralytics 团队开发。Ultralytics自YOLOv5 开始一直积极维护和更新 YOLO 框架,因此 YOLOv8 也享有持续的维护与升级支持。因此我写下《手把手教你YOLOv8实战》专栏,专门为那些对计算机视觉、深度学习、以及目标检测技术感兴趣的读者设计。通过本专栏,你将深入理解 YOLOv8 的核心原理与实际应用,从0 开始学习并掌握如何使用 YOLOv8 完成各类目标检测任务,帮助你快速上手并掌握 YOLO

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1万+

ABB机器人刷功能选项全一篇就够——不怕丢失程序和IO配置数据

ABB机器人刷功能选项

m0_66701835的博客 1258

ios传感器总结(1)

根据pm总结,手机特性包括: 1.      麦克风 2.      摄像头 3.      近场通信(NFC) 4.      蓝牙 5.      多点触屏 6.      GPS 7.      二维码 8.      重力感应传感器 9.      线性加速度传感器 10.   温度传感器 11.   距离传感器

shaobojohn的专栏 2627

【AI智能体】Codex AI 辅助编程高级技能实战操作详解

Codex AI 辅助编程高级技能实战操作详解

congge 6755

iOS 传感器集锦

代码地址如下:http://www.demodashi.com/demo/11712.html 一、指纹识别①概述 应用:指纹解锁、指纹登录、指纹支付 苹果从iPhone5S开始,具有指纹识别技术,从iOS8.0之后苹果允许第三方 App 使用 Touch ID进行身份验证。 连续三次指纹识别错误后,会自动弹出密码框,通过Touch ID的密码进行身份验证,如果此时取消密码验证,

findhappy117的博客 284

【OpenClaw从入门到精通】第12篇:OpenClaw 2026子代理实战全攻略:用ACP架构搭建多智能体协作网络(附完整代码)

本文聚焦OpenClaw 2026.3.2版本默认启用的ACP(Agent Communication Protocol)子代理机制,从核心概念、底层原理到企业级实操全流程拆解。先解析子代理的定义、ACP协议通信原理及主从代理分工逻辑,再提供环境准备的详细步骤(版本验证、配置调整、技能安装);随后通过三个递进式虚拟案例(客服分流、智能文档处理、企业级招聘全流程),提供可直接运行的完整代码、执行结果及技术要点解析;最后补充子代理管理运维、性能优化与避坑指南。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2380

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

iOS开发 传感器

传感器 什么是传感器 传感器是一种感应\检测装置, 目前已经广泛应用于智能手机上 传感器的作用 用于感应\检测设备周边的信息 不同类型的传感器, 检测的信息也不一样   iPhone中的下面现象都是由传感器完成的 在地图应用中, 能判断出手机头面向的方向 一关灯, iPhone会自动降低亮度让屏幕显得不是那么刺眼 打电话时, 人脸贴近iPhone屏幕时, 屏幕会自动锁屏, 达到

ihoudf 1135

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

iOS中常见的传感器

iOS中常见的传感器 一.距离传感器 监听方式:添加观察者,监听通知通知名称:UIDeviceProximityStateDidChangeNotification 监听状态:观察者的对应回调方法中,判断[UIDevice currentDevice].proximityState 返回 NO : 有物品靠近了;返回 YES : 有物品远离了 注意:使用前要打开当前设备距

zhYx的博客 1716

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IOS距离传感器

289

iOS中传感器的基本使用

一.距离传感器 监听方式:添加观察者,监听通知通知名称:UIDeviceProximityStateDidChangeNotification 监听状态:观察者的对应回调方法中,判断[UIDevice currentDevice].proximityState 返回 NO : 有物品靠近了;返回 YES : 有物品远离了 注意:使用前要打开当前设备距离传感器的开关(默认为:NO

CXLiao的博客 1513

iOS学习,加速度传感器

写在前面 刚开始学习iOS开发,在此过程中学习到很多知识点,写这些的目的,首先是为了给像我一样的小白提供一些参考资料,其次是对自己所学知识的一个总结与记录。 准备工作

lingduhuoyan245的专栏 1135

iOS传感器开发——距离传感器的应用

iOS传感器开发——距离传感器的应用 iPhone手机中内置了距离传感器,位置在手机的听筒附近,当我们在打电话的时候靠近听筒,手机的屏幕会自动熄灭,这就靠距离传感器来控制。 在我们开发app时,如果需要,也可以调用距离传感器的一些接口方法。距离传感器的接口十分简单,主要通过通知中心来对距离的改变进行通知。 ...

weixin_34051201的博客 233

ios-传感器简单介绍

在ios设备中都内置了一些传感器,什么是传感器?其实就是一种感应、检测的装置,就好比iphone上都有可以自动去调整手机的亮度,其实就是依赖于光线传感器的。 当然iphone中肯定不止这一个,比如说还有什么距离传感器啊,磁力计传感器,内部的温度传感器,加速度传感器等等。当然Mac电脑也是有传感器的,最简单的例子就是 背光键盘会在光线暗的时候打开。距离传感器的话就比如说是我们打电话的时候,人脸靠

rv0p111 697

IOS 传感器

一 传感器 什么是传感器  传感器是一种感应\检测周围环境的一种装置 传感器的作用 用于感应\检测设备周边的信息不同类型的传感器, 检测的信息也不一样 iPhone内置的传感器有 运动传感器\加速度传感器\加速计(Motion/Accelerometer Sensor)环境光传感器(Ambient Light Sensor)距离传感器(Proximity Sen

We’re here to put a dent in the universe. 456
上一篇: swift 类似macro
下一篇: UIKit_UIApplication
平子~~
博客等级 码龄12年 7粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值