ロボットじゃないよ2009/07/11 17:43

HT-03A
Androidだよ。

 ということで買ってしまいました、ようやく発売された日本初のAndroid携帯電話"HT-03A"。とはいえ台湾製なんだけどね。
 まだまだつっこんだ使い方はしていない時点での評価になるけど、操作性ではiPhone/iPod Touchにはるかに劣るな。これは、指の動きにスライド動作が追いついてないような感じがあったり・・・。しかしそれも想定範囲内。Appleはそういった末端の部分の造り込みはすごいからね。しかし、QWERTYキーボードの出し方、わからなかったよ。「文字」マークの長押しとは気づかなかった。マニュアルに確かにちっちゃく記述があったけど、これではわからんな。
 あとはGPSを使ったり、マーケットで"DOOM"を落としてみたり。"DOOM"の操作法がわからないーーー多分キーボード前提ーーーので、すぐに投げ出したけど。
 さあて、デスクトップのOS入れ替えちゃったから、SDKのインストールから始めないと・・・

Ubuntu AMD64環境で32bitプログラムのbuild2009/07/12 10:39

小ネタですね。

 OSの入れ替えで64bit環境になって、これまで使っていたエディタを再コンパイルすることになった。
 国産の"ne"というもので、UTF8は使えないしもうメンテは行われていないのだけど、軽いしVz風キーバインディングが気にいってるしで、しつこく愛用している。
 64bitでも行けそうだけど、安全側に振って、32bitでビルドしてみる。

 まずは必要な環境を整える。インストールするパッケージとしては、"libc6-dev-i386"(同時にgcc-multilibもインストールされる)、それと今回は"lib32ncurses5"。使うライブラリの32bit版も必要というわけだ。
 configureの方にうまくCFLAGを渡せなかったので、configureが吐いたMakefileの方に手を入れる。CFLAGS=-m32、LIBSに-lncursesを追加。

 しかしUTF8が使えないのは痛いな。最近はどこもUTFだからな・・・

Androidアプリ作成 最初の一歩2009/07/12 13:31

Androidサンプル
 Android SDKをインストール(というか展開してPATHを切っただけだが)、内部のドキュメントからeclipseを使わないやり方を探す。結局、eclipseには馴染めなかったな・・・
 プロジェクトの作成はこんな感じ。
android create project --target 2 --path ./helloProject --activity HelloActivity --package com.example.android

 targetは1がAndroid 1.1、2が1.5を対象とするので、今から作るなら2でOK。
 Activityというのはアプリケーションの基点となるもので、今回はHelloActivityと名づける。
 コマンド実行後はhelloProjectディレクトリの下に、Antプロジェクト用のファイルやらディレクトリが一式そろっている。そして、helloProject/com/example/HelloActivity.javaが、アプリのスタブとして作られている。こんなの。
package com.example.android;

import android.app.Activity;
import android.os.Bundle;

public class HelloActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}
 この段階で、もうビルド可能。antとjdkをインストールする必要あり。
ant debug
 エミュレータで動かすには、まずエミュレータのインスタンスを作ることが必要。エミュレータのインスタンスは、AVD(Android Virtual Device)と名づけられているらしい。このAVDを作るには、適当な名前と、上に出てたターゲットの指定が必要。
android create avd --name hogehoge --target 2
 そして、自作アプリのインストール前にエミュレータを起動しておく必要がある。起動に結構時間かかるんだよな、これ。
emulator -avd hogehoge
 まずは言語の設定でもした方がいいだろう。ちなみに、自分の趣味で、引数に"-verbose"も追加している。
 さて、自作アプリの追加。ここではadb(Android Debug Bridge)というコマンドを使用。先ほどのantコマンドの結果、プロジェクトディレクトリ/binの下に、HelloActivity-debug.apkというファイルができているので、こうする。
>adb install bin/HelloActivity-debug.apk  うまくいったら、エミュレータ画面中央下のマークをクリックして"アプリケーション"タブを引き出すと、"HelloActivity"というアイコンがその中にあるはず。アイコンをクリックして、実行。
 あとは、普通のAntプロジェクトと一緒で、ソースやリソースを修正->コンパイル->インストール->実行を繰り返していくこととなる。
 注意したいのは2度目以降のインストール(再インストールと言うべきか)で、上のままのコマンドではエラーになる。この場合は、"-r"をつける。
adb install -r bin/HelloActivity-debug.apk

 ちなみに画面イメージをキャプチャするために、Android SDKに入っていたddmsというものを使ったのだが、64bit環境だと見事にエラーになる。"ia32-sun-java6-bin"をインストールし、PATHで/usr/lib/jvm/ia32-java6-sun/binが優先するようにしないといけない。これで起動しても、いろいろなライブラリの32bit版がないせいでエラーメッセージは出ているが・・・

二歩目・実機インストール2009/07/12 15:44

 さて、次は実機への自作アプリインストールのテスト。せっかく買ったんだし。
 まずは実機上、HOME画面でMENUキーを押し、設定->アプリケーション->開発->USBデバッグをオンにする。
 次に開発マシンで、ドキュメントにあるように、ファイル"/etc/udev/rules.d/50-android.rules"を作り、内容を
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4",MODE="0666"
とし、パーミッションを
chmod a+rx /etc/udev/rules.d/50-android.rules
とすればいい・・・というわけにはいかないのだった。少なくても自分の環境(Ubuntu 9.04/AMD64 + HTC-03A)では。
 デバイスが接続されているかどうかは、コマンド"adb devices"で確認できるはずなのだが、実際には何もでてこない。
 調べたり試したりした結果、ファイルの内容をこのようにすればいいとわかった。
SUBSYSTEM=="usb",SYSFS{idVendor}=="0bb4",MODE="0666",OWNER="YOURNAME"
 YOURNAMEには、もちろん、実際のアカウント名を入れる。"ATTR{idProduct}"は必須ではないようだ。
 HT-03Aがつながっていないことを確認し、
adb kill-server
sudo /etc/init.d/udev restart
を実行、再度USBで接続し
adb devices
で、
List of devices attached 
HT96XXXXXXXX	device
と表示される。このHT96...というのがシリアルナンバー。インストール先を指定したりするのに使われる。

 インストールの前にもう一つ。プロジェクトディレクトリにあるAndroidManifest.xmlに手を入れる必要がある。エディタで開き、<application>要素にandroid:debuggable="true"という属性を加え、保存、再ビルド。

 さて、ようやくインストールとなる。エミュレータが起動していなければ前回のインストールと同じだけど、今回はシリアルナンバーを指定して行なってみる。
adb -s HT96XXXXXXXX install bin/HelloActivity-debug.apk 
 成功すれば、後は実機上で動かすだけ。

HT-03Aでビデオ鑑賞(様子見)2009/07/12 22:30

 HT-03A向けに動画を変換してみる。
 自力でやったもののうまく行かず、結局はGoogleのお世話になる。ここのやり方で一応はできたのだけど、呪文にしか見えない。コーデックがどうのこうのという世界はわからない・・・。
 微妙に画像が横に伸びているのだけど、その修正もわからない。パラメータを調節しても元のままだったり、ファイルが読めなくなったりするのだよねえ。はぁ・・・
 しかしUSB経由でコピーできるのはかなり楽。細かいことは気にせず、使ってみるとしよう。そうなってくると、エンコードに非常に時間がかかるのが問題。H.264でなくてもいいんだけど・・・。