5

慣性データをスマートフォンに記録してさらに処理する Android アプリを開発しています。Android デバイスが異なれば、慣性センサーを Android に接続するファームウェアに応じて動作も異なりますが、これは明らかです。自分で答えられないことの 1 つは、アプリが記録しているときにセンサー サンプルの数が大幅に異なることを moto g 第 2 世代だけが示したのはなぜですか?

たとえば、数秒の録音で次のように表示されます。

  • ジャイロの最大 6000 サンプル

  • acc の ~5200 サンプル

  • 磁力計のサンプルは約 2000 個

同様に、記録しているアクティビティが常にすべてのセンサーに影響を与えると仮定すると、 onSensorChange 関数が均等に呼び出されることが期待されます。これは、私が試した他のすべてのスマートフォン(5つまたは6つの異なるスマートフォン)で発生します。

onSensorChange がそれを記録するために、マグネトーが他のセンサーほど頻繁に値を変更しないように見えるのはなぜですか?

明らかな答えはファームウェアによるものですが、私が見ている影響を軽減する方法はありますか?

ありがとう!

4

1 に答える 1

2

この質問は本当に古いですが、コミュニティのために答えようと思いました:

スマートフォンのセンサー処理に特化したスタートアップでアプリ開発者として働いています。いくつかの第 2 世代の Moto G がありますが、1 つのセンサーと複数のセンサーの両方で均一なサンプリング レートを提供するという非常に悪い仕事をしていることがわかりました。

問題を軽減するために、加速度計からサンプルを取得するたびに、サンプルの行全体を最新のデータで一度に書き込みます。最後の加速度センサーのサンプル以降、他のセンサーに新しいサンプルが入っていない場合、同じ値が 2 回出力されます。

すなわち)

Accel (3-axis) | Gyro (3-axis)
0,0,0|0,0,0
<new accelerometer sample>
1,1,1|0,0,0
<5 gyro samples and 1 accelerometer>
2,2,2|5,5,5
...

とにかく、これが誰かに役立つことを願っています!

TLDR; 第 2 世代 Moto G のサンプリング レートは、1 つのセンサーと複数のセンサーの両方で一貫していません。

于 2015-08-06T23:29:00.087 に答える