どのセンサーを使用して、デバイスが絶対座標の方向に移動するかを検出できます (たとえば、+x または -x に移動する)。
正確なデータが必要なので使えませんGPS
。
完全なタスクは、Androidデバイスセンサーを使用して(コンピューターで)ペイントでプロットすることであり、タスクのこの部分は私には不明です。
どのセンサーを使用して、デバイスが絶対座標の方向に移動するかを検出できます (たとえば、+x または -x に移動する)。
正確なデータが必要なので使えませんGPS
。
完全なタスクは、Androidデバイスセンサーを使用して(コンピューターで)ペイントでプロットすることであり、タスクのこの部分は私には不明です。
私はあなたが何を求めているのか少し混乱しています。デバイスをポケットに入れて歩き回り、歩いた場所のプロットを作成しますか? それとも、3D マウスのように手の中でデバイスを振り回してペイントしたいですか?
後者については、上記の Ali の提案を参照してください。モーション トラッキングを行いたい場合は、次のことをお伝えします。
加速度計 (または利用可能な場合は重力) と磁力計を組み合わせてSensorManager.getRotationMatrix()
、デバイスがどの方向を向いているかを簡単に知ることができます。
実際、ROTATION センサーがこれらすべてを行います。クォータニオンを変換行列に変換するのに十分な数学が必要です。とても簡単です。
(ジャイロ マウスを実装しようとしている場合は、ここで読むのをやめてください。)
次に、線形加速度センサーを使用して、デバイスが動いている方向を判断できます。これは貧乏人の慣性航法システムのようなものです。ただし、これは、アプリを起動したときにデバイスが静止していること、およびセンサーが必要なことを行うのに十分な精度を備えていることを前提としています.
加速度は、デバイス座標のベクトルを提供します。そのベクトルに、ROTATION センサーまたは SensorManager.getRotationMatrix() から取得した行列を掛けて、ワールド座標の加速度ベクトルを取得します。次に、そのベクトルを経時的に積分して速度ベクトルを取得し、そのベクトルを経時的に積分して、アプリを開始してから移動した距離と方向を取得します。
エラーは急速に蓄積されます。このアルゴリズムは、完全に無意味な結果を返し始める前に、せいぜい数分間しか有効ではありません。デバイスが動かなくなったことを検出するようにアプリケーションを調整し、その機会を利用して速度ベクトルをゼロにリセットすることができます。
率直に言って、これは解決するのが非常に難しい問題です。あなたがそれを解決すれば、おそらく博士号または少なくともいくつかの論文がそこにあるでしょう。その他の参照については、「屋内ナビゲーション」という用語を検索してください。
ただし、何らかの位置情報サービス (ネットワークまたは GPS) がなければ、デバイスがどちらの方向に移動しているか、またはデバイスがどこにあるかを確認する方法がないことに注意してください。
私の理解では、既存のすべての屋内ナビゲーション アルゴリズムは、時折 GPS を修正するか、ナビゲートされている屋内空間のレイアウトを把握して手がかりとして使用するか、または近くの WiFi 送信機の位置を把握し、それらの信号強度を使用して生成することに依存しています。修正します。
真剣に、ここで非常に短い距離を話しているのでない限り、GPS が最善の策です。