public override void ViewDidAppear (bool animated)
		{
			base.ViewDidAppear (animated);

			//Do this on "appear" in case a child screen changed it
			_calibrationData = SharedSettings.GetCalibrationData ();

			this.ConnectToBand ();
		}
		public static CalibrationData GetCalibrationData()
		{
			var data = new CalibrationData ();
			data.Calibrated = NSUserDefaults.StandardUserDefaults.BoolForKey ("Calibrated");
			data.CalibrationValue = NSUserDefaults.StandardUserDefaults.DoubleForKey ("CalibrationValue");

			var axisStr = NSUserDefaults.StandardUserDefaults.StringForKey ("CalibrationAxis");
			if (axisStr == "X")
				data.CalibrationAxis = AccelerometerAxis.X;
			else if (axisStr == "Y")
				data.CalibrationAxis = AccelerometerAxis.Y;
			else
				data.CalibrationAxis = AccelerometerAxis.Z;

			return data;
		}
		public override void ViewDidLoad ()
		{
			base.ViewDidLoad ();

			_calibrationData = SharedSettings.GetCalibrationData ();
			UpdateUI ();

			_band = new Band.Band ();
			var acc = _band.GetAccelerometer ();

			acc.ReadingChanged += (sender, e) => {
				_calibrationData.Calibrated = true;

				AccelXMeter.Progress = (float)(e.SensorReading.AccelerationX / 5);
				AccelYMeter.Progress = (float)(e.SensorReading.AccelerationY / 5);
				AccelZMeter.Progress = (float)(e.SensorReading.AccelerationZ / 5);

				if(e.SensorReading.AccelerationX > xMax)
					xMax = e.SensorReading.AccelerationX;
				if(e.SensorReading.AccelerationY > yMax)
					yMax = e.SensorReading.AccelerationY;
				if(e.SensorReading.AccelerationZ > zMax)
					zMax = e.SensorReading.AccelerationZ;

				var currMax = Enumerable.Max(new []{xMax, yMax, zMax});
				if(_calibrationData.CalibrationValue <= currMax)
				{
					_calibrationData.CalibrationValue = currMax;

					if(xMax > Math.Max(yMax, zMax))
						_calibrationData.CalibrationAxis = AccelerometerAxis.X;
					else if(yMax > Math.Max(xMax, zMax))
						_calibrationData.CalibrationAxis = AccelerometerAxis.Y;
					else
						_calibrationData.CalibrationAxis = AccelerometerAxis.Z;

					UpdateUI();
				}
			};

			acc.StartReadings ();
		}
		public void SetUp()
		{
			_calibrationData = new CalibrationData ();
			_calibrator = new Calibrator (_calibrationData);
			_updateEventRaised = false;
		}
		public void ChangeCalibration(CalibrationData newCalibration)
		{
			_calibration = newCalibration;
		}
		public void Start(CalibrationData calibration)
		{
			_calibration = calibration;
			_accelerometerSensor.ReadingChanged += ReadingChanged;
		}
		public static void SaveCalibrationData(CalibrationData data)
		{
			NSUserDefaults.StandardUserDefaults.SetBool (data.Calibrated, "Calibrated");
			NSUserDefaults.StandardUserDefaults.SetDouble (data.CalibrationValue, "CalibrationValue");
			NSUserDefaults.StandardUserDefaults.SetString (data.CalibrationAxis.ToString(), "AccelerometerAxis");
		}
		public Calibrator (CalibrationData calibrationData)
		{
			_calibrationData = calibrationData;
		}