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.

  • Chargement dynamique des images R.Drawable using variable
  • Touchez n'importe où pour glisser le menu ouvert pour le tiroir de navigation
  • Erreur aléatoire SQLiteConnectionPool sur Android. Comment éviter?
  • Facebook Android SDK & java.lang.NullPointerException
  • Comment mettre à jour une base de données SQLite et ne pas perdre toutes les données existantes?
  • Comment utiliser ant to build with 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()); } } 

  • Différence entre WiFi-Direct Api et Alljoyn framework
  • 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.