protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            base.RequestedOrientation = Android.Content.PM.ScreenOrientation.Portrait;
            brickController           = BrickController.Instance;
            settings = RemoteSettings.Instance;
            SetContentView(Resource.Layout.tab);

            ActionBar actionBar = this.ActionBar;

            //actionBar.SetDisplayShowTitleEnabled (false);
            //actionBar.SetDisplayShowHomeEnabled (false);
            actionBar.NavigationMode = ActionBarNavigationMode.Tabs;

            vehicleTab = actionBar.NewTab().SetText("Vehicle");
            sensorTab  = actionBar.NewTab().SetText("Sensor");
            motorTab   = actionBar.NewTab().SetText("Motor");
            fileTab    = actionBar.NewTab().SetText("Files");
            mailboxTab = actionBar.NewTab().SetText("Mailbox");

            vehicleFragment = new VehicleFragment();
            fileFragment    = new FileListFragment();
            sensorFragment  = new SensorFragment();
            Fragment empty = new Fragment();

            vehicleTab.SetTabListener(new MyTabsListener(vehicleFragment));
            sensorTab.SetTabListener(new MyTabsListener(sensorFragment));
            motorTab.SetTabListener(new MyTabsListener(empty));
            fileTab.SetTabListener(new MyTabsListener(fileFragment));
            mailboxTab.SetTabListener(new MyTabsListener(empty));

            settings.Initialize(GetSharedPreferences("RemoteSettings", 0));

            actionBar.AddTab(vehicleTab);
            actionBar.AddTab(sensorTab);
            //actionBar.AddTab(motorTab);
            actionBar.AddTab(fileTab);
            //actionBar.AddTab(mailboxTab);
            if (!hasSubscribed)
            {
                brickController.NewBrick += delegate(MonoBrick.NXT.Brick <MonoBrick.NXT.Sensor, MonoBrick.NXT.Sensor, MonoBrick.NXT.Sensor, MonoBrick.NXT.Sensor> nxt) {
                    nxt.Connection.Disconnected += OnDisconnected;
                    nxt.Connection.Connected    += OnConnected;
                };
                brickController.BrickException   += OnBrickException;
                brickController.ThreadNotStarted += OnThreadOnstarted;
                hasSubscribed = true;
            }
        }
			protected override void OnCreate (Bundle savedInstanceState) {
				base.OnCreate(savedInstanceState);
				base.RequestedOrientation = Android.Content.PM.ScreenOrientation.Portrait;
				brickController = BrickController.Instance;
				settings = RemoteSettings.Instance;
				SetContentView(Resource.Layout.tab);

				ActionBar actionBar = this.ActionBar;
				//actionBar.SetDisplayShowTitleEnabled (false);
				//actionBar.SetDisplayShowHomeEnabled (false);
				actionBar.NavigationMode = ActionBarNavigationMode.Tabs;
				
				vehicleTab = actionBar.NewTab ().SetText ("Vehicle");
				sensorTab = actionBar.NewTab ().SetText ("Sensor");
				motorTab = actionBar.NewTab ().SetText ("Motor");
				fileTab = actionBar.NewTab().SetText("Files");
				mailboxTab = actionBar.NewTab ().SetText ("Mailbox");
				
				vehicleFragment = new VehicleFragment();
				fileFragment = new FileListFragment();
				sensorFragment = new SensorFragment();
				Fragment empty = new Fragment ();

				vehicleTab.SetTabListener (new MyTabsListener(vehicleFragment)); 
				sensorTab.SetTabListener (new MyTabsListener(sensorFragment)); 
				motorTab.SetTabListener(new MyTabsListener(empty )); 
				fileTab.SetTabListener(new MyTabsListener(fileFragment)); 
				mailboxTab.SetTabListener (new MyTabsListener(empty));
				
				settings.Initialize(GetSharedPreferences ("RemoteSettings", 0));
				
				actionBar.AddTab(vehicleTab);
				actionBar.AddTab(sensorTab);
				//actionBar.AddTab(motorTab);
				actionBar.AddTab(fileTab);
				//actionBar.AddTab(mailboxTab);
				if(!hasSubscribed){
					brickController.NewBrick += delegate(MonoBrick.NXT.Brick<MonoBrick.NXT.Sensor, MonoBrick.NXT.Sensor, MonoBrick.NXT.Sensor, MonoBrick.NXT.Sensor> nxt) {
						nxt.Connection.Disconnected += OnDisconnected;
						nxt.Connection.Connected += OnConnected;
					};
					brickController.BrickException += OnBrickException;
					brickController.ThreadNotStarted += OnThreadOnstarted;
					hasSubscribed = true;
				}
			}
Ejemplo n.º 3
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            settings        = RemoteSettings.Instance;
            brickController = BrickController.Instance;

            AddPreferencesFromResource(Resource.Layout.Settings);

            deviceList = (ListPreference)FindPreference("bluetoothDevice");
            brickType  = (ListPreference)FindPreference("brickType");


            leftMotor       = (ListPreference)FindPreference("leftMotor");
            rightMotor      = (ListPreference)FindPreference("rightMotor");
            additionalMotor = (ListPreference)FindPreference("additionalMotor");

            leftMotorReverse       = (CheckBoxPreference)FindPreference("reverseLeftMotor");
            rightMotorReverse      = (CheckBoxPreference)FindPreference("reverseRightMotor");
            additionalMotorReverse = (CheckBoxPreference)FindPreference("reverseAdditionalMotor");

            sendVehicleDataToMailbox = (CheckBoxPreference)FindPreference("sendVehicleDataToMailbox");
            vehicleMailbox           = (ListPreference)FindPreference("vehicleMailbox");
            vehicleAngleOffset       = (ListPreference)FindPreference("vehicleAngleOffset");

            sensorValueToSpeech = (CheckBoxPreference)FindPreference("sensorValueToSpeech");

            deviceList.OnPreferenceChangeListener = this;
            brickType.OnPreferenceChangeListener  = this;


            leftMotor.OnPreferenceChangeListener       = this;
            rightMotor.OnPreferenceChangeListener      = this;
            additionalMotor.OnPreferenceChangeListener = this;

            leftMotorReverse.OnPreferenceChangeListener       = this;
            rightMotorReverse.OnPreferenceChangeListener      = this;
            additionalMotorReverse.OnPreferenceChangeListener = this;

            sendVehicleDataToMailbox.OnPreferenceChangeListener = this;
            vehicleMailbox.OnPreferenceChangeListener           = this;

            sensorValueToSpeech.OnPreferenceChangeListener = this;

            vehicleAngleOffset.OnPreferenceChangeListener = this;
        }
