如何通过gmail状态发布倒计时?

Posted

技术标签:

【中文标题】如何通过gmail状态发布倒计时?【英文标题】:How to publish a countdown via gmail status? 【发布时间】:2012-06-07 15:42:10 【问题描述】:

请问可以在我的 gmail 状态中发布倒计时吗? 像“01:44:15:23”和它不断递减。

【问题讨论】:

我想知道是否可以通过 API 更改 Gmail 状态消息?我想知道的另一件事是,是否可以通过 API 读取 Gmail 状态消息? 此链接与您的概念有关,请浏览它:.. ***.com/questions/7035687/… 【参考方案1】:

找到一个好article to share:

Google Talk 使用 XMPP,如果您可以使用 XMPP client 连接到您的 Google account,您可以使用客户端而不是 Google Talk。

整个机制太简单了(使用了 Smack XMPP Library,因为它很简单,对我很有帮助):

    登录。 计算现在与目标日期之间的差异。 发送状态

登录

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 Calendar 和 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 中的状态。 (请注意,您无法在 Google Talk 中看到更改,但请放心,它已更改。如果您想确保更改,请让您的一位朋友告诉您您的状态)。

【讨论】:

您可以在以下位置找到帮助:code.google.com/p/xmpphp ***.com/questions/2495154/… 和 metajack.wordpress.com/2008/07/02/xmpp-is-better-with-bosh【参考方案2】:

非常简单,只需从here 下载status-counter.jar 并编写脚本文件

java -jar /root/status-counter.jar -status SF -username username@gmail.com -password XXXXXX -datetime 2013-03-21T16:00:00+02:00 -type hours -decimals 0

并编写一个 cron 来完成这项工作

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

这会每 5 分钟更新一次您的状态。更多详情请见here。

【讨论】:

以上是关于如何通过gmail状态发布倒计时?的主要内容,如果未能解决你的问题,请参考以下文章

计时器:如何在后台保持计时器处于活动状态

如何在android的状态栏上显示倒数计时器,如时间显示?

如何通过单击按钮启动倒数计时器事件?

如何定期设置状态?

按下按钮后如何显示 24 小时计数器

可以恢复至原来状态的倒计时