Ich habe Anwendung für zwei verschiedene Sensoren entwickelt. Sie funktionieren gut getrennt, aber wenn ich versuche, sie zu verwenden, um zwei verschiedene Busse zu erstellen und zu erstellen, gibt Alljoyn diese Ausnahme.Android AllJoyn: Verbindung mit zweiter Maschine gibt Fehler von BusAttachement
org.alljoyn.services.common.BusAlreadyExistException: Das Objekt wurde zuvor mit einem BusAttachment eingestellt.
Unten ist mein Quellcode für die Verbindung. Kann mir jemand sagen, warum ich dieses Problem habe?
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());
}
}
Sie anrufen sollte 'registerBusObject 'zweimal (einmal für jeden Sensor) und erstellen nur einen einzigen Bus Anhang – Lino
Ich hatte versucht, diese BU t kein Erfolg. Jetzt erstelle ich zwei verschiedene busAttachment-Objekte in zwei verschiedenen Klassen, aber derselbe Fehler tritt auf. Wie kann ich dieses Problem lösen? –
Welches ist die Zeile, die die 'BusAlreadyExistException' auslöst? – Lino