kiyo_hikoのブログ

メモ+日記?

Javaでネットワーク上のPCの画面を一部または全部監視するアプリ開発 (1)

自分の制作物を対面で誰かにアピールする方法をいろいろ考えていたのだけど、真っ先に思い付いたのが、USBマルチモニターで複製表示である。

おわり。


と思ったのだけど、せっかくPCもタブレットもあるんだし、USBモニター買ってこれ以上物増やしたくないし金も失いたくない。どうせならタブレットにPCの画面を複製表示してほしい。

でUSBのちっぽけなアクセサリーを検索したらワームホールなんちゃら、てのがタブレットを別PCのモニターにできるってのがあったけど、これまた8000円近くする。無理。
なので、Javaでとりあえず画面の複製だけやるアプリを作ろうと思った。名前はまだない。

基本思想としては次のとおり

1.サーバー(PC)側で行って時間おきにjava.awt.RobotのcreateScreenCapture出してBufferedImageのインスタンスゲット
キャプチャーの部分は以前10分ぐらいで新規に書いたマルチモニター向け画面複製Javaアプリがあるので割と楽なはず。
2.SocketでImageデータをクライアントに転送
3.クライアント(タブレット)で表示

これだけ。ショボイ。


で、遅延とかちらつきとか、なるべく防ぎたいのだけどどうすればいいのかわからない。
Swingはダブルバッファリングがデフォだった気がするのでたぶんあまり問題ないとみているが、サーバーのキャプチャとクライアント描画のタイミングのズレをどうやって誤魔化すかがよくわからぬ。
Producer/Consumerパターンとか使えばいいのだろうか。


まあとりあえず作ってみる