سؤال

حصلت على نوع من القضية الغريبة مع رغبتي في HTC.

أقوم حاليًا باختبار بعض الأشياء OpenGL باستخدام مقياس التسارع وأجهزة الاستشعار المغناطيسية الجيومومغناطيسية.

يبدو أن الاثنين يعودون في بعض الأحيان (قليلة) نفس القيم بالضبط.

حصلت على هذا على onSensorChanged ()

    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        gravity = event.values;
    } 
    if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
        geomagnetic = event.values;
    }

وأنا لا أعرف لماذا ولكن عندما أقوم بفصل USB (إلى الكمبيوتر) ، أصبح الأمر أسوأ ، (أستخدم قيم هذه القيم لتدوير كاميرا حول كائن مثل خريطة السماء ، وعندما أقوم بفصل ، يبدو أن القيم صحيحة حولها 1 مرة واحدة لكل 2 ثانية ~).

وأحيانًا (مع توصيل USB وينظر إلى logcat) ، فإنه يعمل بشكل جيد ولا يحصل أبدًا على نفس القيم من المستشعرين.

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

أتساءل عما إذا لم أحصل على قيم بسرعة كبيرة ، ولكن حتى إذا قمت بتحديد Sensor_delay_ui في المستمع ، فهي نفس القصة.

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

المحلول

تنهد أنا ....

الجاذبية = الحدث. القيم ؛ أشر إليه. حلقة بسيطة مثل:

for (int i=0 ; i<3 ; i++) {
            gravity[i] = event.values[i];
}

ولا بأس (لماذا وجدت دائمًا الحلول بعد أن أسأل في مكان ما ...)

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