連載
» 2010年02月24日 00時00分 UPDATE

Androidで動く携帯Javaアプリ作成入門(14):Android 2.1の新機能「Live Wallpaper」で作る、美しく燃える“待ち受け” (1/3)

[緒方聡,株式会社イーフロー]

2010 Game Developers ConferenceにAndroidが

 2010年になっても、Android関係の話題は盛りだくさんですね。中でも筆者が気になっている話題は、「Android at the 2010 Game Developers Conference」です。

 Android Marketの登録本数は2万本を超え、その中でもゲームの割合が約20%と一番多い人気ジャンルになっています。同様に有料アプリの割合もゲームがトップです。

 これを受けてか、2010年3月9〜10日にサンフランシスコで開催される「Game Developers Conference」で、Java/C++開発者向けのセッションが開催されます。ここでは、Androidチームが開発者の質問にFace to Faceで回答してくれます。日本から参加するのは難しい感じですが、こうした動きがAndroidチームによって行われるというのは喜ばしいことだと思います。

動画で見る、動く壁紙「LiveWallpaper」とは

 さて、今回は先月にリリースされたAndroid 2.1の新機能を解説します。Android 2.1には、動く壁紙「Live Wallpaper」機能が追加されました。

 上記は今回実装したLive Wallpaperのサンプル動画です。今回は、LiveWallpaperの作り方を一通り説明します。

 後ほどソースコードを引用して説明しますが、壁紙の本体は、実は記事「SurfaceViewならAndroidで高速描画ゲームが作れる」で紹介したSurfaceViewです。また、TouchEventも処理可能なので、簡単なゲームなら作れてしまいそうです。

 サンプルを以下のリンクよりダウンロードして実行してみてください。

コラム 「いつになる? AndroidのJIT」

Androidには、2.1リリース時点でJITが標準で提供されていません。将来的にはJITが搭載される予定です。

今回の炎のエフェクトは、PC上のJava VMでは速度的に問題ないですが、Android上で動かすと処理の遅さが目立ってしまいます。そのため、エミュレータで動作を確認する際には、QVGA以下のAVDを専用に作成することをお勧めします。


Serviceを継承するLive Wallpaperの構成

  LiveWallpaperは、以下の要素で構成されます。

定義 説明
WallpaperService 動く壁紙はサービスとして実行される
WallpaperService.Engine 壁紙の描画を行うエンジン。これが重要
PreferenceActivity 壁紙設定画面(オプション)
表1 LiveWallpaperの構成

 実装が必須なのは、WallpaperServiceとWallpaperService.Engineです。今回は、設定画面も実装しています。

 また、ライフサイクルとコールバックメソッドです。

メソッド 説明
WallpaperService#onCreateEngine() エンジンを作成して返す必要がある
WallpaperService.Engine#onCreate() エンジンが生成された際に呼び出される
WallpaperService.Engine#onDestroy() エンジンが破棄される際に呼び出される
WallpaperService.Engine#onSurfaceCreated() Surfaceが生成された際に呼び出される
WallpaperService.Engine#onSurfaceChanged() Surfaceが変更された際に呼び出される
WallpaperService.Engine#onSurfaceDestroyed() Surfaceが破棄された際に呼び出される
WallpaperService.Engine#onDesiredSizeChanged() 壁紙サイズ変更時に呼び出される
WallpaperService.Engine#onOffsetChanged() 壁紙位置変更時に呼び出される
WallpaperService.Engine#onVisibilityChanged() 可視・不可視変更時に呼び出される
WallpaperService.Engine#onTouchEvent() タッチイベントを受け取れる
表2 WallpaperServiceとEngineのコールバックメソッド

 WallpaperServiceはServiceを継承したクラスです。Serviceのライフサイクルについては、記事「常駐アプリが作成できるAndroidの“サービス”とは」を参照してください。

 今回のサンプルを作成するに当たり、実装よりも設定にてこずりました。ですが、設定個所と内容が分かってしまえば問題ありません。必要な設定ファイル(XML)はいくつかあるのですが、次ページで、それらを1つずつ説明します。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。