Ejemplo n.º 4
0
 public bool OnPreferenceChange(Preference preference, Java.Lang.Object newValue)
 {
     if (preference.Equals(deviceList))
     {
         preference.Summary  = (string)newValue;
         settings.DeviceName = preference.Summary;
     }
     if (preference.Equals(brickType))
     {
         preference.Summary = (string)newValue;
         settings.Type      = RemoteSettings.StringToBrickType(preference.Summary);
     }
     if (preference.Equals(leftMotor))
     {
         preference.Summary = (string)newValue;
         settings.LeftPort  = RemoteSettings.StringToMotorPort(preference.Summary);
     }
     if (preference.Equals(rightMotor))
     {
         preference.Summary = (string)newValue;
         settings.RightPort = RemoteSettings.StringToMotorPort(preference.Summary);
     }
     if (preference.Equals(additionalMotor))
     {
         preference.Summary      = (string)newValue;
         settings.AdditionalPort = RemoteSettings.StringToMotorPort(preference.Summary);
     }
     if (preference.Equals(vehicleMailbox))
     {
         preference.Summary      = (string)newValue;
         settings.VehicleMailbox = RemoteSettings.StringToMailbox(preference.Summary);
     }
     if (preference.Equals(vehicleAngleOffset))
     {
         if (((string)newValue).ToLower() == "up")
         {
             preference.Summary = "0 degrees will be up on the circle";
         }
         if (((string)newValue).ToLower() == "left")
         {
             preference.Summary = "0 degrees will be to the left on the circle";
         }
         if (((string)newValue).ToLower() == "right")
         {
             preference.Summary = "0 degrees will be to the right on the circle";
         }
         if (((string)newValue).ToLower() == "down")
         {
             preference.Summary = "0 degrees will be down on the circle";
         }
         settings.DegreeOffset = RemoteSettings.StringToDegreeOffset((string)newValue);
     }
     if (preference.Equals(sendVehicleDataToMailbox))
     {
         if ((bool)newValue)
         {
             preference.Summary = SendVehicleCommandsToMailboxText;
         }
         else
         {
             preference.Summary = SendVehicleCommandsToBrickText;
         }
         SetVehicleMailbox((bool)newValue);
         settings.SendVehicleDataToMailbox = (bool)newValue;
     }
     if (preference.Equals(sensorValueToSpeech))
     {
         if ((bool)newValue)
         {
             preference.Summary = SensorToSpeechEnabledText;
         }
         else
         {
             preference.Summary = SensorToSpeechDisabledText;
         }
         settings.SensorValueToSpeech = (bool)newValue;
     }
     if (preference.Equals(leftMotorReverse))
     {
         settings.ReverseLeft = (bool)newValue;
     }
     if (preference.Equals(rightMotorReverse))
     {
         settings.ReverseRight = (bool)newValue;
     }
     if (preference.Equals(additionalMotorReverse))
     {
         settings.ReverseAdditional = (bool)newValue;
     }
     return(true);
 }
Ejemplo n.º 5
0
        private void LoadSettings()
        {
            //var pref = PreferenceManager.GetDefaultSharedPreferences(this.BaseContext);
            deviceList.Enabled = !brickController.NXT.Connection.IsConnected;

            brickType.Summary = RemoteSettings.BrickTypeToString(settings.Type);

            brickType.Enabled = !brickController.NXT.Connection.IsConnected;

            //The only brick type supported at this point is the NXT
            brickType.Enabled = false;
            brickType.Summary = "NXT";


            leftMotor.Summary       = RemoteSettings.MotorPortToString(settings.LeftPort);
            rightMotor.Summary      = RemoteSettings.MotorPortToString(settings.RightPort);
            additionalMotor.Summary = RemoteSettings.MotorPortToString(settings.AdditionalPort);

            leftMotorReverse.Checked       = settings.ReverseLeft;
            rightMotorReverse.Checked      = settings.ReverseRight;
            additionalMotorReverse.Checked = settings.ReverseAdditional;


            vehicleMailbox.Summary = RemoteSettings.MailBoxToString(settings.VehicleMailbox);

            vehicleAngleOffset.Summary = RemoteSettings.DegreeOffsetToString(settings.DegreeOffset);
            if (vehicleAngleOffset.Summary.ToLower() == "up")
            {
                vehicleAngleOffset.Summary = "0 degrees will be up on the circle";
            }
            if (vehicleAngleOffset.Summary.ToLower() == "left")
            {
                vehicleAngleOffset.Summary = "0 degrees will be to the left on the circle";
            }
            if (vehicleAngleOffset.Summary.ToLower() == "right")
            {
                vehicleAngleOffset.Summary = "0 degrees will be to the right on the circle";
            }
            if (vehicleAngleOffset.Summary.ToLower() == "down")
            {
                vehicleAngleOffset.Summary = "0 degrees will be down on the circle";
            }


            sendVehicleDataToMailbox.Checked = settings.SendVehicleDataToMailbox;
            if (sendVehicleDataToMailbox.Checked)
            {
                sendVehicleDataToMailbox.Summary = SendVehicleCommandsToMailboxText;
            }
            else
            {
                sendVehicleDataToMailbox.Summary = SendVehicleCommandsToBrickText;
            }

            sensorValueToSpeech.Checked = settings.SensorValueToSpeech;
            if (sensorValueToSpeech.Checked)
            {
                sensorValueToSpeech.Summary = SensorToSpeechEnabledText;
            }
            else
            {
                sensorValueToSpeech.Summary = SensorToSpeechDisabledText;
            }

            //update the UI
            SetVehicleMailbox(sendVehicleDataToMailbox.Checked);
        }
