2012-09-28 18 views
6

मेरे एंड्रॉइड ऐप में मेरे पास पैनोरमा छवि है और मैं इस छवि को TYPE_ORIENTATION सेंसर का उपयोग करके फ़ोन गति के अनुसार घूर्णन कर रहा हूं, यह परिदृश्य और पोट्रेट दोनों के लिए ठीक काम कर रहा है। रोटेशन तर्क के लिए कोड यहाँ है।एंड्रॉइड में ओरिएंटेशन के ऊपर उल्टा कैसे पता लगाएं?

@Override 
public void onSensorChanged(SensorEvent event) { 
    switch (event.sensor.getType()) { 
    case Sensor.TYPE_ORIENTATION: 

    float[] insideval = getValPoints(); 
    event.values[1]=(float) (event.values[1]*2.8); 
    event.values[2]=(float) (event.values[2]*2.8); 
    setValPoints(event.values.clone()); 
     if (insideval != null) { 
      float check= insideval[0] - event.values[0];    
      if (-1<=check && check <=1) { 
       //Animation stoped  
       this.stopAnimation(); 
      }else{ 
       if (getdefaltDeviceOrientation() == ORENTATION_LANDSCAPE) { 
        // Natural Orientation is landscape 
         if (getcurrentDeviceOrientation() == 1) { 
         //ORIENTATION_PORTRAIT 
         startPoint = CGPoint.CGPointMake(insideval[2], insideval[1]); 
           if (insideval[0] < event.values[0]) { 
            endPoint = CGPoint.CGPointMake(insideval[2]+ event.values[2], insideval[1]); 
           } else if (insideval[0] > event.values[0]) { 
            endPoint = CGPoint.CGPointMake(insideval[2]- event.values[2], insideval[1]); 
           } 
          } else if (getcurrentDeviceOrientation() == 2) { 
           //Log.i(TAG, "ORIENTATION_LANDSCAPE"); 
           startPoint = CGPoint.CGPointMake(insideval[1], insideval[2]); 
           if (insideval[0] < event.values[0]) { 
            endPoint = CGPoint.CGPointMake(insideval[1]- event.values[1], insideval[2]); 
           } else if (insideval[0] > event.values[0]) { 
            endPoint = CGPoint.CGPointMake(insideval[1]+event.values[1] ,insideval[2]);      
           } 
          } 
         } else if (getdefaltDeviceOrientation() == ORENTATION_PROTRAIT) { 
          // Natural Orientation is portrait 

          if (getcurrentDeviceOrientation() == 1) { 
           //Log.i(TAG, "ORIENTATION_PORTRAIT"); 
           startPoint = CGPoint.CGPointMake(insideval[1], insideval[2]); 
           if (insideval[0] < event.values[0]) { 
            endPoint = CGPoint.CGPointMake(insideval[1]+ event.values[1], insideval[2]); 
           } else if (insideval[0] > event.values[0]) { 
            endPoint = CGPoint.CGPointMake(insideval[1]- event.values[1], insideval[2]); 
           } 
          } else if (getcurrentDeviceOrientation() == 2) { 
           //Log.i(TAG, "ORIENTATION_LANDSCAPE"); 
           startPoint = CGPoint.CGPointMake(insideval[2], insideval[1]); 
           if (insideval[0] < event.values[0]) { 
            endPoint = CGPoint.CGPointMake(insideval[2]- event.values[2], insideval[1]); 
           } else if (insideval[0] > event.values[0]) { 
            endPoint = CGPoint.CGPointMake(insideval[2]+event.values[2],insideval[1]); 
           } 
          } 
         } 
         this.drawView(); 
        } 
       } 

       break; 
} 
} 

तो मेरी समस्या यदि डिवाइस का अभिविन्यास उल्टा छवि में परिवर्तन गलत दिशा (बिल्कुल विपरीत दिशा) के लिए बारी बारी से होगा। मैं इस समस्या को कैसे ठीक कर सकता हूं और वास्तव में तब होता है जब डिवाइस अभिविन्यास उल्टा हो जाता है?
धन्यवाद।

उत्तर

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

  • कोई संबंधित समस्या नहीं^_^