2012-02-15 18 views
7

मैं एक गतिविधि है, जो अपने उन्मुखीकरण जरूरतका पता लगा रहा फोन उन्मुखीकरण

setRequestedOrientation(screenOrientation); 

से लॉक कर दिया करने के लिए है लेकिन मैं (HTC कैमरा कल्पना उन्मुखीकरण अपडेट प्राप्त करने के लिए, ताकि मैं यूआई के लिए समायोजन कर सकते हैं चाहता हूँ ऐप, जब केवल बटन के आइकन अभिविन्यास बदलते हैं)। तो मुझे this class मिला। यह 0 और 360 के बीच अभिविन्यास मूल्य प्रदान करता है। हो क्या मैं इस मान को फ़िल्टर करता हूं, यानी सही अंतराल [a, b], और a<x<b तो अभिविन्यास परिदृश्य या चित्र है? गणना मतलब है? कोई संकेत?

उत्तर

7

ऐसा लगता है कि आपको केवल उस प्रतिक्रिया के लिए कोड की आवश्यकता है जब डिवाइस का अभिविन्यास प्रत्येक कोण के बजाय 4 सामान्य उन्मुखताओं में से एक में बदल गया हो। यह 0, 90, 180 और 270 डिग्री का केवल मूल्यों के प्रति उन्मुखीकरण फिल्टर करेगा:

OrientationEventListener myOrientationEventListener; 
    int iOrientation; 

    myOrientationEventListener = new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL) 
    { 

     @Override 
     public void onOrientationChanged(int iAngle) 
     {       // 0 15 30 45 60 75, 90 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300, 315, 330, 345 
      final int iLookup[] = {0, 0, 0,90,90, 90,90, 90, 90, 180, 180, 180, 180, 180, 180, 270, 270, 270, 270, 270, 270, 0, 0, 0}; // 15-degree increments 
      if (iAngle != ORIENTATION_UNKNOWN) 
      { 
       int iNewOrientation = iLookup[iAngle/15]; 
       if (iOrientation != iNewOrientation) 
       { 
        iOrientation = iNewOrientation; 
        // take action on new orientation here 
       } 
      } 
     } 
    }; 

    // To display if orientation detection will work and enable it 
    if (myOrientationEventListener.canDetectOrientation()) 
    { 
    Toast.makeText(this, "Can DetectOrientation", Toast.LENGTH_LONG).show(); 
     myOrientationEventListener.enable(); 
    } 
    else 
    { 
    Toast.makeText(this, "Can't DetectOrientation", Toast.LENGTH_LONG).show(); 
    } 
+0

मैं इसे अपने हार्डवेयर के साथ काम करने के लिए देखने के लिए थोड़ा महत्व देता बदलना पड़ा, लेकिन यह अच्छी तरह से काम करता है। मेरी इच्छा है कि ऐसा करने का एक बेहतर तरीका था, लेकिन तब तक यह अपना काम कर रहा है। धन्यवाद! – nrflaw

+1

जिन्होंने इसे कभी भी पोस्ट किया है वह एक जी है! मैं थोड़ी देर के लिए इस समस्या पर फंस गया हूं बिना किसी मदद के स्रोत()। GetConfiguration() अभिविन्यास – Matt

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