SUGARSPOT

Androidアプリ、WEBサービス開発の SUGARSPOT  |Androidブログ「Androidのことなんだけど」もやってます

2011年6月29日水曜日

AndroidのHTTP通信をのぞく

あちこちに情報が出ているので、これは自分用のメモ。

必要なもの
エミュレーターの場合:なし
実機の場合:root権限

やりかたは、エミュレーターでも実機でも同じです
非常に簡単

1)以下のコマンドを実行する
>adb shell tcpdump -vv -s 0 -w /sdcard/output.cap

※これでsdcardにouput.capというファイル名で情報が蓄積されている

2)確認したいアプリを起動して、動かす

3)adb shellを終了

4)sdcardのoutput.capをローカルPCにコピー

5)wiresharkなどのツールでoutput.capを開いて内容を確認

これだけ。

実機の場合は、次の事が必要になります
a)エミュレーターからtcpdumpを取ってくる
b)取ってきたtcpdumpを /system/xbin/にコピーする
c)権限を付与する
> adb shell chmod 6755 /system/xbin/tcpdump

あとは同じ。

2011年6月27日月曜日

FeceDetectorで目の位置を検出する

AndroidのFeceDetectorは便利だけど、万全ではない
なぜならば、顔の傾きが取得できないからだ

取得できるのは、両目の距離、そして両目の中心点の2つだ
この情報から、顔の位置を特定する事はできるが、目の位置を見つけるのは非常に難しい
なぜならば、顔が斜めに傾いている時目の上下位置を判別することができないからだ

では、どうするか
これはもう、自力でやるしかない
私は、次のように処理してみた(もっと簡単な方法があるかもしれないので色々と調べてみてください)

1)FeceDetectorから取得できる情報から、だいたいの目の位置を計算
2)だいたいの目の位置の画像を2値化して、さらにノイズを除去する
3)2直化した中から一番黒の領域が多いと所を瞳として判断する

こんな感じで処理してみた。
精度はなかなか高く、しっかりと目だけを検出できる
ノイズを除去する際に閾値によっては検出率が変わるので、閾値を調整して見ると良いです

2011年6月17日金曜日

FaceDetectorで顔を認識しなくて困った

いまAndroidアプリで顔認識をやっている訳なのですが、微妙な事で顔を認識したり、しなかったりと謎のハマリかたをしてしまいました

顔を認識せずによくあるのが、BitmapをARGB_8888にしてしまっている時
こんな時はRGB_565にすればいい
この情報は色々な所で目にするので、あまり困らないと思います

で、今回困ったのは、レイアウトで、認識させた画像(もしくは、近辺の部品)に対してpaddingを指定した場合に、認識が失敗したり、しなかったり
同じプロプログラムでも、実機では認識するけどエミュレーターでは認識しない
その逆に、実機では認識しないけど、エミュレーターでは認識するなど

で、悩んで色々とGoogle先生に聞いてみたりしたけど解決策が見つからず
そこで、初心に戻りFaceDetectorのAPI Docを見てみました

すると、こう書かれています(FaceDetector)
Creates a FaceDetector, configured with the size of the images to be analysed and the maximum number of faces that can be detected. These parameters cannot be changed once the object is constructed. Note that the width of the image must be even.

前半部分は良いとして、後半の
Note that the width of the image must be even.

をちゃんと読んでいませんでした。。。
ちゃんと「横幅は偶数じゃないとダメですよ」って書いてあります

今回のアプリは、画像を表示サイズにリサイズしていたので、利用環境によって画面サイズ(画像サイズ)が変わってしまい、認識したり、しなかったりした訳ですね
paddingの入れたり、外したりも同様にサイズが変わってしまうからですね

今回の教訓は「ちゃんと公式のドキュメントはみるべし!」ですね 。"ちゃんと"の部分が重要です

2011年6月8日水曜日

スティックスイーツのスペシャル番組

今月の6/15 21:00から「ふ〜みんのSwwweets+」というUstream番組でスティックスイーツのスペシャル番組があります

