Blog

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

    Androidアプリの開発でEclipseを使っていて、Eclipseの起動時に”Initializing Java Tooling”でエラーになるとか、謎のエラーに悩まされたのでその対策メモ。
    環境はOSX Snow Leopard + Eclipse(Indigo)。

    このエラーを消すには、Eclipseをいったん終了後、workspaceのルートにある.metadataディレクトリを消す。
    その上で、Eclipseを再起動すれば良い。

    そうするとProjectはワースクペースから消えてるので、インポートし直す必要はある。
    それか新規にworkspacewを作るでもOKですね。

  • Androidデバイス上でIntentが使えるかどうかのチェック方法の要点だけ

    PackageManager#queryIntentActivities (Intent intent, int flags) を利用すればOK。flagはPackageManagerの定数。

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

    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 すれば、コマンドラインから必要なファイルを生成してくれるみたいで、このエントリあんまり意味ないことに気づいた。

  • DjangoでDotCloud環境とローカル環境の使い分けの要点だけ

    gistで見つけた。要は単にsettings.pyでenvironments.jsonを読み分ければ良いみたい。

  • keytoolコマンドでapk署名用のkeystoreファイルの作成の仕方の要点だけ

    <script src=”https://gist.github.com/1559067.js?file=gistfile1.sh”></script>

  • dotcloudでDjango

    dotcloudのチュートリアルでDjango + Mongo DBがうまく動かなかったのでメモ的に書いとく。
    単にチュートリアルが古いだけなのでそのうち修正されるんだと思う。

    http://docs.dotcloud.com/tutorials/python/django-mongodb/
    このドキュメントの、requirements.txtの部分の記述が古くて、うまくdotcloud pushできない(エラーをよく見ると、django-mongodb-engineがgithubからpullできてないみたい)。これを、

    このように書くとうまくデプロイできる。

  • Androidでランチャーから起動可能なActivityの一覧を取得する方法の要点だけ

    PackageManagerというクラスを指定して、特定のIntentに対応するActivityの一覧をListで取得できる。ResolveInfoからは該当Activityに関する様々な情報が参照できる。