android एंड्रॉइड 5 रोटेशन वेक्टर सेंसर सटीक नहीं है



rotation android-sensors (0)

मुझे रोटेशन सेंसर के साथ एक समस्या का सामना करना पड़ा है, TYPE_ROTATION_VECTOR एक TYPE_ROTATION_VECTOR प्रकार है। सेंसर से पढ़ना सही नहीं लगता है, या यह किसी चीज़ से परेशान है, मुझे कहना मुश्किल है यह वह कोड है जिसका उपयोग मैं डिवाइस के वास्तविक रोटेशन को प्राप्त करने के लिए कर रहा हूं:

public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
        if (prevRotMatrix == null) {
            prevRotMatrix = new float[16];
            SensorManager.getRotationMatrixFromVector(prevRotMatrix, event.values);
        } else {
            float[] deltas = new float[3];
            SensorManager.getRotationMatrixFromVector(rotMatrix, event.values);
            SensorManager.getAngleChange(deltas, rotMatrix, prevRotMatrix);

            rotXVal += (float) Math.toDegrees(deltas[1]);
            rotYVal += (float) Math.toDegrees(deltas[2]);
            rotZVal += (float) Math.toDegrees(deltas[0]);

            client.rotX(rotXVal);
            client.rotY(rotYVal);
            client.rotZ(rotZVal);

            System.arraycopy(rotMatrix, 0, prevRotMatrix, 0, rotMatrix.length);
        }
    }
}

rotXVal , rotYVal और rotZVal सभी शुरुआत में शून्य हैं।
समस्या यह है कि जिन मूल्यों का मैं मिल रहा हूं, वे किसी तरह परेशान होते हैं। उपकरण आंदोलन आम तौर पर उनके द्वारा छिपे हुए हैं, लेकिन अक्सर कुछ अमान्य मान दिखाए जाते हैं। अक्सर जब मैं डिवाइस को एक दिशा में घुमाएगा, तो पढ़ना एक वैध रोटेशन दिखाता है, लेकिन इसके बाद विपरीत दिशा में एक 'अमान्य' प्रतिक्रिया होती है, आमतौर पर छोटे तब उचित आंदोलन।
महत्वपूर्ण बात यह है कि एंड्रॉइड लॉलीपॉप डिवाइस (सैमसंग गैलेक्सी एस 6) पर स्थिति मेरे लिए ही होती है मैं इसे भी किटकैट पर परीक्षण कर रहा था (सैमसंग गैलेक्सी नोट 4) और उसी कोड ने सिर्फ ठीक काम किया।
इस रोटेशनविटकॉरडमो को चलाने के दौरान मैंने उसी व्यवहार को देखा लॉलीपॉप पर समान विरूपण प्रकार, लेकिन किटकैट पर ठीक काम करता है

मुझे आश्चर्य है कि अगर कोई मुझे यह समझाने में मदद कर सकता है कि कैसे इस समस्या को हल या हल करने के लिए। या शायद मुझे इसे छोड़ देना चाहिए और कुछ अन्य संवेदक का उपयोग करना चाहिए?





android-5.1.1-lollipop