番組では、スティックスイーツの商品紹介や、裏話とかも聞けるかも?
さらに、プレゼントの話しもあるかも?とか・・・(twitter:@fu_min_FSJからの情報)

これは楽しみですね!

番組は以下のURLから見れるようです
6/15の21:00からパソコンの前でスイーツな時間を過ごしましょう!!
http://augment8.org/fspsss/index.html

2011年6月2日木曜日

クックパッドに行ってきました(開発コンテスト24表彰式)

5/29に東京は白金台にあるクックパッド様にお邪魔してきました
目的は先月行われた「開発コンテスト24」の表彰式のためです

「クックパッドの社内一度みてみたい!」というミーハー心が9割での上京です


入り口からして、なんだかおしゃれですね。

 

開発ルームの横にあるキッチン。お昼ごはんとか作るそうです


ミーティングができるように長い机


そしてなぞの温水器!




お菓子、飲み物も常備。うらやましい


こういう落ち着ける場所が、開発する横にあると嬉しいですね


息抜きのゲーム。これは必要ですよね!仕事として!


お土産にいただきました。

額にはいった賞状。うれしい!

懇親会でご飯。手作りです。
表彰式の間、いい音といい匂いしてました!



こんなおしゃれなオフィス。羨ましい!

enchant.js + Android

5月の広島WEBシステム勉強会でenchant.jsをやってみようという話になりまして、enchant.jsを色々といじってみました

このenchant.jsは簡単なゲームを作るには、とても優れたライブラリです
簡単にキャラクターを配置し、動かす事ができますし、ゲーム用にコントローラーなども提供されています

簡単とはいえ、勉強会の短い時間の中でゲームが作れるかというと、そうでもないのでAndroidやでアプリとして組み込めるか実験をしてみる事にしました

enchant.jsはJavaScriptなので、assetに必要なjsファイルや、htmlを格納し、WebView経由で表示させてみました
結果は、何も問題なし!

では、次にAndroidのセンサーを使って、ゲーム内のキャラクターを動かせるかやってみました
AndroidのWebView とJavaScriptをブリッジして、センサーの情報をJavascriptに渡すだけなので、実験しなくても動作するであろう事は分っていたのですが、試しに作ってみると予想通り動きます

これで、比較的簡単にセンサーを活用したゲームが作れそうです

これを使って「広探ゲーム」の中にミニゲーム的要素をいれるのもありかな?
とか色々と広がりそうです!

※タイトル変更しました。よく考えたらTitanium Mobile使ってなかった。。。

2011年6月1日水曜日

AndroidでOpenCV

※早速、情報が古いようだ・・・

どうやら、環境の構築方法が変わったらしく、Windowsの場合はcygwinを使わなくなったようだ
環境の構築については、以下のサイトを参照してください


 OpenCVWiki Android Trunk



以下の記事は古いので注意が必要!

なかなか旨く行かなかったので、自分用のメモとして書いておく
まず、最初に参照したサイト記事ではOpenCV のmakeが通らなかったが、環境構築ではコチラを参考にしたので、載せておく

androidでOpenCV(環境構築編) – Android

ちなみに、環境はWindows7 64bit。
上記サイトのmakeコマンドを実行して25%のところで



となる。

そこで、この問題を解決する為に調べているとOpenCV 1.1だが簡単に出来そうなサイトが見つかったので、以降はそのサイトを参考とした

OpenCV in Android

  1. Androidの環境が作ってあれば、次のように作業すれば始められる
  2. 新しいプロジェクトを作る
  3. プロジェクトのルートにjniというフォルダを作る
  4. 上記サイトからダウンロードしたandroid-opencvを解凍して、中身をjniフォルダにコピー
  5. cygwinでプロジェクトルートからndk-buildを実行
  6. そうすると、libsフォルダにarmeabi/libopencv.soが作られる

動作確認は、上記サイトにandroid_opencv_exsampleという物があるので、それをダウンロードして動かして見ると良い

以上。