title: How to detect Upside down Orientation in android?
body: <p>In my android app i have panorama image and i am rotating this image according to phones motion using TYPE_ORIENTATION sensor it is working fine for both landscape and potrait. Here is the code for rotation logic.</p>
  
  <pre><code>@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&lt;=check &amp;&amp; check &lt;=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] &lt; event.values[0]) {
                                      endPoint = CGPoint.CGPointMake(insideval[2]+ event.values[2], insideval[1]);
                                  } else if (insideval[0] &gt; 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] &lt; event.values[0]) {
                                      endPoint = CGPoint.CGPointMake(insideval[1]- event.values[1], insideval[2]);
                                  } else if (insideval[0] &gt; 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] &lt; event.values[0]) {
                                      endPoint = CGPoint.CGPointMake(insideval[1]+ event.values[1], insideval[2]);
                                  } else if (insideval[0] &gt; 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] &lt; event.values[0]) {
                                      endPoint = CGPoint.CGPointMake(insideval[2]- event.values[2], insideval[1]);
                                  } else if (insideval[0] &gt; event.values[0]) {
                                      endPoint = CGPoint.CGPointMake(insideval[2]+event.values[2],insideval[1]);
                                  }
                              }
                          }
                          this.drawView();
                      }
                  }
  
                  break;
  }
  }
  </code></pre>
  
  <p>So my problem is <strong>if device's orientation changes upside down</strong> image will rotate to wrong direction(exactly opposite direction). How can i fix this issue and what actually happens when devices orientation change upside down ?<br>
  Thanks.</p>