ios – 有没有办法监控用户的iphone移动,如“提高说话”功能?

ios – 有没有办法监控用户的iphone移动,如“提高说话”功能?,第1张

概述我希望在用户将 iphone抬到脸上时收到通知.就像siri一样.可能吗? 添加更具体的要求: 当用户将手机放在耳边时,我想让屏幕变暗.我知道可以启用接近传感器来实现这一点.但令人讨厌的是,当用户将手指移到传感器上时,屏幕会不时变暗.所以我想知道如何避免这种情况,只有当用户抬起iphone说话时才会使屏幕变暗? 请参阅UIDevice类参考中的 Using the Proximity Sensor 我希望在用户将 iphone抬到脸上时收到通知.就像siri一样.可能吗?

添加更具体的要求:
当用户将手机放在耳边时,我想让屏幕变暗.我知道可以启用接近传感器来实现这一点.但令人讨厌的是,当用户将手指移到传感器上时,屏幕会不时变暗.所以我想知道如何避免这种情况,只有当用户抬起iphone说话时才会使屏幕变暗?

解决方法 请参阅UIDevice类参考中的 Using the Proximity Sensor.那么你:

>启用它:

UIDevice *device = [UIDevice currentDevice];device.proximityMonitoringEnabled = YES;

>检查是否成功启用;如果成功,请遵守UIDeviceProximityStateDidChangeNotification通知;如果没有,您的设备可能无法使用:

if (device.proximityMonitoringEnabled){    [[NSNotificationCenter defaultCenter] addobserver:self                                             selector:@selector(handleProximityChange:)                                                 name:UIDeviceProximityStateDIDChangeNotification                                               object:nil];}else{     // device not capable}

>并编写你的选择器:

- (voID)handleProximityChange:(NSNotification *)notification{    NSLog(@"%s proximityState=%d",__FUNCTION__,[[UIDevice currentDevice] proximityState]);}

为了检测用户是否将其握在脸上,我可能会将接近传感器与cmmotionmanager结合并查看重力属性,看看他们是否几乎垂直握住手机.因此,定义一些类属性:

@property (nonatomic,strong) cmmotionmanager *motionManager;@property (nonatomic,strong) NSOperationQueue *deviceQueue;

然后您可以启动cmmotionmanager,查找设备是否处于垂直位置:

self.deviceQueue = [[NSOperationQueue alloc] init];self.motionManager = [[cmmotionmanager alloc] init];self.motionManager.deviceMotionUpdateInterval = 5.0 / 60.0;UIDevice *device = [UIDevice currentDevice];[self.motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXArbitraryZVertical                                                        toQueue:self.deviceQueue                                                    withHandler:^(CMDeviceMotion *motion,NSError *error){    BOol vertical = (motion.gravity.z > -0.4 && motion.gravity.z < 0.4 & motion.gravity.y < -0.7);    if ((vertical && !device.proximityMonitoringEnabled) || (!vertical && device.proximityMonitoringEnabled))    {        device.proximityMonitoringEnabled = vertical;    }}];

这些重力阈值是否有意义是有点主观的.您也可以,而不是仅仅查看手机是否大致垂直握持,查看其他加速度计数据(例如,他们是否提升了对象).似乎有很多方法可以给猫皮肤.

总结

以上是内存溢出为你收集整理的ios – 有没有办法监控用户的iphone移动,如“提高说话”功能?全部内容,希望文章能够帮你解决ios – 有没有办法监控用户的iphone移动,如“提高说话”功能?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1078530.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存