雑記帳 2009年06月
FC2ブログ

2009'06.29 (Mon)

[Android]センサーまわりを調べてみた

MacbookにWindows7 RCを入れようとしたら
キー入力効かずに先に進みませんよ。とほほ。。。


Androidでセンサーまわりを調べてみた。主にJNIのあたり。

関係するファイルは以下のとおり

/frameworks/base/core/java/android/hardware/Sensor*.java
/frameworks/base/core/jni/android_hardware_SensorManager.cpp
/hardware/libhardware/hardware.c

流れとしてはこんな感じ。
SensorManagerのコンストラクタでsensor_module_init()が呼ばれる。
こいつはandroid_hardware_SensorManager.cppの中に実装されている。
この中でセンサーモジュールのShared Libraryを呼び出して登録をする。
実際に呼び出す処理はhardware.cのhw_get_module()で実行される。
ロードに失敗するとセンサーは使えない。そしてデフォルトのファイル名は決まっているみたい。
(sensorの場合、sensors.default.soという名前)
setpropで設定すれば変えられるみたいだけどまだ調べきれていない。。。

モジュールのロードが終わったら、どのセンサーが使えるかを登録する。
sensors_module_get_next_sensor()で情報を取得し、登録。

登録が終わったらセンサー監視スレッドを立ち上げる。

監視スレッドはまずsensors_data_init()を実行する。
その後、sensors_data_open()を実行し、ポートを初期化。
初期化したらsensors_data_poll()でデータを取得する。
ここで呼ばれているのはすべてandroid_hardware_SensorManager.cppで定義されている。

じゃ、この関数たちはどこに実態があるのか、というと関数ポインタでロードしたShared Libraryの
中で定義される関数にジャンプする。

実際に参考になるのは
/development/emulator/sensors/sensors_qemu.c
が参考になる。これをセンサーに合わせて修正すればFrameworkまでデータを上げることが
出きるはず。

なのだが。。。




なぜか自分の環境ではデータをポインタに代入しようとするとなぜか落ちる。
スタック足りてないのか??むむむ。。。謎だ。。。


ちなみにセンサーモジュールに関しては
 ・直接デバイスをアクセスする
 ・センサー監視デーモンを作ってそっちと通信
の2種類の実装方法が考えられる。どっちがいいのかな??



テーマ : コンピュータ関連 - ジャンル : コンピュータ

22:42  |  Android  |  TB(0)  |  CM(1)  |  EDIT  |  ↑Top

2009'06.27 (Sat)

[Android]x86ビルドの方法 最新版

会社の人にブログが見つかったらしい。
変な事は書かないように気をつけないと。。。

さて、最近あっちゃこっちゃでx86でのビルド方法を聞かれるので最新版をまとめてみた。
http://park5.wakwak.com/~kobayuta/cgi-bin/wiki.cgi?page=Android

よければ参考にしてくださいな。
10:27  |  未分類  |  TB(0)  |  CM(3)  |  EDIT  |  ↑Top

2009'06.25 (Thu)

[Android]小ネタ SurfaceFilingerの確保メモリサイズを増やす

小ネタ。

ブラウザとかでアドレスを入力するなど、バックグラウンドが暗くなる処理などを行うとたまにメモリ不足で落ちる場合がある。
その場合、
frameworks/base/libs/surfacefilinger/SurfaceFilinger.cpp
の367行目くらいにヒープの最大サイズを指定しているのでそいつを増やせばよい。

これでがらっと安定したように見える。見た目は。。。
23:12  |  Android  |  TB(0)  |  CM(0)  |  EDIT  |  ↑Top

2009'06.25 (Thu)

きらいなもの

嫌いなもの

・製品仕様を決めないで作ろうとする奴。

・アジャイルを勘違いしてる奴。

・言い出しっぺのくせに途中で人に無茶ぶりする奴。


あー、きっとデスマーチになるんだろうな。。。



関わった製品で本気にボツれ!って思ったのは初めてだ。。。





技術的には面白いんだけどねぇ。。。
21:52  |  日記  |  TB(0)  |  CM(0)  |  EDIT  |  ↑Top

2009'06.21 (Sun)

[Android]独自のセンサーを使えるようにしてみるテスト

ALSAもよく分からなくなってきたので今度はセンサーに手をつけてみた。

センサーモジュールを作る場合

 /hardware/moddules/

以下に置けばいいらしいのだけどなぜかビルドしてくれない。
そーいえば、overlay.cppもビルドされてないよなー、むむむ。

ってことで
development/emulator/sensors以下のものを改造してやってみる。
そのままだと、sensors.default.soと言う名前で作らないとSensorService起動時に
ライブラリを呼んでくれないので、Android.mkを手直し。

取り合えず下回りまではデータを取得することができた。


って、色々やってたらSystemServerが動かなくなってしまった。。。

さてまたデバッグ。。。orz...

テーマ : コンピュータ関連 - ジャンル : コンピュータ

09:53  |  Android  |  TB(0)  |  CM(0)  |  EDIT  |  ↑Top

2009'06.20 (Sat)

[Android]ALSAを使う方法

趣味がついに仕事になってしまいましたとさ。とほほ。。。


さて、voldがよく分からない状態になってしまったので気分転換にx86でALSAを
使えるようにするための方法を調べてみた。

MLではBoardConfig.mkに以下の設定を追加することで使えるようになると情報あり。

HAVE_HTC_AUDIO_DRIVER := false
BOARD_USES_GENERIC_AUDIO := false
BOARD_USES_ALSA_AUDIO := true
BUILD_WITH_ALSA_UTILS := true

これでALSAを使えるようになるらしい。

ってことで確認中。

早くTypePで音を出してみたい。。。


後やりたいことは
 ・秋月のTDS01Vを使えるようにしてみたい
 ・BTを使ってみたい(TypePのBTはドライバがないみたい。使えるドングル探さないと・・・)
 ・SD/MSのマウント(何かもうすぐでできそうなんだけどなぁ。。。スタックが壊れているっぽいしなぁ。。。)

追記
./repo/local_manifest.xmlに以下を追加しないとソース落としてこれないので注意

<project name="platform/external/alsa-lib" path="external/alsa-lib"/>
<project name="platform/external/alsa-utils" path="external/alsa-utils"/>

さらに追記
気がついたら詳細な解説が。あわわ。。。
http://code.google.com/p/patch-hosting-for-android-x86-support/wiki/ALSA

だめだ、追っかけられてない。。。orz...

テーマ : ソフトウェア - ジャンル : コンピュータ

07:27  |  Android  |  TB(0)  |  CM(0)  |  EDIT  |  ↑Top
 | HOME |