public override void Init(object initData) { base.Init(initData); if (Client.Szenario == null) { Device.BeginInvokeOnMainThread(async() => { await CoreMethods.DisplayAlert("Error: 320", "The szenario doesn't exist", "OK"); }); return; } Robot = new RobotModel(Client.Szenario.Robots[0]); Client.Szenario.Command = ControlType.Control.ToString(); _speed = 0; _direction = 0; Change = "Stop"; ChangeColor = Color.FromHex("#8B0000"); }
/// <summary> /// Refresh the user interface /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void RefreshView(object sender, SensorValueChangedEventArgs e) { Device.BeginInvokeOnMainThread(async() => { double x = 0, y = 0, z = 0; switch (Device.OS) { case WinPhone: case Windows: x = Convert.ToDouble(((MotionVector)e.Value).X.ToString("F")); y = Convert.ToDouble(((MotionVector)e.Value).Y.ToString("F")); break; case Android: x = (Convert.ToDouble(((MotionVector)e.Value).X.ToString("F")) / 10) * (-1); y = (Convert.ToDouble(((MotionVector)e.Value).Y.ToString("F")) / 10) * (-1); break; case iOS: await CoreMethods.DisplayAlert("Error", "Not supported OS", "OK"); break; case Other: await CoreMethods.DisplayAlert("Error", "Not supported OS", "OK"); break; default: throw new ArgumentOutOfRangeException(); } if (Device.Idiom == TargetIdiom.Phone) { if (x <= 0.2 && x >= -0.2) { //Gerade aus if (y >= 0.2) { _speed = Steering.SpeedType.Faster; DirectionImage = "ic_expand_less_black_48dp.png"; } else if (y <= -0.2) { _speed = Steering.SpeedType.Slower; DirectionImage = "ic_expand_more_black_48dp.png"; } else { _direction = Steering.DirectionType.StraightOn; _speed = Steering.SpeedType.Equal; DirectionImage = ""; } } else { //Drehen if (x >= 0.2) { if (_direction == Steering.DirectionType.Left) { _direction = Steering.DirectionType.StraightOn; DirectionImage = ""; } else { _direction = Steering.DirectionType.Right; DirectionImage = "ic_chevron_right_black_48dp.png"; } } else if (x <= -0.2) { if (_direction == Steering.DirectionType.Right) { _direction = Steering.DirectionType.StraightOn; DirectionImage = ""; } else { _direction = Steering.DirectionType.Left; DirectionImage = "ic_chevron_left_black_48dp.png"; } } } } else if (Device.Idiom == TargetIdiom.Tablet) { if (y <= 0.2 && y >= -0.2) { //Gerade aus if (x >= 0.2) { _speed = Steering.SpeedType.Faster; DirectionImage = "ic_expand_less_black_48dp.png"; } else if (x <= -0.2) { _speed = Steering.SpeedType.Slower; DirectionImage = "ic_expand_more_black_48dp.png"; } else { _direction = Steering.DirectionType.StraightOn; _speed = Steering.SpeedType.Equal; DirectionImage = ""; } } else { //Drehen if (y >= 0.2) { _direction = Steering.DirectionType.Right; DirectionImage = "ic_chevron_right_black_48dp.png"; } else if (y <= -0.2) { _direction = Steering.DirectionType.Left; DirectionImage = "ic_chevron_left_black_48dp.png"; } } } else { await CoreMethods.DisplayAlert("Error", "Not supported target", "OK"); } }); }