2016-08-10 23 views
0

私は自分のアプリにコンパスを実装しようとしましたが、このコードを例として使用しました:http://www.techrepublic.com/article/pro-tip-create-your-own-magnetic-compass-using-androids-internal-sensors/。しかし、私はGoogle Maps APIや他のAPIからの電話のオリエンテーションを既存のものにする方法があるかどうかも疑問に思っていましたか?私はGoogleを検索しましたが、何も見つかりませんでした。ありがとうございました。Google Maps APIから電話の向きを取得するにはどうすればよいですか?

答えて

0

簡単な向きの確認(縦向きと横向き)は十分ではありません。画面の回転を「自然な」方向から確認し、それに応じて方位計算を調整する必要があります。

((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation() 

を参照してください:あなたの質問からDisplay.getRotation()

0

、それはあなたには、いくつかの並べ替えのコンパスビューを実装しようとしている場合、完全に明確ではなかった、または単に電話での向きに関する一般的なデータを取得します。

Android docsによれば、磁気値を決定するために使用できる値はTYPE_MAGNETIC_FIELDです。そのページを下にスクロールすると、推奨されていないTYPE_ORIENTATIONも含めて、向きに役立つ他の変数が表示されます。オリエンテーションを処理するための新しい方法が

float[] getOrientation (float[] R, 
       float[] values) 

されていて、上記のそれを見つけることができませんでした場合には、磁場のために使用する機能が

GeomagneticField (float gdLatitudeDeg, 
       float gdLongitudeDeg, 
       float altitudeMeters, 
       long timeMillis) 

され、ドキュメントがhere見つけることができます。超精度で有用な総デッド・レコニングとオリエンテーション・データが必要な場合は、quaternionsのウサギの穴を降りなければならないことがあります。あなたがその道を行くならば、私はUnity Game Engineからのドキュメントを推薦します。彼らは必ず四捨五入しなくてもクォータニオンの結果と意味を説明することができます。

+0

携帯電話の向きに関するデータが必要です。私はすでに磁場センサーを実装していますが、まだフィルタを実装していないので、高精度でコンパスを実装するために必要なすべてのものがパッケージ化されたAPIがあるかどうかは疑問でした。 – leonz

+1

私の知っているAPIはありません。あなたのためのユースケースが世話をします。ユーザーがデバイスの向きをどのように変更するかにかかわらず見出しを維持したい場合は、返答に記載されているように、特に回転を確認して計算を自分で適用する必要があります。 –

関連する問題