iOS中的多个传感器

时间:2012-12-01 18:33:06

标签: ios gps location accelerometer

我有两种不同的POC,一种用于加速度计,另一种用于GPS。但是,我不理解将这两个应用程序结合起来的架构。我需要在应用程序加载时初始化加速和GPS。我将主视图绑定到加速,但也需要设备的位置。

我目前的架构是 工作区中的项目

  • 主要应用
  • Utility App
  • 服务应用
  • 域名应用

主应用程序ViewController继承

:UIViewController

所有连线都正确连接,加速按预期工作。

在Utility CoreLocationUtility类中,我继承了CLLocationManagerDelegate。

问题是,如何从AccelDelegate类型的同一视图中注册委托?

1 个答案:

答案 0 :(得分:0)

如果您想让ViewController充当加速度计和GPS的委托,请在其头文件中声明它遵守两个委托协议:

@interface ViewController : UIViewController <CLLocationManagerDelegate, UIAccelerometerDelegate> {
    CLLocationManager *myLocationManager; // an instance variable
}
 // ... your definitions
@end

然后在ViewController的某个地方

[UIAccelerometer sharedAccelerometer].delegate = self;
myLocationManager = [[CLLocationManager alloc] init];
myLocationManager.delegate = self;

然后在ViewController中的其他地方,为两个协议放置委托方法

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    // ... your code
}

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
   // ... your code

}

这应该有效,虽然可能有拼写错误,但我没有编译过。另外,根据我的经验,位置管理器代码往往变得非常大。将它放在自己的类中可能会好得多,可以通过ViewController进行实例化。

有人可以解释为什么UIAccelerometerDelegate协议中唯一的方法已弃用吗?