public void execute(BaseActivity activity) throws InterruptedException { YADroneApplication app = (YADroneApplication) activity.getApplication(); ARDrone drone = app.getARDrone(); final CommandManager cm = drone.getCommandManager(); final NavDataManager nm = drone.getNavDataManager(); if (mSound.length() > 0) { int resId = activity.getResources().getIdentifier(mSound, "raw", activity.getPackageName()); if (resId != 0) { activity.setVolumeControlStream(AudioManager.STREAM_MUSIC); activity.soundPlayer.loadAndPlaySound(resId); } } int repetitions = mRepetitions > 0 ? mRepetitions : 1; for (int i = 0; i < repetitions; i++) { Log.d("FlyRoute", mCommand.toString()); nm.setStateListener( new StateListener() { private boolean done = false; @Override public synchronized void stateChanged(DroneState state) { if (!done && state.isEmergency()) { cm.emergency(); } nm.setStateListener(null); done = true; } @Override public void controlStateChanged(ControlState state) { // ignore } }); cm.setCommand(mCommand); Thread.sleep(mDuration / repetitions); } }
public CCPanel(final ARDrone ardrone) { super(new GridBagLayout()); setBackground(Color.BLUE); video = new VideoPanel(ardrone); battery = new BatteryPanel(); state = new StatePanel(); attitude = new AttitudePanel(); add( video, new GridBagConstraints( 0, 0, 1, 1, 0.7, 1, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); add( new JScrollPane(state), new GridBagConstraints( 1, 0, 1, 2, 0.3, 1, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.VERTICAL, new Insets(0, 0, 0, 0), 0, 0)); add( attitude.getPane(), new GridBagConstraints( 0, 1, 1, 1, 1, 1, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); // add(battery, new GridBagConstraints(0, 1, 1, 1, 1, 1, // GridBagConstraints.FIRST_LINE_START, GridBagConstraints.BOTH, new // Insets(0,0,0,0), 0, 0)); // CommandManager handles (keyboard) input and dispatches events to the // drone System.out.println("CCPanel.KeyEventDispatcher: grab the whole keyboard input from now on ..."); KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager(); manager.addKeyEventDispatcher( new KeyEventDispatcher() { private KeyboardCommandManager cmdManager = new KeyboardCommandManager(ardrone, 45); public boolean dispatchKeyEvent(KeyEvent e) { if (e.getID() == KeyEvent.KEY_PRESSED) { cmdManager.keyPressed(e); } else if (e.getID() == KeyEvent.KEY_RELEASED) { cmdManager.keyReleased(e); } return true; } }); VideoManager vm = ardrone.getVideoManager(); vm.setImageListener(this); NavDataManager m = ardrone.getNavDataManager(); m.setStateListener(this); m.setAttitudeListener(this); m.setBatteryListener(this); }