2011-01-12 15 views

Respuesta

20
Roster roster = xmppConnection.getRoster(); 
Collection<RosterEntry> entries = roster.getEntries(); 
Presence presence; 

for(RosterEntry entry : entries) { 
    presence = roster.getPresence(entry.getUser()); 

    System.out.println(entry.getUser()); 
    System.out.println(presence.getType().name()); 
    System.out.println(presence.getStatus()); 
} 
+1

Gracias, pero en lo que puedo determinar el estado en línea o fuera de línea ¿puede borrar esto? –

+1

Hice el mismo código pero cada usuario simplemente da presencia "no disponible" como puede ser cuando hay 4-5 disponibles, pero al mostrarme todos no están disponibles ¿alguien puede ayudarme con eso? –

+2

Lo mismo aquí. Acabo de obtener el estado no disponible:/ –

1

utilizar el método de presence.getMode() para obtener el modo de usuario. El modo es enum y su valor puede ser chat, disponible, ausente, xa, dnd.

4
Presence presence = roster.getPresence("[email protected]"); 
if (presence.getType() == Presence.Type.AVAILABLE) { 
    // Tom is online... 
} 

de referencia desde this link

+0

necesito hacer algunas preguntas con respecto a xmpp, puedo obtener mis amigos de lista en una lista ver ahora quiero mostrar solo usuarios en línea en una lista de vista ¿cuál es el camino me guiará por favor –

+0

¿funciona en Android lollipop? –

5
XMPPConnection.addConnectionCreationListener(new ConnectionCreationListener() { 

     @Override 
     public void connectionCreated(Connection arg0) { 
      Log.i(TAG, "receive xmpp connection : " + arg0); 
      connection = arg0; 
      roster = arg0.getRoster(); 

      Collection<RosterEntry> entries = roster.getEntries(); 
      Presence presence; 

      Log.e(TAG, "user count" + entries.size()); 

      for (RosterEntry entry : entries) { 
       presence = roster.getPresence(entry.getUser()); 

       Log.i(TAG, "" + entry.getUser()); 
       Log.i(TAG, "" + presence.getType().name()); 
       Log.i(TAG, "" + presence.getStatus()); 
      } 

     } 
    }); 

Así que al comienzo de su programa de registro que escucha XMPPConnection, normalmente se tarda unos pocos segundos para recibir objeto de conexión. Pero funcionará solo si va a usar creatEntry solo en ese caso gallo verá esos usuarios creados.

para conformar entrada utilizando Lista utilizar código siguiente:

try { 
    rooster.createEntry("name", "user_id", null); 
} catch (XMPPException e) { 
    e.printStackTrace(); 
} 

no hizo uso de cualquier grupo, y con un éxito ver el segundo dispositivo de usuario.

1
smackAndroid = SmackAndroid.init(this); 
XMPPConnection.addConnectionCreationListener(new ConnectionCreationListener() { 

    @Override 
    public void connectionCreated(XMPPConnection connection) { 

      Log.i("hello", "receive xmpp connection : " + connection); 
      roster = connection.getRoster(); 

      try { 
       roster.createEntry("2868254", "hello", null); 
      } catch (XMPPException e) { 
       e.printStackTrace(); 
      } catch (NotLoggedInException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (NoResponseException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (NotConnectedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
}); 
+0

arriba de mi código no recuperar el usuario en línea –

+0

¿Puede agregar alguna explicación a esto? – apaul

Cuestiones relacionadas