2014年3月29日土曜日

Android NDK でSTLを使用する

Android NDKで cpp のコードを使用する際、そのままだと <string>などが使用できない。
STLを使用できるよう、設定を変更する。

行うことは簡単で、jniディレクトリにApplication.xmlを作成したら、以下の行を追加する。

APP_STL         := stlport_static

以上でOK。

2014年3月27日木曜日

物体認識エンジン完成!

数千分類可能な画像物体認識エンジンが完成した!
アルゴリズムから初めて1年以上…。

(目標となるエンジンがあって、それには分類数が全然及ばないけど)、
スマホからサーバに問い合わせるタイプで、LTEなら 2 秒くらいで返事がくる。
ちなみに物体認識のみの時間は 1 秒未満です。
要件とチューニングによっては 200 ミリ秒くらいに出来ます。

誰か使ってくれないかな。サーバ管理費だけで使用可能です。

数十万分類以上必要な場合は、それ相応のエンジンが必要だと思うので紹介できますが、
数百から数千くらいの分類で必要十分な場合は、是非テスト使用してくれる方を募集します。

ご連絡はこちら。
Twitter:masahiro
@masazdream


次は、Android上で検索まで動作するものをつくって、目標は Android Wear だな。

2014年3月25日火曜日

Android.mk を 書こう

端末上の画像処理とか数学計算とかAndroid Wearとかやりたい。
Androidアプリケーションはmakeするのにmkファイルを書く。

NDKはデフォルトで /jni/Android.mk を探しにいくようだ。どうりで設定ファイルらしき
ものが無かった。

jni 配下の別の場所にAndroid.mlを作成した場合は、以下の用に設定して、サブディレクトリ
を検索させる。

include $(call all-subdir-makefiles)

1つのAndroid.mkファイルに複数のモジュールを登録可能だし、
複数のAndroid.mlを使用することも可能。

ヘッダーリストや生成されたファイルの依存関係については、Android.mkに
記述しない。これは、NDKがアップデートされても、Android.mkはそのままで
良いというメリットにつながる。

以下、Native Support を Androidプロジェクトに設定すると、以下の用なmkファイルが
作成される。

  • LOCAL_PATH := $(call my-dir) ← Android.mkは必ずこの宣言からはじまる。my-dirはNDKコードで定義されたマクロであり、カレントディレクトリを示す。
  • include $(CLEAR_VARS) ← 必須項目。CLEAR_VARS は NDKシステムにより提供される変数である、特別なGNU Makefileを指している。LOCAL_PATHを除いたいくつかのLOCAL_~変数をクリアする。1つのGNU Makeによりパースされ、全変数はglobalとして扱われる。
  • LOCAL_MODULE    := IRClientAndroid ← 必須。一意のモジュール名。ホワイトスペースは使えない。libXXX.soのXXXに入る名前を決定する部分である。
  • LOCAL_SRC_FILES := IRClientAndroid.cpp ← モジュールに含めるC++ソースリストの定義。ヘッダファイルやインクルードファイルは含めないこと。
  • include $(BUILD_SHARED_LIBRARY) ← 動的共有ライブラリを作成する場合に指定。
Eclipseでやる場合、パスの設定がいろいろ必要なようだ。
次はそれについて。



2014年3月18日火曜日

virtualbox guest additionについて

OSのバージョンが新しくて、guest addition が古い時にエラーが起こることがある。

ちなみに、私は以下のエラーが起きた。

Building the OpenGL support module [失敗]

つまり、guset addtion の インストールが、新しいOSを考慮していないってこと。

一番良いのは、VirtualBoxと共にバージョンを上げること。

ちなみに、OpenGLがだめでも、一応startxすればGUIは起動する。

VirtualBoxのダウンロードサイトがSunのころと変わっているのでメモ

以下がVirtualBoxのダウンロードサイト。

http://download.virtualbox.org/virtualbox/

Sunのサイトはまだあるけど更新が止まってた。

CentOSのトラブルメモ

GUIのパッケージに不具合や依存関係が解決できないことがあった場合、GUI起動できなくなる。

まずは、singleユーザモードでログインする。

※参考
http://www.obenri.com/_operation/singleuser.html

起動時に e を入力そ、kernelの選択画面が出てきたら、末尾に sinble と追加して再起動。


次に、cuiモードに変更

 /etc/inittab を編集して、起動モードを 3 に変更して再起動。


これで、CUIモードで起動できます。

2014年3月16日日曜日