باستخدام مقياس التسارع Android دون أن يكون الجهاز مسطحًا

StackOverflow https://stackoverflow.com/questions/4251491

سؤال

لقد كنت ألعب مع مقياس تسارع Android المتأخر باستخدام Android SDK و Adobe Air for Android SDK على Motorola Droid. ما لاحظته هو أن مقياس التسارع يعمل بشكل جيد ، لكنني كنت أتساءل عما إذا كان من الممكن التعويض بطريقة ما حتى لا أضطر إلى استخدام الجهاز في وضع أفقي. بمعنى آخر ، أريد استخدام مقياس التسارع للتحكم في شاشة العرض المرئية الخاصة بي ، لكن تهيئته (أو تعديله بطريقة أو بأخرى) حتى لا أضطر إلى الاحتفاظ به بشكل مثالي (ليس الكثير من المرح الاضطرار إلى الاعتماد على الهاتف).

هل يعرف أي شخص كيف يمكنني حمل الجهاز بشكل مريح في يدي ، على سبيل المثال ، 45 درجة ، وما زلت أستخدم مقياس التسارع لتوفير قراءات للأمام/للخلف؟ هل هذا ممكن؟ أي أمثلة على هذا متاح؟

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

المحلول

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

نصائح أخرى

لقد كتبت طلبًا منذ فترة طويلة منذ فترة طويلة يتناول الدورات النسبية. لقد نسيت ما فعله الرمز ، ولكن من ما يمكنني رؤيته ، يبدو الأمر -

1) أحصل على مصفوفة الدوران الأولي باستخدام - sensormanager.getRotationMatrix (R ، I ، Gravity.clone () ، geomagnetic.clone ()) ؛ (الجاذبية والغنطيسية الجيومومغناطيسية هي الصعود المعني والمصفوفات المغنطيسية الجيومانية. لا تستخدم الاستنساخ ولكن يجب أن يكون هناك سبب ما.) 2) الآن في أي مرحلة ، احصل مصفوفة واسمها "inialInverse". 4) اضرب R مع inialInverse (أو العكس الجولة ، سيكون عليك معرفة ذلك). 5) احصل على اتجاهك النهائي باستخدام sensormanager.getorientation (دلتا ، قيم)

أنا آسف ولكني نسيت تمامًا ما يفعله الرمز أعلاه. أعتقد أنني أتذكر قراءة الكلمات التي تتحول فيها Euler إلى مكان ما عندما كتبت هذا التطبيق ، لذلك هذا ما قد يفعله. لسوء الحظ ، لا يمكنني إعطائك الرمز الكامل لأنني ربما سأصدر هذا التطبيق في السوق. ومع ذلك ، إذا كنت بحاجة إلى مزيد من المعلومات ، فيرجى إخبارنا - سأبحث في الكود وأعود إليك.

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

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