标签: apple-m7

CoreMotion在后台状态下更新

使用最新iOS设备中的M7芯片,当用户使用CMMotionActivityManager从静止到跑步,步行等时,可以通过编程方式获得通知.当Stava和Runkeeper 检测到用户没有通过M7移动时,它们都使用它来自动暂停GPS轮询(关闭GPS天线),然后在再次移动时重新启用GPS更新.当应用程序处于后台状态时,它可以执行此操作,这是此处的关键.

我在复制此功能时遇到的问题是,如果我在我的应用程序处于后台时关闭GPS更新,我将停止接收活动更新,并且无法再检测用户何时通过M7再次移动以重新打开GPS.

如果我让GPS一直运行,我会在整个应用程序处于后台时继续从Core Motion获取移动更新.

我假设他们没有玩白噪声或其他一些廉价的技巧来保持活跃.他们是怎么做到的?

core-location ios core-motion apple-m7

35
推荐指数
2
解决办法
2万
查看次数

检测用户是否正在开车

注意:此问题最初是在Apple在iOS SDK中引入运动检测硬件和相关API之前发布的.然而,这个问题的答案仍然有用.


我正在创建一个iPhone iOS应用程序,它涉及跟踪用户的跑步和/或步行.用户跑步和走路的记录结果保持诚实非常重要.我需要一种方法来捕捉可能在使用汽车时作弊(或意外地离开跟踪器)的用户.

要检查如果用户驾驶或乘坐一辆车我首先想到这两项检查,但也不能真正确定该用户是在汽车或没有(一个点).

  1. 使用以下方法检查用户的当前速度.如果用户的行进速度超过20-ahh MPH,那么我可以假设用户在车内:

    - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
          CLLocation *recentLocation = [locations lastObject];
          recentLocation.speed; //If speed is over 20 MPH, assume the user is not on their feet.
    
    Run Code Online (Sandbox Code Playgroud)

    但是,我不确定这是否真的是一个很好的检查,因为人们的记录比以前更快.这是一个很好的检查还是我应该使用其他东西?

  2. 使用Core Motion Framework提供的Accelerometer和Motion API确定用户加速的速度.如果用户加速超过一定的速率,那么我可以假设用户正在车辆中行驶.

这些假设是否正确?我想我真正的问题是:有没有更好的方法来检测用户是否在车内移动 - 如果是这样的话?.如果没有,那么这些检查是否适用于这种情况,或者这对那些实际上那么快的用户来说是否会烦恼?CoreMotion是适当的API吗?


编辑:新的iPhone 5S M7协处理器提供更准确的运动检测.任何人都可以解释如何使用新的M7 API吗?

objective-c core-location ios core-motion apple-m7

33
推荐指数
2
解决办法
3万
查看次数

使用Core Motion和CMAccelerometer数据检测某人何时开始行走

我正在尝试检测三种动作:当用户开始步行,慢跑或跑步时.然后我想知道何时停止.我成功地检测到有人在走路,慢跑或跑步时使用以下代码:

- (void)update:(CMAccelerometerData *)accelData {

    [(id) self setAcceleration:accelData.acceleration];

    NSTimeInterval secondsSinceLastUpdate = -([self.lastUpdateTime timeIntervalSinceNow]);

    if (labs(_acceleration.x) >= 0.10000) {
        NSLog(@"walking: %f",_acceleration.x);
    }
    else if (labs(_acceleration.x) > 2.0) {
        NSLog(@"jogging: %f",_acceleration.x);
    }
    else if (labs(_acceleration.x) > 4.0) {
        NSLog(@"sprinting: %f",_acceleration.x);
    }
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是双重的:

1)每次有动作时都会多次调用更新,这可能是因为它经常检查当用户开始行走时(即_acceleration.x> = .1000)它再次调用更新时仍然> = .1000.

示例日志:

    2014-02-22 12:14:20.728 myApp[5039:60b] walking: 1.029846
    2014-02-22 12:14:20.748 myApp[5039:60b] walking: 1.071777
    2014-02-22 12:14:20.768 myApp[5039:60b] walking: 1.067749
Run Code Online (Sandbox Code Playgroud)

2)我很难弄清楚如何检测用户何时停止.有没有人就如何实施"停止检测"提出建议

objective-c ios core-motion apple-m7

19
推荐指数
4
解决办法
2万
查看次数

我的应用程序可以要求iPhone 5S吗?

我正在编写一款需要iPhone 5S中的M7 Motion协处理器芯片的应用程序.由于该芯片不在任何其他iPhone中,该应用程序只能在iPhone 5S上正常运行.

