棚からパルチャギ

日々の雑記、ニュース拾いとか

2007. 11. 18

Android (エミュレータ小ネタ)
Androidのエミュレータは、小さなディスプレイとボタンが並んだ無骨なデザインで、 少しがっかりした人もいるかもしれませんが(実機ではないですけど)、 エミュレータのスキンは全部で4種類あるので、別のデザインに変更することが可能です。

> emulator -skin HVGA-P
起動時の引数に、上記のようにスキン名を指定すると、任意のスキンを適用してエミュレータが起動します。 スキンファイルは <android_sdk(インストールパス)>/tools/lib/images/skins に置かれています。 必要な画像を用意してレイアウトを定義すれば、自作スキンで動かすこともできそうですね。 各スキンのデザインはこんな感じ(↓)。


左から順に…
・HVGA-L
・HVGA-P
・QVGA-L (デフォルト)
・QVGA-P



もう一つ。
デフォルトの壁紙は、オーロラっぽいのとNice boat.っぽいものの2種類しか用意されていないんですが、 どうにも味気ないので自分好みの壁紙に変更する方法。 実機じゃないのであまり意味はないですけど、開発中のモチベーション維持にw

画像(ここではimage.jpg)を用意して、エミュレータが起動している状態で、コマンドラインから以下のコマンドを実行します。 エミュレータを再起動すると壁紙が変更されています。元に戻す場合は、デフォルトの壁紙を選択しなおしてください。
> adb push image.jpg /data/misc/wallpaper

画像形式はJPG/GIF/PNG/BMPあたりなら認識してくれるようです。 サイズは解像度に合わせて自動的に拡大/縮小されますが、横長の壁紙を縦画面のインターフェースで使用すると、 縦に伸ばされてしょんぼりするので、解像度にあったサイズで用意しておくのがよいと思います。
スキンの解像度は、320x240/480x320の縦または横画面。 バッテリー残量や時計表示で上部に20dot分確保されるので、その分を差し引く必要があります。
Android (プリプロセッサ)
携帯Javaの世界では、とにかくファイルサイズを縮小する必要があるので、 プリプロセッサを使って定数やメソッドをマクロで展開したりすることも多かったと思います。 そうでなくても、#ifdef とか enum(これは言語仕様だけど) 使いたいよねー、 ということでC/C++付属のものや私製のプリプロセッサを仲介させる場合は、build.xmlに以下のような記述を追加します。
<!-- Execute preprocessor --> <property name="preprocess.exec" value="C:/Development/Tools/preprocessor.exe" /> <target name="preprocess"> <apply executable="${preprocess.exec}" dest="${srcdir}" parallel="false"> <srcfile/> <targetfile/> <fileset dir="${srcdir}" includes="**/*.j"/> <mapper type="glob" from="*.j" to="*.java"/> </apply> </target>

<!-- Compile this project's .java files into .class files. --> <target name="compile" depends="dirs, resource-src, aidl, preprocess"> ... </target>
preprocessターゲットを新規に追加して、compileターゲットの依存関係に追加します。 ここでは、ソースコードディレクトリに存在する*.jファイルを、プリプロセッサを介して*.javaファイルに変換しています。

赤字のプリプロセッサのファイルパスは使用するプログラムに置き換えてください。 iアプリのときはpp_incというプリプロセッサを使っていたんですが、 Java5以降のアノテーション(@overrideとか)に対応していないので、変数やメソッド名の短縮命令と間違われて正しく処理できなくなってしまいました。残念。 前の会社で社内ツールとして使っていたプリプロセッサは、携帯アプリ開発に特化していたのもあって、 非常に高機能で便利だったんですが、あれをオープンソースとかで公開してくれないかしら。
雑記
このところ朝は5:00くらいに目が覚めるという妙に健康的な生活を送っているんですが、 別に早起きを心がけているわけではなくて、部屋に物が多すぎて布団が敷けないという理由で、無駄に毎朝ガクブルしてます。 本棚欲しい。