2012-06-07 27 views
5

Bạn có thể xuất bản đếm ngược trong trạng thái gmail của mình không? Giống như "01: 44: 15: 23" và các lần giảm liên tục.Cách xuất bản đếm ngược qua trạng thái gmail?

+2

Tôi muốn biết liệu có thể thay đổi thông báo trạng thái Gmail bằng API không? Một điều nữa tôi muốn biết là có thể đọc thông báo trạng thái Gmail B ANNG AN API không? –

+0

liên kết này có liên quan đến khái niệm của bạn, vì vậy hãy xem nó: http://stackoverflow.com/questions/7035687/get-user-login-status-on-facebook-by-real-time – sanghavi7

Trả lời

4

Tìm thấy một tốt article to share:

Google Talk sử dụng XMPP sau đó nếu bạn có thể kết nối sử dụng một XMPP client để bạn Google account bạn có thể sử dụng máy khách thay vì Google talk.

Toàn bộ cơ chế là quá đơn giản (sử dụng các Smack XMPP Library vì nó là đơn giản và phục vụ tốt cho tôi):

  1. Đăng nhập.
  2. Tính chênh lệch giữa giờ và ngày được nhắm mục tiêu.
  3. Gửi sự hiện diện

Đăng nhập

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

Tính chênh lệch giữa bây giờ và ngày nhắm

Quá trình này được thực hiện sử dụng Java Lịch và ngày các đối tượng:

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

Mã này tính toán sự khác biệt giữa hai ngày theo ngày, giờ và phút.

Gửi sự hiện diện

Sau khi tính toán sự khác biệt tất cả chúng ta phải làm là để gửi các mặt:

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

Sau thời điểm này mọi người sẽ thấy trạng thái mới của bạn thay vì một trong Google Nói chuyện. (Lưu ý rằng bạn sẽ không thể thấy thay đổi bên trong Google Talk nhưng hãy yên tâm rằng nó đã thay đổi. Bạn muốn đảm bảo rằng thay đổi đó yêu cầu một người bạn của bạn cho bạn biết trạng thái của bạn).

+0

PHP có thể được sử dụng cho điều này? –

+0

bạn có thể tìm trợ giúp trên: http://code.google.com/p/xmpphp/ http://stackoverflow.com/questions/2495154/best-xmpp-client-php-javascript và http: //metajack.wordpress .com/2008/07/02/xmpp-is-better-with-bosh / –

2

của nó rất đơn giản chỉ cần tải status-counter.jar từ here và viết một tập tin script

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 

và viết một cron để làm công việc

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

này cập nhật trạng thái của bạn mỗi 5 phút. Bạn có thể tìm thêm chi tiết here.

Các vấn đề liên quan