rawbytes

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

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が発生するよう。

AndroidアプリをAntでビルドするための要点だけ

Jenkinsとかに興味が出てきたので、AndroidアプリをAntでビルドするための方法について調べた。 ドキュメントにはコマンドラインのandroidツールからプロジェクトを作成するとbuild.xml(Antの設定ファイル)が生成されるとあるけれど、 実際に必要なのは以下のgithubに置いた3ファイル。あとはEclipseで生成できる普通の(?)プロジェクトでOK。 https://github.com/hkurosawa/android_ant (1)↑にある3ファイルをプロジェクトのルートディレクトリに展開する (2)local.propertiesがAndroid SDKを指すように変更する (3)ant.propertiesがkeystoreおよびalias名を指すように変更する(配布用の署名までAntで行う場合) 使い方やターゲットはプロジェクトのルートで$ antとすれば出てくる。 ところで、プロジェクトに生成されるbuild.xmlはほとんど空で、実体は{sdk}/tools/ant/build.xmlをincludeしているみたい。 $ android update project –path /path/to/project すれば、コマンドラインから必要なファイルを生成してくれるみたいで、このエントリあんまり意味ないことに気づいた。

dotcloudでDjango

dotcloudのチュートリアルでDjango + Mongo DBがうまく動かなかったのでメモ的に書いとく。 単にチュートリアルが古いだけなのでそのうち修正されるんだと思う。 http://docs.dotcloud.com/tutorials/python/django-mongodb/ このドキュメントの、requirements.txtの部分の記述が古くて、うまくdotcloud pushできない(エラーをよく見ると、django-mongodb-engineがgithubからpullできてないみたい)。これを、 このように書くとうまくデプロイできる。

AndEngine Wallpaper Extension Exampleが動かないので直した。

Google CodeでホストされているAndEngine Wallpaper Extension Exampleのコードには古いライブラリjarが同梱されていて、最新のライブラリだと動かないというのを発見した。 パッケージ階層が変わっていたり、deprecatedなメソッドが出来ていたりするみたい。 http://code.google.com/p/andenginelivewallpaperextensionexample/ なので、諸々直したのを以下に置きました。 http://code.google.com/r/kh99mail-andenginelivewallpaperextensionexample/ GoogleCodeもMercurialもあまり使ってないのでどうやって作者さんに知らせたら良いか分からず、直したよってメールしてみた。これで合ってるのかな。正しいやり方があったら誰か教えてください。