2012-02-12 18 views
7

できるだけ多くのセンサの脈拍を(GPS、Acc、Gyro、Compass)からできるだけ多く読み取るアプリケーションを作成したいと思います。 NDKを使用する利点があるかどうかを調査する必要があります。Android:NDKとポーリングを使用してセンサのサンプリングレートを改善する

ここに私の質問は以下のとおりです。

a)は、センサからセンサ値を読み込む際のボトルネックは何ですか?それはsenosr自体かJavaか? NDKを使用して料金を引き上げることはできますか? (私はGPSについてはボトルネックはセンサーそのものだと思うが、ジャイロセンサーはかなり速いと言っている) this threadが見つかり、ボトルネックがセンサーであるようだ。誰かがこれを確認できますか?

b)EventListenerを使用する代わりにポーリングしてレートを上げますか?センサー値をすばやく読み取るにはどうすればよいですか?

c)アプリケーションの消費電力にNDKを使用していますか?私はこれについて何も見つかりませんでした。

d)Androidが新機能です。通常のJavaではなくNDKを使用する方がはるかに多いですか? このようにsample-codeによると、イベントキューを使用してセンサとやりとりするのは簡単ですが、コードをコンパイルしてアプリケーションから使用するのはどれくらいの余裕がありますか?

ありがとうございます。

答えて

0

センサーリスナーを登録するときは、SensorManager.SENSOR_DELAY_FASTESTregisterListener()に渡す必要があります。

詳細はhttp://developer.android.com/reference/android/hardware/SensorManager.htmlを参照してください。

+0

お返事ありがとうございますが、それは私が求めていたものではありません。問題は、Java(SDK)の代わりにC++(NDK)を使用する利点があるかどうかです。 – steckl

+0

私たちはJNIを使​​用してJavaからGセンサーデータをネイティブに渡しましたが、問題は見つかりませんでした。 –

+0

あなたの方法から何か恩恵を受けていますか?なぜNDKのSensor-Interfaceを直接使用しないのですか? 私の場合は、センサデータを使って計算をしていないので、あなたの方法には利点はありません。単にサーバに転送するだけです。 – steckl

0

経験から、私は、少なくともあなたの質問の最初に答えることができます。

A)ベースのJavaを使用すると、複数のセンサを処理するための十分な速さ。私のアプリケーションの1つでは、SENSOR_DELAY_FASTESTを使ってAccelerometer、Gyroscope、Magnetometer、Game Rotation Vector、Uncalibrated Magnetometerを一度に読み込みました。

これに加えて、データのフィルタリングと格納のほか、回転を追跡するための四元数演算もありました。生データ(これも.txtファイルに保存したもの)を見ると、欠落しているデータや遅延はありませんでした(タイムスタンプの平均の差は計算なしの単一のセンサーを実行した場合と同じです)。

私の場合、センサはできるだけ早く動作していて、Javaは正常に動作していました。

...あなたがしようとして価値があるかもしれませんNDKを使用して、計算の非常に大きな金額をやっている場合は、言っ

関連する問題