Android AllJoyn: la connexion avec la deuxième machine donne l'erreur de BusAttachement

J'ai développé une application pour deux capteurs différents. Ils fonctionnent bien séparément, mais quand j'essaie de les utiliser pour partager et créer deux bus différents, Alljoyn donne cette exception.

Org.alljoyn.services.common.BusAlreadyExistException: l'objet a été défini précédemment avec un BusAttachment.

  • Android OpenCV Drawing Hough Lines
  • Pourquoi ces autorisations sont-elles refusées?
  • Les préférences partagées dans les applications Android sont-elles supprimées lorsqu'un utilisateur met à jour l'application?
  • Définir l'ID de la ressource dessinable dans Android: src pour ImageView en utilisant la liaison de données dans Android
  • AndroidRuntime: l'importation com.google.api.client ne peut pas être résolue
  • Impossible d'instancier l'application com.android.tools.fd.runtime.BootstrapApplication? Android
  • Voici mon code source pour la connexion. Quelqu'un peut-il me dire pourquoi j'ai ce problème?

    private void connect() { org.alljoyn.bus.alljoyn.DaemonInit.PrepareDaemon(getApplicationContext()); bus = new BusAttachment("ControlPanelBrowser", BusAttachment.RemoteMessage.Receive); bus.registerBusListener(new BusListener()); Status status = bus.registerBusObject(mControlPanelSignalInterface, Constants.SERVICE_PATH); if (status != Status.OK) { Log.d(TAG, "Problem while registering bus object"); } SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); srpPassword = settings.getString(PREFS_PASSWORD, DEFAULT_SECURED_SRP_PASSWORD); SrpAnonymousKeyListener authListener = new SrpAnonymousKeyListener(this, logger, AUTH_MECHANISMS); Status authStatus = bus.registerAuthListener(authListener.getAuthMechanismsAsString(), authListener, getKeyStoreFileName()); if ( authStatus != Status.OK ) { Log.e(TAG, "Failed to register AuthListener"); } status = bus.connect(); if (Status.OK == status){ String daemonName = Constants.DAEMON_NAME_PREFIX + ".ControlPanelBrowser.G" + bus.getGlobalGUIDString(); int flag = BusAttachment.ALLJOYN_REQUESTNAME_FLAG_DO_NOT_QUEUE; Status reqStatus = bus.requestName(daemonName, flag); if (reqStatus == Status.OK) { Status adStatus = bus.advertiseName(Constants.DAEMON_QUIET_PREFIX + daemonName, SessionOpts.TRANSPORT_ANY); if (adStatus != Status.OK){ bus.releaseName(daemonName); Log.e(TAG, "Failed to advertise daemon name: '" + daemonName + "', Error: '" + status + "'"); } else{ Log.d(TAG, "Succefully advertised daemon name: '" + daemonName + "'"); } } else { Log.e(TAG, "Failed to request daemon name: '" + daemonName + "', Error: '" + status + "'"); } } status = bus.registerSignalHandlers(mControlPanelSignalInterface); if (status != Status.OK) { Log.d(TAG, "Problem while registering signal handlers"); } // Initialize AboutService aboutClient = AboutServiceImpl.getInstance(); aboutClient.setLogger(logger); try { aboutClient.startAboutClient(bus); for (String iface : ANNOUNCE_IFACES) { aboutClient.addAnnouncementHandler(this, new String[] {iface}); } } catch (Exception e) { logger.error(TAG, "Unable to start AboutService, Error: " + e.getMessage()); } } 

  • Comment configurer alljoyn sdk dans Android?
  • Architecture Android / iOS Peer-to-Peer
  • 2 Solutions collect form web for “Android AllJoyn: la connexion avec la deuxième machine donne l'erreur de BusAttachement”

    Utilisez registerBusObject twince et puis vous pouvez créer un lien de bus Signle

    Pourquoi ne créez-vous pas deux interfaces, une interface pour un capteur respectivement. Puis ajoutez ces deux interfaces dans une classe qui implémente ces deux interfaces et le busObject et enregistrez une implémentation de cette classe comme BusObject.

    Par exemple

    Sensor1_interface.java and Sensor2_interface.java //are my two interface classes

    Créez une nouvelle classe Sensor_InterfaceList qui implémente les deux interfaces et le BusObject

     class Sensor_InterfaceList implements Sensor1_interface,Sensor2_interface,BusObject { // implment your interfaces here ..... } private Sensor_InterfaceList mySensor_InterfaceList; mySensor_InterfaceList = new Sensor_InterfaceList(); myBus.registerBusObject(mySensor_InterfaceList,"/your/path"); 

    Cela devrait résoudre votre problème 🙂

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.