Is there any way to require that a user has an iPhone 5S before downloading my app? Sort of like how you can make an app iPad specific?

I am looking for a way to select the iPhone hardware requirement. Not the iOS version requirement.

iphone ios core-motion apple-m7

14
推荐指数
1
解决办法
3136
查看次数

CMMotionActivityManager忽略循环

我一直在研究新的M7芯片CMMotionActivityManager,用于确定设备的用户是在走路,跑步,在汽车等等(参见Apple文档).这似乎是尝试LocationManager仅使用和加速计数据来确定此前一步的一大进步.

然而,我注意到CMMotionActivityManager没有自行车活动,这是令人失望的,并且几乎是一个完全用作新活动经理的交易破坏者.有没有其他人找到一个方便的方式CMMotionActivityManager与骑自行车一起使用,而不必重新加入CMLocationManager+加速度计只是为了尝试测试骑自行车?

请注意,这也不包括像火车这样的东西的一般运输选项.例如,我每天在火车上上班一小时.汽车可以至少更加通用,类似于Move使用Transport的方式.

CMMotionActivity 仅具有以下定义的运动类型:

  • 静止的
  • 步行
  • 赛跑
  • 汽车
  • 未知

来自Apple代码的有用说明,不一定能解决问题,但有用:

CMMotionActivity

基于设备的运动估计用户的活动.

活动作为一组属性公开,属性不是互斥的.

例如,如果您在停车标志处停车时状态可能如下:固定=是,行走=否,运行=否,汽车=是

或移动车辆,静止=否,行走=否,运行=否,汽车=是

或者设备可以运动但不能行走或在车辆中.静止=否,行走=否,运行=否,汽车=否.请注意,在这种情况下,所有属性都是NO.

[直接来源:Apple iOS Framework,CoreMotion/CMMotionActivity.h @interface CMMotionActivity,内联代码注释]

ios core-motion apple-m7

10
推荐指数
1
解决办法
3194
查看次数

如何检测M7是否存在,又称它是iPhone 5S还是更新?

试图找到一种检测M7存在的方法.

如果M7不存在,查询CMStepCounter或CMMotionActivity类是否毫无意义?我的猜测是,在拥有iOS 7.0的非M7型号上,这些类可以获得数据,但效率并不高,而且使用的电池更多.

粗暴的方式是:

struct utsname systemInfo;

uname(&systemInfo);

model =  [[NSString alloc] initWithCString:systemInfo.machine
                                      encoding:NSUTF8StringEncoding];

version =  [[NSString alloc] initWithString:[[UIDevice currentDevice] systemVersion]];


if ([model compare:@"iPhone6,1"]) {

}
Run Code Online (Sandbox Code Playgroud)

sdk ios core-motion apple-m7

7
推荐指数
1
解决办法
2092
查看次数

在iOS 7的iphone模拟器上测试CoreMotion API(需要M7)

有没有人用模拟器成功测试过任何新的CoreMotion API?似乎需要M7的那些不起作用.我试过在运行iOS 7的新模拟器上调用这些函数

(BOOL)isActivityAvailable
Run Code Online (Sandbox Code Playgroud)

(BOOL)isStepCountingAvailable
Run Code Online (Sandbox Code Playgroud)

但是两个函数调用都返回false.

core-motion ios7 apple-m7

5
推荐指数
1
解决办法
2564
查看次数

如何实现CMStepCounter CoreMotion - M7芯片

我想知道是否有人可以向我展示如何实施CMStepCounter的示例.(我查看了文档,但仍然对如何实现有点困惑).

我想在每次采取步骤时更新我的​​视图上的UILabel.我也希望让应用程序在关闭时继续计算步数.

我对iOS比较新,任何帮助都会非常感激:)!

谢谢,瑞恩

counter objective-c ios core-motion apple-m7

5
推荐指数
1
解决办法
4225
查看次数

利用iPhone5S中的M7芯片

我想知道是否有人能指出我在iPhone5S及以上版本中使用M7芯片的正确方向.

我想知道它是否只是在您使用通用核心运动API时自动使用,或者是否有一组特定的API可供使用?

最后我注意到在线阅读一些文章,它保留了一些历史运动数据,任何人都知道如何访问这个或任何人都可以指出我正确的方向?

iphone api core-motion ios7 apple-m7

3
推荐指数
1
解决办法
2388
查看次数

标签 统计

apple-m7 ×9

core-motion ×9

ios ×7

objective-c ×3

core-location ×2

ios7 ×2

iphone ×2

api ×1

counter ×1

sdk ×1