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; } }
public override void OnActivityCreated(Bundle savedInstanceState) { base.OnActivityCreated(savedInstanceState); brickController = BrickController.Instance; if (adapter == null) { adapter = new FileItemAdapter(this.Activity); adapter.ItemCheckedChanged += OnItemCheckedChanged; } View.SetBackgroundDrawable(Resources.GetDrawable(Resource.Drawable.backrepeat)); //View.CacheColorHint = Android.Graphics.Color.Transparent; this.ListAdapter = adapter; SetHasOptionsMenu(true); SetEmptyText("Not connected"); ((TextView)ListView.EmptyView).SetTextColor(new Android.Graphics.Color(0x99, 0x99, 0x99)); }
public override void OnActivityCreated (Bundle savedInstanceState) { base.OnActivityCreated (savedInstanceState); brickController = BrickController.Instance; if(adapter == null){ adapter = new FileItemAdapter(this.Activity); adapter.ItemCheckedChanged += OnItemCheckedChanged; } View.SetBackgroundDrawable(Resources.GetDrawable(Resource.Drawable.backrepeat)); //View.CacheColorHint = Android.Graphics.Color.Transparent; this.ListAdapter = adapter; SetHasOptionsMenu(true); SetEmptyText("Not connected"); ((TextView) ListView.EmptyView).SetTextColor(new Android.Graphics.Color (0x99, 0x99, 0x99)); }
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 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; }
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; }