2012-06-07 10 views
5

Czy jest możliwe opublikowanie odliczania w moim stanie gmail? Np. "01: 44: 15: 23" i jego ciągłe dekrementowanie.Jak opublikować odliczanie przez stan Gmaila?

+2

Chcę się dowiedzieć, czy można zmienić komunikat o stanie Gmaila za pomocą interfejsu API? Jeszcze jedną rzeczą, którą chcę wiedzieć, jest to, że można odczytać komunikat stanu Gmaila WEDŁUG interfejsu API? –

+0

ten link jest powiązany z twoją koncepcją, więc przejdź przez to: .. http://stackoverflow.com/questions/7035687/get-user-login-status-on-facebook-by-real-time – sanghavi7

Odpowiedz

4

Znaleziony dobrą article to share:

Google Talk korzysta XMPP wtedy, jeśli można połączyć za pomocą XMPP client do listy Google account można używać klienta zamiast Google Talk.

Cały mechanizm jest zbyt proste (używany do Smack XMPP Library ponieważ jest prosty i służy mi dobrze):

  1. zalogować.
  2. Oblicz różnicę między teraz i docelową datą.
  3. Wyślij obecność

Logowanie

import org.jivesoftware.smack.XMPPConnection; 

public void connect() { 
    XMPPConnection connection = new XMPPConnection(server); //Server is gmail.com for Google Talk. 
    connection.connect(); 
    connection.login(username, password); //Username and password. 
} 

różnicy Oblicz między teraz i ukierunkowane data

Proces ten odbywa się za pomocą Java Kalendarz i data obiekty:

import java.util.Calendar; 
import java.util.Date; 

{ 
     Calendar calendar1 = Calendar.getInstance(); 
     Date d = new Date(); 
     calendar1.setTime(d); 

     Calendar calendar2 = Calendar.getInstance(); 
     calendar2.setTime(endLine); //End line is the date we're counting to. 

     long milliseconds1 = calendar1.getTimeInMillis(); 
     long milliseconds2 = calendar2.getTimeInMillis(); 
     long diff = milliseconds2 - milliseconds1; 

     long diffDays = diff/(24 * 60 * 60 * 1000); 
     diff = diff % (24 * 60 * 60 * 1000); 

     long diffHours = diff/(60 * 60 * 1000); 
     diff = diff % (60 * 60 * 1000); 

     long diffMinutes = diff/(60 * 1000); 
     diff = diff % (60 * 1000); 
} 

Ten kod oblicza różnicę między dwiema datami w dniach, godzinach i minutach.

Wyślij obecność

Po obliczeniu różnicy wszystko co musimy zrobić, to wysłać obecność:

import org.jivesoftware.smack.packet.Presence; 

{ 
     String remaining = Long.toString(diffDays) + " day(s), " + Long.toString(diffHours) + " hour(s), " + Long.toString(diffMinutes) + " minute(s) " + message; //Message is usually: Until "something". 

     Presence presence = new Presence(Presence.Type.available); 
     presence.setStatus(remaining); 
     presence.setPriority(24); //Highest priority in Google Talk 
     presence.setMode(presenceMode); //This is one of XMPP modes (Available, Chat, DND, Away, XA). 
     connection.sendPacket(presence); 
} 

Po tym punkcie ludzie zobaczą swój nowy status zamiast jednego w Google Rozmowa. (Zauważ, że zmiana nie będzie widoczna w Google Talk, ale możesz mieć pewność, że została zmieniona. Jeśli chcesz się upewnić, że została zmieniona, poproś jednego z twoich znajomych o podanie twojego statusu).

+0

PHP może być używane dla tego? –

+0

można znaleźć pomoc na: http://code.google.com/p/xmpphp/ http://stackoverflow.com/questions/2495154/best-xmpp-client-php-javascript i http: //metajack.wordpress .com/2008/07/02/xmpp-is-better-with-bosh / –

2

Jego bardzo prosty wystarczy pobrać status-counter.jar od here i napisać skrypt

java -jar /root/status-counter.jar -status SF -username [email protected] -password XXXXXX -datetime 2013-03-21T16:00:00+02:00 -type hours -decimals 0 

i napisać cron wykonać zadanie

*/5 * * * * /path/script.sh > /dev/null 

ten aktualizuje swój status co 5 minut. Więcej szczegółów można znaleźć here.