Ejemplo n.º 6
0
        public override void OnActivityCreated(Bundle savedInstanceState)
        {
            base.OnActivityCreated(savedInstanceState);
            brickController = BrickController.Instance;
            remoteSettings  = RemoteSettings.Instance;

            sensorSpinner[0] = this.View.FindViewById <Spinner> (Resource.Id.sensorSpinner1);
            sensorSpinner[1] = this.View.FindViewById <Spinner> (Resource.Id.sensorSpinner2);
            sensorSpinner[2] = this.View.FindViewById <Spinner> (Resource.Id.sensorSpinner3);
            sensorSpinner[3] = this.View.FindViewById <Spinner> (Resource.Id.sensorSpinner4);

            sensorReadButton[0] = this.View.FindViewById <Button> (Resource.Id.readButton1);
            sensorReadButton[1] = this.View.FindViewById <Button> (Resource.Id.readButton2);
            sensorReadButton[2] = this.View.FindViewById <Button> (Resource.Id.readButton3);
            sensorReadButton[3] = this.View.FindViewById <Button> (Resource.Id.readButton4);

            sensorSayButton[0] = this.View.FindViewById <Button> (Resource.Id.sayButton1);
            sensorSayButton[1] = this.View.FindViewById <Button> (Resource.Id.sayButton2);
            sensorSayButton[2] = this.View.FindViewById <Button> (Resource.Id.sayButton3);
            sensorSayButton[3] = this.View.FindViewById <Button> (Resource.Id.sayButton4);

            sensorValue[0] = this.View.FindViewById <EditText> (Resource.Id.sensorValue1);
            sensorValue[1] = this.View.FindViewById <EditText> (Resource.Id.sensorValue2);
            sensorValue[2] = this.View.FindViewById <EditText> (Resource.Id.sensorValue3);
            sensorValue[3] = this.View.FindViewById <EditText> (Resource.Id.sensorValue4);


            ArrayAdapter <string> adapter = new ArrayAdapter <string>(this.Activity, Android.Resource.Layout.SimpleSpinnerItem);

            string[] sensorNames = MonoBrick.NXT.Sensor.SensorDictionary.Keys.ToArray();
            foreach (string s in sensorNames)
            {
                adapter.Add(s);
            }
            for (int i = 0; i < 4; i++)
            {
                sensorSpinner[i].Adapter = adapter;
            }
            sensorReadButton[0].Click += delegate {
                brickController.SpawnThread(delegate(){
                    string s = brickController.NXT.Sensor1.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        sensorValue[0].Text = s;
                    });
                });
            };

            sensorReadButton[1].Click += delegate {
                brickController.SpawnThread(delegate(){
                    string s = brickController.NXT.Sensor2.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        sensorValue[1].Text = s;
                    });
                });
            };

            sensorReadButton[2].Click += delegate {
                brickController.SpawnThread(delegate(){
                    string s = brickController.NXT.Sensor3.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        sensorValue[2].Text = s;
                    });
                });
            };

            sensorReadButton[3].Click += delegate {
                brickController.SpawnThread(delegate(){
                    string s = brickController.NXT.Sensor4.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        sensorValue[3].Text = s;
                    });
                });
            };

            sensorSayButton[0].Click += delegate {
                brickController.SpawnThread(delegate(){
                    string s = brickController.NXT.Sensor1.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        sensorValue[0].Text = s;
                        //this should not run in the gui thread
                        if (remoteSettings.SensorValueToSpeech && TabActivity.Speech != null)
                        {
                            TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
                        }
                    });
                });
            };


            sensorSayButton[1].Click += delegate {
                brickController.SpawnThread(delegate(){
                    string s = brickController.NXT.Sensor2.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        sensorValue[1].Text = s;
                        //this should not run in the gui thread
                        if (remoteSettings.SensorValueToSpeech && TabActivity.Speech != null)
                        {
                            TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
                        }
                    });
                });
            };


            sensorSayButton[2].Click += delegate {
                brickController.SpawnThread(delegate(){
                    string s = brickController.NXT.Sensor3.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        sensorValue[2].Text = s;
                        //this should not run in the gui thread
                        if (remoteSettings.SensorValueToSpeech && TabActivity.Speech != null)
                        {
                            TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
                        }
                    });
                });
            };

            sensorSayButton[3].Click += delegate {
                brickController.SpawnThread(delegate(){
                    string s = brickController.NXT.Sensor4.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        sensorValue[3].Text = s;
                        //this should not run in the gui thread
                        if (remoteSettings.SensorValueToSpeech && TabActivity.Speech != null)
                        {
                            TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
                        }
                    });
                });
            };

            sensorSpinner[0].Id            = 0;
            sensorSpinner[0].ItemSelected += delegate(object sender, AdapterView.ItemSelectedEventArgs e) {
                Spinner spinner = (Spinner)sender;
                MonoBrick.NXT.Sensor newSensor = MonoBrick.NXT.Sensor.SensorDictionary[(string)spinner.GetItemAtPosition(e.Position)];
                remoteSettings.Sensor1 = (string)spinner.GetItemAtPosition(e.Position);
                brickController.SpawnThread(delegate(){
                    brickController.NXT.Sensor1 = newSensor;
                });
            };

            sensorSpinner[1].Id            = 0;
            sensorSpinner[1].ItemSelected += delegate(object sender, AdapterView.ItemSelectedEventArgs e) {
                Spinner spinner = (Spinner)sender;
                MonoBrick.NXT.Sensor newSensor = MonoBrick.NXT.Sensor.SensorDictionary[(string)spinner.GetItemAtPosition(e.Position)];
                remoteSettings.Sensor2 = (string)spinner.GetItemAtPosition(e.Position);
                brickController.SpawnThread(delegate(){
                    brickController.NXT.Sensor2 = newSensor;
                });
            };

            sensorSpinner[2].Id            = 0;
            sensorSpinner[2].ItemSelected += delegate(object sender, AdapterView.ItemSelectedEventArgs e) {
                Spinner spinner = (Spinner)sender;
                MonoBrick.NXT.Sensor newSensor = MonoBrick.NXT.Sensor.SensorDictionary[(string)spinner.GetItemAtPosition(e.Position)];
                remoteSettings.Sensor3 = (string)spinner.GetItemAtPosition(e.Position);
                brickController.SpawnThread(delegate(){
                    brickController.NXT.Sensor3 = newSensor;
                });
            };

            sensorSpinner[3].Id            = 0;
            sensorSpinner[3].ItemSelected += delegate(object sender, AdapterView.ItemSelectedEventArgs e) {
                Spinner spinner = (Spinner)sender;
                MonoBrick.NXT.Sensor newSensor = MonoBrick.NXT.Sensor.SensorDictionary[(string)spinner.GetItemAtPosition(e.Position)];
                remoteSettings.Sensor4 = (string)spinner.GetItemAtPosition(e.Position);
                brickController.SpawnThread(delegate(){
                    brickController.NXT.Sensor4 = newSensor;
                });
            };
        }
			public override void OnActivityCreated (Bundle savedInstanceState)
			{
				base.OnActivityCreated (savedInstanceState);
				brickController = BrickController.Instance;
				remoteSettings = RemoteSettings.Instance;
				
				sensorSpinner[0] = this.View.FindViewById<Spinner> (Resource.Id.sensorSpinner1);
				sensorSpinner[1] = this.View.FindViewById<Spinner> (Resource.Id.sensorSpinner2);
				sensorSpinner[2] = this.View.FindViewById<Spinner> (Resource.Id.sensorSpinner3);
				sensorSpinner[3] = this.View.FindViewById<Spinner> (Resource.Id.sensorSpinner4);
			
				sensorReadButton[0] = this.View.FindViewById<Button> (Resource.Id.readButton1);
				sensorReadButton[1] = this.View.FindViewById<Button> (Resource.Id.readButton2);
				sensorReadButton[2] = this.View.FindViewById<Button> (Resource.Id.readButton3);
				sensorReadButton[3] = this.View.FindViewById<Button> (Resource.Id.readButton4);
			
				sensorSayButton[0] = this.View.FindViewById<Button> (Resource.Id.sayButton1);
				sensorSayButton[1] = this.View.FindViewById<Button> (Resource.Id.sayButton2);
				sensorSayButton[2] = this.View.FindViewById<Button> (Resource.Id.sayButton3);
				sensorSayButton[3] = this.View.FindViewById<Button> (Resource.Id.sayButton4);
			
				sensorValue[0] = this.View.FindViewById<EditText> (Resource.Id.sensorValue1);
				sensorValue[1] = this.View.FindViewById<EditText> (Resource.Id.sensorValue2);
				sensorValue[2] = this.View.FindViewById<EditText> (Resource.Id.sensorValue3);
				sensorValue[3] = this.View.FindViewById<EditText> (Resource.Id.sensorValue4);
			
			
				ArrayAdapter<string> adapter = new ArrayAdapter<string>(this.Activity,Android.Resource.Layout.SimpleSpinnerItem);
				string[] sensorNames = MonoBrick.NXT.Sensor.SensorDictionary.Keys.ToArray();
				foreach(string s in sensorNames){
					adapter.Add(s);
				}
				for(int i = 0; i < 4; i ++){
					sensorSpinner[i].Adapter = adapter;
				}
				sensorReadButton[0].Click += delegate {
					brickController.SpawnThread(delegate(){
						string s = brickController.NXT.Sensor1.ReadAsString();
						Activity.RunOnUiThread(delegate() {
							sensorValue[0].Text = s;
						});
					});
				};
			
				sensorReadButton[1].Click += delegate {
					brickController.SpawnThread(delegate(){
						string s = brickController.NXT.Sensor2.ReadAsString();
						Activity.RunOnUiThread(delegate() {
							sensorValue[1].Text = s;
						});
					});
				};
			
				sensorReadButton[2].Click += delegate {
					brickController.SpawnThread(delegate(){
						string s = brickController.NXT.Sensor3.ReadAsString();
						Activity.RunOnUiThread(delegate() {
							sensorValue[2].Text = s;
						});
					});
				};
			
				sensorReadButton[3].Click += delegate {
					brickController.SpawnThread(delegate(){
						string s = brickController.NXT.Sensor4.ReadAsString();
						Activity.RunOnUiThread(delegate() {
							sensorValue[3].Text = s;
						});
					});
				};
				
				sensorSayButton[0].Click += delegate {
					brickController.SpawnThread(delegate(){
						string s = brickController.NXT.Sensor1.ReadAsString();
						Activity.RunOnUiThread(delegate() {
							sensorValue[0].Text = s;
							//this should not run in the gui thread
							if(remoteSettings.SensorValueToSpeech && TabActivity.Speech != null){
								TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
							}
						});
						
					});
				};
				
				
				sensorSayButton[1].Click += delegate {
					brickController.SpawnThread(delegate(){
						string s = brickController.NXT.Sensor2.ReadAsString();
						Activity.RunOnUiThread(delegate() {
							sensorValue[1].Text = s;
							//this should not run in the gui thread
							if(remoteSettings.SensorValueToSpeech && TabActivity.Speech != null){
								TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
							}
						});
						
					});
				};
				
				
				sensorSayButton[2].Click += delegate {
					brickController.SpawnThread(delegate(){
						string s = brickController.NXT.Sensor3.ReadAsString();
						Activity.RunOnUiThread(delegate() {
							sensorValue[2].Text = s;
							//this should not run in the gui thread
							if(remoteSettings.SensorValueToSpeech && TabActivity.Speech != null){
								TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
							}
						});
						
					});
				};
				
				sensorSayButton[3].Click += delegate {
					brickController.SpawnThread(delegate(){
						string s = brickController.NXT.Sensor4.ReadAsString();
						Activity.RunOnUiThread(delegate() {
							sensorValue[3].Text = s;
							//this should not run in the gui thread
							if(remoteSettings.SensorValueToSpeech && TabActivity.Speech != null){
								TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
							}
						});
						
					});
				};
			
				sensorSpinner[0].Id = 0;
				sensorSpinner[0].ItemSelected += delegate(object sender, AdapterView.ItemSelectedEventArgs e) {
					Spinner spinner = (Spinner)sender;
	    			MonoBrick.NXT.Sensor newSensor = MonoBrick.NXT.Sensor.SensorDictionary[(string) spinner.GetItemAtPosition(e.Position)];
					remoteSettings.Sensor1 = (string) spinner.GetItemAtPosition(e.Position);
					brickController.SpawnThread(delegate(){
						brickController.NXT.Sensor1 = newSensor;
					});
				};
			
				sensorSpinner[1].Id = 0;
				sensorSpinner[1].ItemSelected += delegate(object sender, AdapterView.ItemSelectedEventArgs e) {
					Spinner spinner = (Spinner)sender;
	    			MonoBrick.NXT.Sensor newSensor = MonoBrick.NXT.Sensor.SensorDictionary[(string) spinner.GetItemAtPosition(e.Position)];
					remoteSettings.Sensor2 = (string) spinner.GetItemAtPosition(e.Position);
					brickController.SpawnThread(delegate(){
						brickController.NXT.Sensor2 = newSensor;
					});
				};
			
				sensorSpinner[2].Id = 0;
				sensorSpinner[2].ItemSelected += delegate(object sender, AdapterView.ItemSelectedEventArgs e) {
					Spinner spinner = (Spinner)sender;
	    			MonoBrick.NXT.Sensor newSensor = MonoBrick.NXT.Sensor.SensorDictionary[(string) spinner.GetItemAtPosition(e.Position)];
					remoteSettings.Sensor3 = (string) spinner.GetItemAtPosition(e.Position);
					brickController.SpawnThread(delegate(){
						brickController.NXT.Sensor3 = newSensor;
					});
				};
			
				sensorSpinner[3].Id = 0;
				sensorSpinner[3].ItemSelected += delegate(object sender, AdapterView.ItemSelectedEventArgs e) {
					Spinner spinner = (Spinner)sender;
	    			MonoBrick.NXT.Sensor newSensor = MonoBrick.NXT.Sensor.SensorDictionary[(string) spinner.GetItemAtPosition(e.Position)];
					remoteSettings.Sensor4 = (string) spinner.GetItemAtPosition(e.Position);
					brickController.SpawnThread(delegate(){
						brickController.NXT.Sensor4 = newSensor;
					});
				};
				
			}
			public override void OnActivityCreated (Bundle savedInstanceState)
			{
				base.OnActivityCreated (savedInstanceState);
				queue =  new QueueThread(OnDequeue);
				brickController = BrickController.Instance;
				remoteSettings = RemoteSettings.Instance;
				circle =  (ImageView) this.View.FindViewById<ImageView> (Resource.Id.circle);
				circleAnimation = (AnimationDrawable) circle.Drawable;
				//grayCircle = Resources.GetDrawable(Resource.Drawable.aniGray);
				seekBar = (SeekBar)this.View.FindViewById<SeekBar> (Resource.Id.seekBar);
				seekBar.Max = 200;
				
				angleLabel = (TextView)this.View.FindViewById<TextView> (Resource.Id.angleLabel);
				speedLabel = (TextView)this.View.FindViewById<TextView> (Resource.Id.speedLabel);
				sliderLabel = (TextView)this.View.FindViewById<TextView> (Resource.Id.seekLabel);
				
				angleText = (TextView)this.View.FindViewById<TextView> (Resource.Id.angleTextView);
				speedText = (TextView)this.View.FindViewById<TextView> (Resource.Id.speedTextView);
				sliderText = (TextView)this.View.FindViewById<TextView> (Resource.Id.seekTextView);
				
				
				sensor1 = (Button)this.View.FindViewById<Button> (Resource.Id.sensor1Button);
				sensor2 = (Button)this.View.FindViewById<Button> (Resource.Id.sensor2Button);
				sensor3 = (Button)this.View.FindViewById<Button> (Resource.Id.sensor3Button);
				sensor4 = (Button)this.View.FindViewById<Button> (Resource.Id.sensor4Button);
				
				sensor1.Click += delegate {
					queue.AddToQueue(
						delegate {
							string s = brickController.NXT.Sensor1.ReadAsString();
							Activity.RunOnUiThread(delegate() {
								//this should not run in the gui thread
								if(remoteSettings.SensorValueToSpeech && TabActivity.Speech != null){
									TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
								}
							});
						},
						true,1 
					);
				};
				
				sensor2.Click += delegate {
					queue.AddToQueue(
						delegate {
							string s = brickController.NXT.Sensor2.ReadAsString();
							Activity.RunOnUiThread(delegate() {
								//this should not run in the gui thread
								if(remoteSettings.SensorValueToSpeech && TabActivity.Speech != null){
									TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
								}
							});
						},
						true,1
					);
				};
				
				sensor3.Click += delegate {
					queue.AddToQueue(
						delegate {
							string s = brickController.NXT.Sensor3.ReadAsString();
							Activity.RunOnUiThread(delegate() {
								//this should not run in the gui thread
								if(remoteSettings.SensorValueToSpeech && TabActivity.Speech != null){
									TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
								}
							});
						},
						true,1
					);
				};
				
				sensor4.Click += delegate {
					queue.AddToQueue(
						delegate {
							string s = brickController.NXT.Sensor4.ReadAsString();
							Activity.RunOnUiThread(delegate() {
								//this should not run in the gui thread
								if(remoteSettings.SensorValueToSpeech && TabActivity.Speech != null){
									TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
								}
							});
						},
						true,1
					);
				};
				
				seekBar.Progress = 100;
				sliderText.Text = progress.ToString();
				
				seekBar.StopTrackingTouch += delegate(object sender, SeekBar.StopTrackingTouchEventArgs e) {
					e.SeekBar.Progress = 100;
					progress = 0;
					Activity.RunOnUiThread (delegate() {
						sliderText.Text = progress.ToString();
					});
					if(remoteSettings.SendVehicleDataToMailbox){
							queue.AddToQueue(
								delegate {
									SendDataToMailbox();
								},
								true,2
							);
					}
					else{
						queue.AddToQueue(
								delegate {
									additionalMotor.Off();
								},
								true,2
							);
					}	
				};
				seekBar.ProgressChanged += delegate(object sender, SeekBar.ProgressChangedEventArgs e) {
					progress = e.Progress - 100;
					Activity.RunOnUiThread (delegate() {
						sliderText.Text = progress.ToString();
					});
					if(remoteSettings.SendVehicleDataToMailbox){
							queue.AddToQueue(
								delegate {
									SendDataToMailbox();
								},
								true,2
							);
					}
					else{
						queue.AddToQueue(
								delegate {
									additionalMotor.On((sbyte) (e.Progress -100));
								},
								true,2
							);
					}	

				};
				circle.Touch += delegate(object sender, View.TouchEventArgs e) {
					if(e.Event.Action == MotionEventActions.Up){
						angleText.Text = "0.0";
						speedText.Text = "0.0";
						angle = 0.0f;
						speed = 0.0f;
						wasRunningForward = true;
						if(remoteSettings.SendVehicleDataToMailbox){
							queue.AddToQueue(
								delegate {
									SendDataToMailbox();
								},
								true,2
							);
						}
						else{
							queue.AddToQueue(
								delegate {
									brickController.NXT.Vehicle.Off();
								},
								true,3
							);
						
						
						}
						circle.SetImageResource(Resource.Drawable.animation);
						circleAnimation = (AnimationDrawable) circle.Drawable;
						circleAnimation.Start();
					}
					if(e.Event.Action == MotionEventActions.Move || e.Event.Action == MotionEventActions.Down) {
						//movingOnCircle = true;
						if(diameter == 0){
							diameter = circle.Width / 2;
						}
						x = e.Event.GetX()-diameter;
						y = -(e.Event.GetY()-diameter);
						float outside = diameter*(float)1.06;
						if( !(x > outside || x < -outside || y > outside || y < -outside) ){
							if(x > 0.0){
								angle = Math.Atan(y/x);
								if( y < 0.0)
									angle = Math.Atan(y/x)+ 2*Math.PI;
							}
							else{
								angle = Math.Atan(y/x) + Math.PI;
							}
							angle = angle + remoteSettings.DegreeOffset;
							//convert radians to degree
							angle = (angle * (180.0 / Math.PI))%360;
							speed = (float)Math.Sqrt( x*x + y*y);
							speed = speed/diameter * 100;  
							if(speed > 100.0){
								speed = (float)100.0;
							}
						}
						else{
							speed = 0.0f;
							angle = 0.0f;
						}
						
						int intSpeed =(int) speed;
						Activity.RunOnUiThread (delegate() {
						
							if(intSpeed < 10){
								circle.SetImageResource(Resource.Drawable.ani0);
							}
							else if(intSpeed < 20){
								circle.SetImageResource(Resource.Drawable.ani1);
							
							}
							else if(intSpeed < 30){
								circle.SetImageResource(Resource.Drawable.ani2);
							
							}
							else if(intSpeed < 40){
								circle.SetImageResource(Resource.Drawable.ani3);
							
							}
							else if(intSpeed < 50){
								circle.SetImageResource(Resource.Drawable.ani4);
							
							}
							else if(intSpeed < 60){
								circle.SetImageResource(Resource.Drawable.ani5);
							
							}
							else if(intSpeed < 70){
								circle.SetImageResource(Resource.Drawable.ani6);
							
							}
							else if(intSpeed < 80){
							
								circle.SetImageResource(Resource.Drawable.ani7);
							}
							else if(intSpeed < 90){
								circle.SetImageResource(Resource.Drawable.ani8);
							
							}
							else{
								circle.SetImageResource(Resource.Drawable.ani9);
							
							}
							circleAnimation.Stop();
							//angleText.Text = "Angle: " + string.Format("{0,5:###.0}", angle).PadLeft(7);
							//speedText.Text = "Speed: " + string.Format("{0,5:###.0}", speed).PadLeft(7);
							angleText.Text = string.Format("{0,5:###.0}", angle);
							speedText.Text = string.Format("{0,5:###.0}", speed);

						});
						if(remoteSettings.SendVehicleDataToMailbox){
							queue.AddToQueue(
								delegate {
									SendDataToMailbox();
								},
								true,2
							);
						}
						else{
							queue.AddToQueue(
								delegate {
									if(angle >= 10.0f && angle < 80.0f){
										brickController.NXT.Vehicle.TurnLeftForward((sbyte)speed, (sbyte)(100.0f-(angle-10.0f)/70.0f * 100.0f));
										wasRunningForward = true;
										return;
									}
									if(angle >= 100.0f && angle < 170.0f){
										brickController.NXT.Vehicle.TurnLeftReverse((sbyte)speed, (sbyte)(100.0f-(170-(angle-10.0f))/70.0f * 100.0f));
										wasRunningForward = false;
										return;
									}
									if(angle >= 190.0f && angle < 260.0f){
										brickController.NXT.Vehicle.TurnRightReverse((sbyte)speed, (sbyte)(100.0f-((angle-10.0f)-190)/70.0f * 100.0f));
										wasRunningForward = false;
										return;
									}
									if(angle >= 280.0f && angle <= 350.0f){
										brickController.NXT.Vehicle.TurnRightForward((sbyte)speed, (sbyte)(100.0f-(350-(angle-10.0f))/70.0f * 100.0f));
										wasRunningForward = true;
										return;
									}
									if( (angle < 10.0f && angle >= 0.0f) || (angle > 350.0f) ){
										brickController.NXT.Vehicle.Forward((sbyte)speed);
										return;
									}
									if( angle >= 170.0f && angle < 190.0f){
										brickController.NXT.Vehicle.Backward((sbyte)speed);
										return;
									}
									if( angle >= 80.0f && angle < 100.0f){
										if(wasRunningForward){
											brickController.NXT.Vehicle.SpinLeft((sbyte)speed);
										}
										else{
											brickController.NXT.Vehicle.SpinRight((sbyte)speed);
										}
										return;
									}
									if( angle >= 260.0f && angle < 280.0f){
										if(wasRunningForward){
											brickController.NXT.Vehicle.SpinRight((sbyte)speed);
										}
										else{
											brickController.NXT.Vehicle.SpinLeft((sbyte)speed);
										}
										return;
									}
								},
								true,3
							);
						}
					}
				};
				circleAnimation.Start();
			}
        public override void OnActivityCreated(Bundle savedInstanceState)
        {
            base.OnActivityCreated(savedInstanceState);
            queue           = new QueueThread(OnDequeue);
            brickController = BrickController.Instance;
            remoteSettings  = RemoteSettings.Instance;
            circle          = (ImageView)this.View.FindViewById <ImageView> (Resource.Id.circle);
            circleAnimation = (AnimationDrawable)circle.Drawable;
            //grayCircle = Resources.GetDrawable(Resource.Drawable.aniGray);
            seekBar     = (SeekBar)this.View.FindViewById <SeekBar> (Resource.Id.seekBar);
            seekBar.Max = 200;

            angleLabel  = (TextView)this.View.FindViewById <TextView> (Resource.Id.angleLabel);
            speedLabel  = (TextView)this.View.FindViewById <TextView> (Resource.Id.speedLabel);
            sliderLabel = (TextView)this.View.FindViewById <TextView> (Resource.Id.seekLabel);

            angleText  = (TextView)this.View.FindViewById <TextView> (Resource.Id.angleTextView);
            speedText  = (TextView)this.View.FindViewById <TextView> (Resource.Id.speedTextView);
            sliderText = (TextView)this.View.FindViewById <TextView> (Resource.Id.seekTextView);


            sensor1 = (Button)this.View.FindViewById <Button> (Resource.Id.sensor1Button);
            sensor2 = (Button)this.View.FindViewById <Button> (Resource.Id.sensor2Button);
            sensor3 = (Button)this.View.FindViewById <Button> (Resource.Id.sensor3Button);
            sensor4 = (Button)this.View.FindViewById <Button> (Resource.Id.sensor4Button);

            sensor1.Click += delegate {
                queue.AddToQueue(
                    delegate {
                    string s = brickController.NXT.Sensor1.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        //this should not run in the gui thread
                        if (remoteSettings.SensorValueToSpeech && TabActivity.Speech != null)
                        {
                            TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
                        }
                    });
                },
                    true, 1
                    );
            };

            sensor2.Click += delegate {
                queue.AddToQueue(
                    delegate {
                    string s = brickController.NXT.Sensor2.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        //this should not run in the gui thread
                        if (remoteSettings.SensorValueToSpeech && TabActivity.Speech != null)
                        {
                            TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
                        }
                    });
                },
                    true, 1
                    );
            };

            sensor3.Click += delegate {
                queue.AddToQueue(
                    delegate {
                    string s = brickController.NXT.Sensor3.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        //this should not run in the gui thread
                        if (remoteSettings.SensorValueToSpeech && TabActivity.Speech != null)
                        {
                            TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
                        }
                    });
                },
                    true, 1
                    );
            };

            sensor4.Click += delegate {
                queue.AddToQueue(
                    delegate {
                    string s = brickController.NXT.Sensor4.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        //this should not run in the gui thread
                        if (remoteSettings.SensorValueToSpeech && TabActivity.Speech != null)
                        {
                            TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
                        }
                    });
                },
                    true, 1
                    );
            };

            seekBar.Progress = 100;
            sliderText.Text  = progress.ToString();

            seekBar.StopTrackingTouch += delegate(object sender, SeekBar.StopTrackingTouchEventArgs e) {
                e.SeekBar.Progress = 100;
                progress           = 0;
                Activity.RunOnUiThread(delegate() {
                    sliderText.Text = progress.ToString();
                });
                if (remoteSettings.SendVehicleDataToMailbox)
                {
                    queue.AddToQueue(
                        delegate {
                        SendDataToMailbox();
                    },
                        true, 2
                        );
                }
                else
                {
                    queue.AddToQueue(
                        delegate {
                        additionalMotor.Off();
                    },
                        true, 2
                        );
                }
            };
            seekBar.ProgressChanged += delegate(object sender, SeekBar.ProgressChangedEventArgs e) {
                progress = e.Progress - 100;
                Activity.RunOnUiThread(delegate() {
                    sliderText.Text = progress.ToString();
                });
                if (remoteSettings.SendVehicleDataToMailbox)
                {
                    queue.AddToQueue(
                        delegate {
                        SendDataToMailbox();
                    },
                        true, 2
                        );
                }
                else
                {
                    queue.AddToQueue(
                        delegate {
                        additionalMotor.On((sbyte)(e.Progress - 100));
                    },
                        true, 2
                        );
                }
            };
            circle.Touch += delegate(object sender, View.TouchEventArgs e) {
                if (e.Event.Action == MotionEventActions.Up)
                {
                    angleText.Text    = "0.0";
                    speedText.Text    = "0.0";
                    angle             = 0.0f;
                    speed             = 0.0f;
                    wasRunningForward = true;
                    if (remoteSettings.SendVehicleDataToMailbox)
                    {
                        queue.AddToQueue(
                            delegate {
                            SendDataToMailbox();
                        },
                            true, 2
                            );
                    }
                    else
                    {
                        queue.AddToQueue(
                            delegate {
                            brickController.NXT.Vehicle.Off();
                        },
                            true, 3
                            );
                    }
                    circle.SetImageResource(Resource.Drawable.animation);
                    circleAnimation = (AnimationDrawable)circle.Drawable;
                    circleAnimation.Start();
                }
                if (e.Event.Action == MotionEventActions.Move || e.Event.Action == MotionEventActions.Down)
                {
                    //movingOnCircle = true;
                    if (diameter == 0)
                    {
                        diameter = circle.Width / 2;
                    }
                    x = e.Event.GetX() - diameter;
                    y = -(e.Event.GetY() - diameter);
                    float outside = diameter * (float)1.06;
                    if (!(x > outside || x < -outside || y > outside || y < -outside))
                    {
                        if (x > 0.0)
                        {
                            angle = Math.Atan(y / x);
                            if (y < 0.0)
                            {
                                angle = Math.Atan(y / x) + 2 * Math.PI;
                            }
                        }
                        else
                        {
                            angle = Math.Atan(y / x) + Math.PI;
                        }
                        angle = angle + remoteSettings.DegreeOffset;
                        //convert radians to degree
                        angle = (angle * (180.0 / Math.PI)) % 360;
                        speed = (float)Math.Sqrt(x * x + y * y);
                        speed = speed / diameter * 100;
                        if (speed > 100.0)
                        {
                            speed = (float)100.0;
                        }
                    }
                    else
                    {
                        speed = 0.0f;
                        angle = 0.0f;
                    }

                    int intSpeed = (int)speed;
                    Activity.RunOnUiThread(delegate() {
                        if (intSpeed < 10)
                        {
                            circle.SetImageResource(Resource.Drawable.ani0);
                        }
                        else if (intSpeed < 20)
                        {
                            circle.SetImageResource(Resource.Drawable.ani1);
                        }
                        else if (intSpeed < 30)
                        {
                            circle.SetImageResource(Resource.Drawable.ani2);
                        }
                        else if (intSpeed < 40)
                        {
                            circle.SetImageResource(Resource.Drawable.ani3);
                        }
                        else if (intSpeed < 50)
                        {
                            circle.SetImageResource(Resource.Drawable.ani4);
                        }
                        else if (intSpeed < 60)
                        {
                            circle.SetImageResource(Resource.Drawable.ani5);
                        }
                        else if (intSpeed < 70)
                        {
                            circle.SetImageResource(Resource.Drawable.ani6);
                        }
                        else if (intSpeed < 80)
                        {
                            circle.SetImageResource(Resource.Drawable.ani7);
                        }
                        else if (intSpeed < 90)
                        {
                            circle.SetImageResource(Resource.Drawable.ani8);
                        }
                        else
                        {
                            circle.SetImageResource(Resource.Drawable.ani9);
                        }
                        circleAnimation.Stop();
                        //angleText.Text = "Angle: " + string.Format("{0,5:###.0}", angle).PadLeft(7);
                        //speedText.Text = "Speed: " + string.Format("{0,5:###.0}", speed).PadLeft(7);
                        angleText.Text = string.Format("{0,5:###.0}", angle);
                        speedText.Text = string.Format("{0,5:###.0}", speed);
                    });
                    if (remoteSettings.SendVehicleDataToMailbox)
                    {
                        queue.AddToQueue(
                            delegate {
                            SendDataToMailbox();
                        },
                            true, 2
                            );
                    }
                    else
                    {
                        queue.AddToQueue(
                            delegate {
                            if (angle >= 10.0f && angle < 80.0f)
                            {
                                brickController.NXT.Vehicle.TurnLeftForward((sbyte)speed, (sbyte)(100.0f - (angle - 10.0f) / 70.0f * 100.0f));
                                wasRunningForward = true;
                                return;
                            }
                            if (angle >= 100.0f && angle < 170.0f)
                            {
                                brickController.NXT.Vehicle.TurnLeftReverse((sbyte)speed, (sbyte)(100.0f - (170 - (angle - 10.0f)) / 70.0f * 100.0f));
                                wasRunningForward = false;
                                return;
                            }
                            if (angle >= 190.0f && angle < 260.0f)
                            {
                                brickController.NXT.Vehicle.TurnRightReverse((sbyte)speed, (sbyte)(100.0f - ((angle - 10.0f) - 190) / 70.0f * 100.0f));
                                wasRunningForward = false;
                                return;
                            }
                            if (angle >= 280.0f && angle <= 350.0f)
                            {
                                brickController.NXT.Vehicle.TurnRightForward((sbyte)speed, (sbyte)(100.0f - (350 - (angle - 10.0f)) / 70.0f * 100.0f));
                                wasRunningForward = true;
                                return;
                            }
                            if ((angle < 10.0f && angle >= 0.0f) || (angle > 350.0f))
                            {
                                brickController.NXT.Vehicle.Forward((sbyte)speed);
                                return;
                            }
                            if (angle >= 170.0f && angle < 190.0f)
                            {
                                brickController.NXT.Vehicle.Backward((sbyte)speed);
                                return;
                            }
                            if (angle >= 80.0f && angle < 100.0f)
                            {
                                if (wasRunningForward)
                                {
                                    brickController.NXT.Vehicle.SpinLeft((sbyte)speed);
                                }
                                else
                                {
                                    brickController.NXT.Vehicle.SpinRight((sbyte)speed);
                                }
                                return;
                            }
                            if (angle >= 260.0f && angle < 280.0f)
                            {
                                if (wasRunningForward)
                                {
                                    brickController.NXT.Vehicle.SpinRight((sbyte)speed);
                                }
                                else
                                {
                                    brickController.NXT.Vehicle.SpinLeft((sbyte)speed);
                                }
                                return;
                            }
                        },
                            true, 3
                            );
                    }
                }
            };
            circleAnimation.Start();
        }
		protected override void OnCreate (Bundle bundle)
		{
			base.OnCreate (bundle);
			settings = RemoteSettings.Instance;
			brickController = BrickController.Instance;

			AddPreferencesFromResource(Resource.Layout.Settings);

			deviceList = (ListPreference) FindPreference("bluetoothDevice");
			brickType = (ListPreference) FindPreference("brickType");


			leftMotor = (ListPreference) FindPreference("leftMotor");
			rightMotor = (ListPreference) FindPreference("rightMotor");
			additionalMotor = (ListPreference) FindPreference("additionalMotor");

			leftMotorReverse = (CheckBoxPreference) FindPreference("reverseLeftMotor");
			rightMotorReverse = (CheckBoxPreference) FindPreference("reverseRightMotor");
			additionalMotorReverse = (CheckBoxPreference) FindPreference("reverseAdditionalMotor");

			sendVehicleDataToMailbox = (CheckBoxPreference) FindPreference("sendVehicleDataToMailbox");
			vehicleMailbox = (ListPreference) FindPreference("vehicleMailbox");
			vehicleAngleOffset = (ListPreference) FindPreference("vehicleAngleOffset");

			sensorValueToSpeech = (CheckBoxPreference) FindPreference("sensorValueToSpeech");

			deviceList.OnPreferenceChangeListener = this;
			brickType.OnPreferenceChangeListener = this;


			leftMotor.OnPreferenceChangeListener = this;
			rightMotor.OnPreferenceChangeListener = this;
			additionalMotor.OnPreferenceChangeListener = this;

			leftMotorReverse.OnPreferenceChangeListener = this;
			rightMotorReverse.OnPreferenceChangeListener = this;
			additionalMotorReverse.OnPreferenceChangeListener = this;

			sendVehicleDataToMailbox.OnPreferenceChangeListener = this;
			vehicleMailbox.OnPreferenceChangeListener = this;

			sensorValueToSpeech.OnPreferenceChangeListener = this;
			
			vehicleAngleOffset.OnPreferenceChangeListener = this;
			
		}