Exemplo n.º 1
0
    @Override
    public void handleMessage(Message msg) {
      switch (msg.what) {
          /* Connect to the bus and start our service. */
        case CONNECT:
          {
            // System.out.println("\n\n\n\n\n\n\nService is getting started!\n\n\n\n\n\n");

            mBus = new BusAttachment(getPackageName(), BusAttachment.RemoteMessage.Receive);
            mBus.registerBusListener(new BusListener());
            Status status = mBus.registerBusObject(mSimpleService, "/SimpleService");
            logStatus("BusAttachment.registerBusObject()", status);
            if (status != Status.OK) {
              finish();
              return;
            }
            status = mBus.connect();
            logStatus("BusAttachment.connect()", status);
            if (status != Status.OK) {
              finish();
              return;
            }
            Mutable.ShortValue contactPort = new Mutable.ShortValue(CONTACT_PORT);

            SessionOpts sessionOpts = new SessionOpts();
            sessionOpts.traffic = SessionOpts.TRAFFIC_MESSAGES;
            sessionOpts.isMultipoint = false;
            sessionOpts.proximity = SessionOpts.PROXIMITY_ANY;
            sessionOpts.transports = SessionOpts.TRANSPORT_ANY;

            status =
                mBus.bindSessionPort(
                    contactPort,
                    sessionOpts,
                    new SessionPortListener() {
                      @Override
                      public boolean acceptSessionJoiner(
                          short sessionPort, String joiner, SessionOpts sessionOpts) {
                        if (sessionPort == CONTACT_PORT) {
                          return true;
                        } else {
                          return false;
                        }
                      }
                    });
            logStatus(
                String.format(
                    "BusAttachment.bindSessionPort(%d, %s)",
                    contactPort.value, sessionOpts.toString()),
                status);
            if (status != Status.OK) {
              finish();
              return;
            }
            int flag =
                BusAttachment.ALLJOYN_REQUESTNAME_FLAG_REPLACE_EXISTING
                    | BusAttachment.ALLJOYN_REQUESTNAME_FLAG_DO_NOT_QUEUE;

            status = mBus.requestName(SERVICE_NAME, flag);
            logStatus(
                String.format("BusAttachment.requestName(%s, 0x%08x)", SERVICE_NAME, flag), status);
            if (status == Status.OK) {
              status = mBus.advertiseName(SERVICE_NAME, SessionOpts.TRANSPORT_ANY);
              logStatus(String.format("BusAttachement.advertiseName(%s)", SERVICE_NAME), status);
              if (status != Status.OK) {
                status = mBus.releaseName(SERVICE_NAME);
                logStatus(String.format("BusAttachment.releaseName(%s)", SERVICE_NAME), status);
                finish();
                return;
              }
            }

            break;
          }

        case DISCONNECT:
          {
            mBus.unregisterBusObject(mSimpleService);
            mBus.disconnect();
            mClientBusHandler.getLooper().quit();
            break;
          }

        default:
          break;
      }
    }