Пример #1
0
  synchronized void start() {
    if (!serviceMgr.isTowerConnected())
      throw new IllegalStateException("Service manager must be connected.");

    IDroneApi droneApi = droneApiRef.get();
    if (isStarted(droneApi)) return;

    try {
      droneApi =
          serviceMgr
              .get3drServices()
              .registerDroneApi(this.apiListener, serviceMgr.getApplicationId());
      droneApi.asBinder().linkToDeath(binderDeathRecipient, 0);
    } catch (RemoteException e) {
      throw new IllegalStateException("Unable to retrieve a valid drone handle.");
    }

    if (asyncScheduler == null || asyncScheduler.isShutdown())
      asyncScheduler = Executors.newFixedThreadPool(1);

    addAttributesObserver(droneApi, this.droneObserver);
    resetFlightTimer();

    droneApiRef.set(droneApi);
  }