2011-05-17 2 views
2

私はたくさん探しています。何も見つかりませんでした。私はrosterlistenerと連絡先の状態を更新する必要があります。 (オフライン/オンライン)。名簿を作成するとき、私は実行します。Javaスマッシュ/ Android asmack RosterListener

Presence presence = roster.getPresence(r.getUser()); 
       if(presence.isAvailable()){ 
        userstatus.add("online"); 
       }else{ 
        userstatus.add("offline"); 
       } 

はuserStatusはベクトル列である、そして私はそれから文字列配列を作ります。私のメインプログラムでは、私はちょうどオフラインまたはオンラインのためにこの攪拌アレイをチェックします。しかし、ユーザーがオフライン/オンラインになった場合の対処方法。ちょうど私はリスナーを置く必要がありますし、それをどのように使用するのですか?

答えて

6

RosterListenerを実装し、presenceChanged()メソッドを使用します。 Smack documentationに表示されているとおりのサンプルコードです。後に、ユーザの現在の「最良のプレゼンスを」取得するには

:javadocは毎回変更イベントで受信したプレゼンスを使用したが、利用可能な最善の存在をチェックしていないことを示唆していることを

Roster roster = con.getRoster(); 
roster.addRosterListener(new RosterListener() { 
    // Ignored events public void entriesAdded(Collection<String> addresses) {} 
    public void entriesDeleted(Collection<String> addresses) {} 
    public void entriesUpdated(Collection<String> addresses) {} 
    public void presenceChanged(Presence presence) { 
     System.out.println("Presence changed: " + presence.getFrom() + " " + presence); 
    } 
}); 

注意プレゼンス更新、名簿問合せ:

String user = presence.getFrom(); 
Presence bestPresence = roster.getPresence(user); 

のプレゼンス値を返します。優先順位と可用性が最も高いユーザー。

関連する問題