Twitterをタスクトレーでずっと動かしている場合、Windowsが休止状態から復帰したら、それを検出して更新したい。
JavaでWindowsやMacのスリープ/休止からの復帰を検出する方法はあるのか?
とりあえず、Windowsに関しては、下記を見つけた。
CodeProject: PC StandBy Detector for Java apps. Free source code and programming help
ダウンロードしようとしたら、メンバー登録が必要だった。下記に同じ記事があって、こちらはすぐにダウンロードできた。
CodeGuru: Java/C++ PC Standby Detect and Prevent
中を見てみると、案の定、JNIでdllを呼び出している。が、よく見たら、スタンバイの要求を検出するけど、スタンバイからの復帰は検出してくれないみたい。これは使えない。
今回の場合、復帰を直接検出するのではなく、十分な頻度で(1分間に1回程度)時刻を調べて、時刻が飛んでいたら休止していたと判断すればよいかもしれない。
Wednesday, June 11, 2008
Tuesday, June 10, 2008
Twitter + Java

TwitterのWeb APIをJavaから使うサンプルを作ってみた。
http://www.mediafire.com/?ycvm1nsx0wu
(パスワードつき)
Restletを使ってTwitterのWeb APIにアクセスしてFriends Timelineを取得。SystemTrayを使ってタスクトレイに小さいアイコンを表示し、クリックするとFriends Timelineが表示される(現在はテキストのみ)。実行可能なjarの中にjarのライブラリを入れるためにOne-JARを使用。
Monday, June 9, 2008
TwitterFox
TwitterFoxのソースを覗いてみる。
ステータスバーのアイコンのイメージがcontent/statusbar.png。3つのアイコンが1枚のイメージにまとまっている。
content/twitternotifier.xulを見ると、こんな感じ。
content/twitternotifier.jsを見ると、stateを切り替える関数がある。
messageは多分エラーメッセージで、エラーが発生すると、アイコンが赤くなって、マウスを上に持っていくと、ツールチップにエラーメッセージが表示されるらしい。
ステータスバーのアイコンのイメージがcontent/statusbar.png。3つのアイコンが1枚のイメージにまとまっている。
content/twitternotifier.xulを見ると、こんな感じ。
CSSのクラスを指定しているので、CSSでコントロールしているらしい。なので、content/twitternotifier.cssを見てみると、こんな感じ。
<statusbar id="status-bar">
...
<statusbarpanel id="twitternotifier-statusbar-button"
class="statusbarpanel-menu-iconic"
context="twitternotifier-main-menupopup"
ondblclick="gTwitterNotifier.openURL('http://twitter.com/home')"
onclick="return gTwitterNotifier.onClickStatusbarIcon(event)"
tooltip="twitternotifier-tooltip">
<label id="twitternotifier-statusbar-text" style="margin: 1px"/>
</statusbarpanel>
..
</statusbar>
#twitternotifier-statusbar-button {
list-style-image: url("chrome://twitternotifier/content/statusbar.png");
display: -moz-box;
-moz-image-region: rect(16px, 16px, 32px, 0px);
padding-left: 3px;
padding-right: 3px;
}
#twitternotifier-statusbar-button[state="active"] {
list-style-image: url("chrome://twitternotifier/content/statusbar.png");
-moz-image-region: rect(32px, 16px, 48px, 0px);
}
#twitternotifier-statusbar-button[state="error"] {
list-style-image: url("chrome://twitternotifier/content/statusbar.png");
-moz-image-region: rect(0px, 16px, 16px, 0px);
}
mozの独自拡張を使って、イメージを切り出している。-moz-image-region: rect(top, right, bottom, left);一番上の16x16がstate="error"の時のアイコン。一番下がstate="active"の時のアイコン。真ん中がその他の時。
content/twitternotifier.jsを見ると、stateを切り替える関数がある。
setButtonState: function(state) {
var btn = this.$("twitternotifier-statusbar-button");
btn.setAttribute("state", state);
},こんな風に呼び出している。showMessage: function(message) {
var elem = this.$("twitternotifier-status-tooltip");
if (message) {
this.setButtonState("error");
elem.setAttribute("value", message);
}
else {
this.setButtonState("active");
elem.setAttribute("value", "TwitterFox");
}
},
messageは多分エラーメッセージで、エラーが発生すると、アイコンが赤くなって、マウスを上に持っていくと、ツールチップにエラーメッセージが表示されるらしい。
Subscribe to:
Posts (Atom)