2012-06-07 21 views
5

请问是否可以在我的gmail状态下发布倒计时? 像“01:44:15:23”一样不断减少。如何通过gmail状态发布倒计时?

+2

我想知道是否可以通过API更改Gmail状态消息?还有一件事我想知道的是,可以通过AN API读取Gmail状态消息吗? –

+0

此链接与您的概念相关,因此请仔细阅读:http://stackoverflow.com/questions/7035687/get-user-login-status-on-facebook-by-real-time – sanghavi7

回答

4

找到了一个好article to share

谷歌Talk使用XMPP然后如果你可以连接使用XMPP clientGoogle account你可以使用客户端,而不是谷歌的谈话。

整个机制过于简单(使用的拍击XMPP Library因为它简单,供应我很好):

  1. 登录。
  2. 计算现在和目标日期之间的差异。
  3. 立即和目标日期之间存在

登录

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. 
} 

计算差异

这个过程是使用Java日历和Date对象完成:

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); 
} 

此代码以天,小时和分钟计算两个日期之间的差异。

发送存在

计算差值所有我们要做后是送的存在:

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); 
} 

这一点后人们会看到你的新的状态,而不是一个在谷歌的谈论。 (请注意,您将无法看到Google Talk内的变化,但请放心,它会发生变化。如果您想确保变更,请向您的某位朋友通知您的状态)。

+0

PHP可以使用为了这? –

+0

你可以找到帮助:http://code.google.com/p/xmpphp/ http://stackoverflow.com/questions/2495154/best-xmpp-client-php-javascript和http://metajack.wordpress .COM/2008/07/02/XMPP的是,更好,与波什/ –

2

它非常简单只需下载从herestatus-counter.jar,写一个脚本文件

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 

,写一个cron来完成这项工作

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

此更新,每5分钟你的状态。更多细节可以在here找到。