سؤال

أحتاج إلى بناء بوصلة لتطبيقي.

من قراءة الوثائق ، يبدو أن هناك طريقتان معقولتان للقيام بذلك:

  • Sensor.Type_orientation طريقة: هذه هي الطريقة السهلة للقيام بذلك. المشكلة في هذا هي أنها ليست دقيقة. عندما أقارن قراءتي مع البوصلة الفاسدة ، يكون حوالي 10-15 درجة من الذروة ، وهو أمر غير مقبول لأغراضي.
  • sensor.type_accelerometer ، sensor.type_magnetic_field و getrotationmatrix () بالتزامن مع نظام remapcoordinatesystem () وطريقة getorientation (): يقول الوثائق أن هذا "عادة ما يكون أكثر دقة". المشكلة بغض النظر عن التأخير الذي أسجله مع المستمع ، تصبح البوصلة مجنونة حتى عندما يكون الجهاز ثابتًا على سطح مسطح.

أي اقتراحات لحل هذه المشكلة ستكون موضع تقدير كبير.

هل كانت مفيدة؟

المحلول

يبدو أن mob1lejunkie قد اكتشف هذا بالفعل ، ولكن فقط للرجوع إليه في المستقبل ، اسمحوا لي أن أذكر أن القضية هنا الانحراف المغناطيسي (الفرق بين الشمال المغناطيسي والشمال الحقيقي). يمكنك تجربة نموذج عبر الإنترنت من NOAA للحصول على شعور بما هو الفرق في الجزء الخاص بك من العالم.

يتضمن Android نموذجًا يسمى حقل مغنطيسي يمكن استخدامها لحساب الانحراف التقريبي بالنظر إلى خط العرض ، وخط الطول ، والارتفاع. لذا ، ما أعتقد أنك بحاجة إلى القيام به لحساب الشمال الحقيقي هو قراءة قيمة السمت من sensor.type_orientation ثم أضف إلى ذلك geomagneticfield.getDeclination ().

نصائح أخرى

إنه الجانب السلبي للأجزاء المدمجة المصنوعة للهواتف. إن وحدة IMU بقيمة 5000 دولار نستخدمها الآن لديها خطأ +/- 2 درجات ويبدو أن هذا النطاق مجنون أيضًا.

حاول الابتعاد عن التداخل ، والأسطح المعدنية ، ومعرفة ما إذا كان يتحسن. إذا لم يكن الأمر كذلك ، فأنا أكره كسر الأخبار السيئة ، لكن هذه هي الأجهزة.

هل رأيت هذه؟

http://developer.android.com/reference/android/hardware/sensormanager.html

http://groups.google.com/group/android-developers/browse_thread/thread/bbb0e8b97c673cf9/5c16bc2e49f6e972؟lnk=raot

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top