/** Called by iPOJO when the instance becomes invalid. */
 @Invalidate
 private void stop() {
   logger.log(LogService.LOG_DEBUG, "BD Remote control component instance is stopping.");
   if (incomingThread != null) {
     incomingThread.disconnect();
     incomingThread = null;
   }
 }
  /** Called by iPOJO when the instance becomes valid. */
  @Validate
  private void start() {
    logger.log(LogService.LOG_DEBUG, "BD Remote control component instance is starting.");
    String btAddress = null;

    LocalDevice localDevice = null;
    try {
      localDevice = LocalDevice.getLocalDevice();
    } catch (BluetoothStateException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

    DiscoveryAgent discoveryAgent = localDevice.getDiscoveryAgent();

    RemoteDevice[] cachedDevices = discoveryAgent.retrieveDevices(DiscoveryAgent.CACHED);
    if (cachedDevices != null) {
      int s = cachedDevices.length;
      for (int i = 0; i < s; i++) {
        logger.log(
            LogService.LOG_DEBUG,
            "Cached device"
                + i
                + ":"
                + cachedDevices[i].getBluetoothAddress()
                + ", "
                + cachedDevices[i]);
        btAddress = cachedDevices[i].getBluetoothAddress();
      }
    }
    RemoteDevice[] preknownDevices = discoveryAgent.retrieveDevices(DiscoveryAgent.PREKNOWN);
    if (preknownDevices != null) {
      int s = preknownDevices.length;
      for (int i = 0; i < s; i++) {
        logger.log(
            LogService.LOG_DEBUG,
            "Preknown device"
                + i
                + ":"
                + preknownDevices[i].getBluetoothAddress()
                + ", "
                + preknownDevices[i]);
      }
    }

    try {
      incomingThread = new IncomingThread(1, btAddress);
      incomingThread.start();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }