Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // http://stackoverflow.com/questions/13359560/bus-blocking-call-not-allowed-error-in-alljoyn
- private void connect() {
- Status status;
- bus = new BusAttachment(getClass().getName(), BusAttachment.RemoteMessage.Receive);
- status = bus.registerBusObject(this, "/MyService");
- if (status != Status.OK) {
- Toast.makeText(AcAllJoyn.this,status.toString(),40);
- return;
- }
- bus.registerBusListener(new BusListener() {
- @Override
- public void foundAdvertisedName(String name,
- short transport,
- String namePrefix) {
- short contactPort = CONTACT_PORT;
- SessionOpts sessionOpts = new SessionOpts();
- Mutable.IntegerValue sessionId = new Mutable.IntegerValue();
- Status status = bus.joinSession("com.my.well.known.name",
- contactPort,
- sessionId,
- sessionOpts,
- new SessionListener());
- bus.cancelAdvertiseName("com.my.well.known.name",SessionOpts.TRANSPORT_ANY);
- }
- });
- status = bus.connect();
- if (Status.OK != status) {
- Toast.makeText(AcAllJoyn.this,status.toString(),40);
- 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 = bus.bindSessionPort(contactPort, sessionOpts,
- new SessionPortListener() {
- @Override
- public boolean acceptSessionJoiner(short sessionPort,
- String joiner, SessionOpts sessionOpts) {
- if (sessionPort == CONTACT_PORT) {
- return true;
- } else {
- return false;
- }
- }
- });
- int flags = 0; //do not use any request name flags
- status = bus.requestName("com.my.well.known.name", flags);
- if (status != Status.OK) {
- Toast.makeText(AcAllJoyn.this,status.toString(),40);
- return;
- }
- /*
- * Important: the well-known name advertised should be identical
- * to the well-known name requested from the bus. Using a
- * different name is a logic error.
- */
- status = bus.advertiseName("com.my.well.known.name",
- SessionOpts.TRANSPORT_ANY);
- if (status != Status.OK) {
- /*
- * If we are unable to advertise the name, release
- * the well-known name from the local bus.
- */
- bus.releaseName("com.my.well.know.name");
- Toast.makeText(AcAllJoyn.this,status.toString(),40);
- return;
- }
- bus.registerBusListener(new BusListener() {
- @Override
- public void foundAdvertisedName(String name,
- short transport,
- String namePrefix) {
- short contactPort = CONTACT_PORT;
- SessionOpts sessionOpts = new SessionOpts();
- sessionOpts.traffic = SessionOpts.TRAFFIC_MESSAGES;
- sessionOpts.isMultipoint = false;
- sessionOpts.proximity = SessionOpts.PROXIMITY_ANY;
- sessionOpts.transports = SessionOpts.TRANSPORT_ANY;
- Mutable.IntegerValue sessionId = new Mutable.IntegerValue();
- Status status = bus.joinSession(name,
- contactPort,
- sessionId,
- sessionOpts,
- new SessionListener());
- mProxyObj = bus.getProxyBusObject("com.my.well.known.name",
- "/MyService",
- sessionId.value,
- new Class[]{AcAllJoyn.class});
- mSampleInterface = mProxyObj.getInterface(AcAllJoyn.class);
- onConnected();
- }
- });
- status = bus.findAdvertisedName("com.my.well.known.name");
- if (status != Status.OK) {
- Toast.makeText(AcAllJoyn.this,status.toString(),40);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement