7

के साथ भी अलग-अलग परिणाम देते हैं मैंने रोटेशन वेक्टर और ओरिएंटेशन वेक्टर दोनों के लिए श्रोता लागू किया है, हालांकि मुझे पता है कि यह अवमूल्य है कि मैं दोनों का परीक्षण करना चाहता हूं।TYPE_ROTATION_VECTOR, TYPE_ORIENTATION विचलन

मैं जानता हूँ कि रोटेशन वेक्टर एक संलयन सेंसर & की सिफारिश की है, लेकिन उत्तर (मूल्य [0] getOrientation द्वारा दिया (rotationMatrix, मूल्य) geaving असर 0) नहीं अभिविन्यास सेंसर से उत्तर से मेल खाता है कि यह के अनुसार। मैंने प्लेस्टोर से अलग-अलग ऐप्स से भी लम्बाई की है, ओरिएंटेशन सेंसर मान उनके करीब हैं।

इसके अलावा कई बार मेरी दिगंश मूल्य [0] Rotation_Vector से तो getOrientation बस चढ़ जाता है और 180

पुनश्च "getRotationMatrix -180 के बीच दोलन रखने (फ्लोट [] आर, नाव [] मैं, नाव [ ] गुरुत्वाकर्षण, फ्लोट [] geomagnetic) "रोटेशन वेक्टर के रूप में भी एक ही परिणाम देता है।

public final void onSensorChanged(SensorEvent event) 
{ 
    float rotationMatrix[];  
    switch(event.sensor.getType()) 
    { 
    . 
     . 
     .  
    case Sensor.TYPE_ROTATION_VECTOR: 
     rotationMatrix=new float[16]; 
     mSensorManager.getRotationMatrixFromVector(rotationMatrix,event.values); 
     determineOrientation(rotationMatrix); 
     break; 

    case Sensor.TYPE_ORIENTATION: 
     sensorZValue.setText(""+event.values[0]); //rotation about geographical z axis 
     sensorXValue.setText(""+event.values[1]); //rotation about geographical x axis 
     sensorYValue.setText(""+event.values[2]); //rotation about geographical y axis 

}//switch case ends 
} 


private void determineOrientation(float[] rotationMatrix) 
    { 
    float[] orientationValues = new float[3]; 
    SensorManager.getOrientation(rotationMatrix, orientationValues); 
    double azimuth = Math.toDegrees(orientationValues[0]); 
    double pitch = Math.toDegrees(orientationValues[1]); 
    double roll = Math.toDegrees(orientationValues[2]); 

    sensorZValue.setText(String.valueOf(azimuth)); //rotation about geographical z axis 
    sensorXValue.setText(String.valueOf(pitch)); //rotation about geographical x axis 
    sensorYValue.setText(String.valueOf(roll)); //rotation about geographical y axis 


    } 

मैं करना चाहते हैं फ़ोन के Y अक्ष और वेक्टर ओर इशारा करते हुए उत्तर ताकि मेरा प्रारंभिक क्रियान्वयन था के बीच के कोण का निर्धारण। कृपया सुझाव दें।

+0

एंड्रॉइड दस्तावेज मानों के अनुसार [1] उत्तर को इंगित करता है। तो - उत्तर में पिच पॉइंट, अजीमुथ नहीं :-) –

उत्तर

2

मुझे लगता है कि इस में मदद मिलेगी ...

Android Compass that can Compensate for Tilt and Pitch

यह उत्तर और अधिक विश्वसनीय स्रोतों का उपयोग कर की गणना करता है।

उम्मीद है कि इससे मदद मिलती है।

संबंधित मुद्दे