スキップしてメイン コンテンツに移動

投稿

10月, 2009の投稿を表示しています

Androidアプリケーションを開発するための準備

来月、海外に出張することもあってdocomoのHT-03Aを購入してしまった。本当は海外で使うというのは口実でAndroidアプリケーションを開発したいだけだったりする。ここでは個人的なメモも兼ねて、Windows上でAndroidアプリケーションを開発するための準備について記しておく。

まず、Eclipse Classicをダウンロード(現時点の最新版は3.5.1)して、それを適当なディレクトリに展開する。C:\に展開した場合、C:\eclipse\というディレクトリができる。因みに日本語版でも問題ないと思うが、自分は英語版のEclipseを使っている。

次にAndroid SDKをダウンロード(現時点の最新プラットフォームは2.0 "eclair")して、やはり適当な場所に展開する。C:\android\に展開した場合、C:\android\android-sdk-windows\というディレクトリが作成される。C:\android\android-sdk-windows\toolsを環境変数PATHに追加しておく。

展開したディレクトリにあるSDK Setup.exeを実行すると、Android SDK and AVD Managerが起動するので、そのままプラットフォームをアップデートする。もし、SSLでエラーが出る場合は、Settingsの"Force https://... sources to be fetched using http://..."のチェックボックスをオンにすること。Installed Packagesでインストールされたプラットフォームを確認できる。必要なバージョンのプラットフォームがインストールされていないときは、Available Packagesで必要なバージョンをインストールできる。

Androidのアップデートが終わったら、Eclipseを起動させる。最初に作業ディレクトリ(workspace)を訊かれるが適当なディレクトリを指定する。起動したら[Help]-[Install New Software...]でAddボタンを押し、NameにAndroid Plugin、Locationにhttps://dl-ssl.google.com/android/eclipse/を指定…

無線LANで現在位置を取得してGoogleマップとストリートビューで表示する

昨年の8月に書いた記事、「Google App Engine: Gearsで位置情報を取得してストリートビューで表示させる」で、無線LANから取得した現在位置をGoogleマップストリートビューで表示するウェブアプリを作ったが、今回、それをブログなどにもそのまま貼り付けられるようにしてみた。もともと、JavaScriptを使ったアプリなのでそれほど変更するところもなかったのだが、無用な部分を削除し、きちんと画面にエラーメッセージを表示するようにした。動作させるためにはGearsをインストールしている必要がある。

無線LANから現在位置情報を取り出すためにGearsのGeolocation APIを使った。位置情報を取り出したらあとはGoogle Maps APIでそれをGoogleマップとストリートビューで表示させるだけだ。因みに、今年の7月からGoogleマップの画面で左上にある四角いボタンを押すと現在位置を表示できるようになっている。

今回のアプリでは、現在位置を示すマーカーに自作の扇形アイコンを使った。ストリートビューの向きと連動している。ペグマン(人型アイコン)でもよかったのだろうけど、個人的には向いている方向が分かりづらいと思う。



以下にソースファイルを示す。ページを読み込んだ際にGearsにより位置情報を取得している。

<script src="http://maps.google.com/maps?file=api&v=2.x&key=Google Maps API Key" type="text/javascript"></script> <script type="text/javascript" src="http://code.google.com/apis/gears/gears_init.js"></script> <script type="text/javascript"> var map; var pano; var overlayInstance = null; var marker; var info_window = false; var lat…

Python: 画像で与えられた迷路に対し2点間の最短経路を求める

迷路の描かれた画像に対して、ピクセルの座標で指定したスタート地点とゴール地点の最短経路を求めるプログラムをPython+PILで書いてみた。使用する画像は、デジカメで撮ったものでも、ウェブから拾ってきたものでも、ペイントソフトで自作したものでも構わない。

まずは使用例を見て欲しい。この画像は携帯カメラで撮った自作の簡単な迷路だ(画像上)。それに対して指定した2点間の最短経路を赤線で示してみた(画像下)。ピクセル単位で計測しているので赤線が若干ガタガタしていて完全な最短経路ではないがほぼ最短と考えていいだろう。迷路画像(画像上)をmaze01.jpgとし、スタート地点の座標が(240, 160)、ゴール地点の座標が(210, 400)の場合、コマンドラインで以下のように実行する。

maze_solver.py maze01.jpg -s 240 160 -g 210 400

これで最短経路を求めることができ、画像ビューアが立ち上がって経路の描かれた画像が表示される(画像下)。画像ビューアではなく画像ファイル(ここではmaze01out.jpgとする)に出力したい場合は、以下のようにする。

maze_solver.py maze01.jpg -s 240 160 -g 210 400 -o maze01out.jpg

このプログラムは2つのパートで成り立っていて、一つは画像認識を使った画像データの領域分けであり、もう一つはその領域内の2点間の経路探索である。それぞれ、連結成分ラベル付け(connected component labeling, CCL)アルゴリズムA*探索アルゴリズムを利用して処理している。詳細についてはそれぞれのリンク先と最後に示したソースコードを参照して欲しい。

次の例は、Wikipediaの迷路の項目で例示されている迷路画像(画像上)を解いてみたものだ(画像中、下)。いずれも迷路の真ん中の小部屋(270, 130)をスタート地点とし、画像中段ではゴールを左上(0, 0)、下段では右下(490, 268)とした。スタートとゴールまでの経路は複数あるが、いずれも最短経路を示している。

画像上段をmaze02.pngとした場合、画像中段、下段は、それぞれ以下のように実行して作成した。

maze_solver.py maze02.png -s 2…