NASAのAPODの画像をAndroidスマホで定期更新で壁紙に
NASAのサイトにAstronomy Picture of the Dayというのがあり、
日替わりで素敵な画像を載せてくれている。
http://apod.nasa.gov/apod/astropix.html
これをスマホの壁紙に定期的に取得・設定するアプリを自分用に作ったのでメモ。
Androidの機能の勉強にもなったのでメモ。
要点は3つで、
1. 壁紙の設定
WallpaperManagerを使う。
wallman = WallpaperManager.getInstance(this);
URL url = new URL(urlString);
InputStream istream = url.openStream();
wallman.setStream(istream);
istream.close();
という感じでURLからInputStreamをつくり、それで設定できる。
2.画像のURLの取得
トップページのURLは分かっているので、そこのHTMLソースからjpg(jpeg)へのリンクを探す。
URL url = new URL("http://apod.nasa.gov/apod/astropix.html");
http = (HttpURLConnection) url.openConnection();
http.setRequestMethod("GET");
http.connect();
in = http.getInputStream();
でInputStreamでHTMLソースが取得出来るので、その中のダブルクォートを手がかりにjpgを探す。
連結して画像URL生成。
3.Serviceで定期更新
Serviceクラスを作り、定期的に処理が行われるようにする。
マニフェストにserviceを追加で書き、メインアクティビティでインテント生成しstartService();
新規に作ったServiceを継承したクラスで、
onStartCommandの中でTimerTaskで更新処理を行う。
サービスが強制終了された場合にはサービスの再起動をしてほしいので、
onStartCommandの返り値はSTART_REDELIVER_INTENTに。
Serviceの使いかたが分かったのでためになった。
起動したServiceは実行中のアプリケーションの画面で確認できた。
配信するようなアプリにするなら、更新の停止等の設定を出来るようにしておく必要はあるかな。
参考:
Android sdk2.0のAPIを使用して壁紙を変更してみる
http://labs.techfirm.co.jp/android/iguchi/179
Android4.0で画像をURLから取得して表示してみる
http://devslog.com/article/20111206191039.html
Androidのバックグラウンド処理に使うServiceのまとめメモ