发现一篇好文章分享:
\n\nGoogle Talk 使用 XMPP,那么如果您可以使用客户端连接,则XMPP client可以Google account使用客户端而不是 Google talk。
整个机制太简单了(使用 SmackXMPP Library因为它很简单并且对我很有用):
登录
\n\nimport org.jivesoftware.smack.XMPPConnection;\n\npublic void connect() {\n XMPPConnection connection = new XMPPConnection(server); //Server is gmail.com for Google Talk.\n connection.connect();\n connection.login(username, password); //Username and password.\n}\nRun Code Online (Sandbox Code Playgroud)\n\n计算现在与目标日期之间的差异
\n\n此过程是使用 Java Calendar 和 Date 对象完成的:
\n\nimport java.util.Calendar;\nimport java.util.Date;\n\n{\n Calendar calendar1 = Calendar.getInstance();\n Date d = new Date();\n calendar1.setTime(d);\n\n Calendar calendar2 = Calendar.getInstance();\n calendar2.setTime(endLine); //End line is the date we\'re counting to.\n\n long milliseconds1 = calendar1.getTimeInMillis();\n long milliseconds2 = calendar2.getTimeInMillis();\n long diff = milliseconds2 - milliseconds1;\n\n long diffDays = diff / (24 * 60 * 60 * 1000);\n diff = diff % (24 * 60 * 60 * 1000);\n\n long diffHours = diff / (60 * 60 * 1000);\n diff = diff % (60 * 60 * 1000);\n\n long diffMinutes = diff / (60 * 1000);\n diff = diff % (60 * 1000);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n此代码计算两个日期之间的天数、小时数和分钟数之差。
\n\n发送出席信息
\n\n计算出差异后,我们要做的就是发送存在:
\n\nimport org.jivesoftware.smack.packet.Presence;\n\n{\n String remaining = Long.toString(diffDays) + " day(s), " + Long.toString(diffHours) + " hour(s), " + Long.toString(diffMinutes) + " minute(s) " + message; //Message is usually: Until "something".\n\n Presence presence = new Presence(Presence.Type.available);\n presence.setStatus(remaining);\n presence.setPriority(24); //Highest priority in Google Talk\n presence.setMode(presenceMode); //This is one of XMPP modes (Available, Chat, DND, Away, XA).\n connection.sendPacket(presence);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n此后,人们将看到您的新状态,而不是 Google Talk 中的状态。(请注意,\xe2\x80\x99 无法在 Google Talk 中看到更改,但请放心,它已更改。如果您想确保它已更改,请请您的一位朋友告诉您您的状态)。
\n