2012年3月24日土曜日

EclipseでInitializing Java Tooling Errorの時の対策の要点だけ

Androidアプリの開発でEclipseを使っていて、Eclipseの起動時に"Initializing Java Tooling"でエラーになるとか、謎のエラーに悩まされたのでその対策メモ。 環境はOSX Snow Leopard + Eclipse(Indigo)。 このエラーを消すには、Eclipseをいったん終了後、workspaceのルートにある.metadataディレクトリを消す。 その上で、Eclipseを再起動すれば良い。 そうするとProjectはワースクペースから消えてるので、インポートし直す必要はある。 それか新規にworkspacewを作るでもOKですね。

2012年3月12日月曜日

ライブ壁紙でタッチイベントを取得する方法の要点だけ

Androidのライブ壁紙でタッチイベントを取得して、何かエフェクトをかけたり、動作をさせたりしたいときのやりかた。

端的には、WallpaperService.EngineのonTouchEvent(MotionEvent event)またはonCommand(String action, int x, int y, int z, Bundle extras, boolean resultRequested)いずれかをオーバーライドすれば良い。

大きな違いとして、onTouchEventは、アプリのアイコンをタッチしたときなんかもイベントが発生してしまうのに対して、onCommandは、HOME画面中何もないところをタッチしたときだけにイベントが発生する(actionのところに"android.wallpaper.tap"というのが来て、x, yで座標が分かる)。これはHOMEアプリから発行されるイベントのようで、デフォルトのHOMEアプリ利用時に発生しないというような記述をどこかで見かけたけど、これは未確認。

なお、ライブ壁紙上の操作から何かしらIntentを発生させたい時は、通常どおり新規のIntentを作成してContext#startActivity()してやれば良いが、IntentにIntent#setFlag(Intnet.FLAG_ACTIVITY_NEW_TASK)をしてやる必要がある。これをしないとExceptionが発生するよう。