package eu.worn.apps.androvac; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.CompoundButton; import android.widget.Switch; import android.widget.TimePicker; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements View.OnClickListener, TimePicker.OnTimeChangedListener { private IRBeamer beamer; private RoboVac11sRemote remote; private void beam(byte[] msg) { beamer.transmit(remote.modulation.getCarrierFrequency(), remote.modulation.modulate(msg)); } public void onClick(View v) { byte[] msg; switch (v.getId()) { case R.id.cleanAuto: msg = remote.cleanAuto(); break; case R.id.cleanSpot: msg = remote.cleanSpot(); break; case R.id.cleanEdge: msg = remote.cleanEdge(); break; case R.id.cleanRoom: msg = remote.cleanRoom(); break; case R.id.powerStandard: msg = remote.powerStandard(); break; case R.id.powerMax: msg = remote.powerMax(); break; case R.id.powerBoostIQ: msg = remote.powerBoostIQ(); break; case R.id.moveForward: msg = remote.moveForward(); break; case R.id.moveBackward: msg = remote.moveBackward(); break; case R.id.moveCCW: msg = remote.moveCCW(); break; case R.id.moveCW: msg = remote.moveCW(); break; case R.id.returnBase: msg = remote.returnBase(); break; case R.id.stop: msg = remote.stop(); break; default: msg = new byte[0]; } if (msg.length > 0) beam(msg); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (remote == null) remote = new RoboVac11sRemote(PreferenceManager.getDefaultSharedPreferences(getApplicationContext())); if (beamer == null) { beamer = new AndroidIRBeamer(this); if (!beamer.isAvailable()) { Toast.makeText(this.getApplicationContext(), "No IR beamer found: entering debug mode", Toast.LENGTH_LONG).show(); beamer = new DebugIRBeamer(this); } } Switch scheduleSwitch = findViewById(R.id.enableSchedule); TimePicker schedulePicker = findViewById(R.id.schedule); int sh = remote.getScheduleHour(); int sm = remote.getScheduleMinute(); if ((sh >= 0) && (sm >= 0)) { schedulePicker.setCurrentHour(sh); schedulePicker.setCurrentMinute(sm); schedulePicker.setEnabled(true); scheduleSwitch.setChecked(true); } else { schedulePicker.setCurrentHour(0); schedulePicker.setCurrentMinute(0); schedulePicker.setEnabled(false); scheduleSwitch.setChecked(false); } schedulePicker.setOnTimeChangedListener(this); scheduleSwitch.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { TimePicker schedulePicker = findViewById(R.id.schedule); schedulePicker.setEnabled(isChecked); if (isChecked) beam(remote.setSchedule(schedulePicker.getCurrentHour(), schedulePicker.getCurrentMinute())); else beam(remote.clearSchedule()); } }); } @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { remote.setSchedule(hourOfDay, minute); } }