public void onSensorChanged(int sensor, float[] values)  
  {  
   // Log.d(TAG, "sensor: " + sensor + ", x: " + values[0] + ", y: " +  
   // values[1] + ", z: " + values[2]);  
   synchronized (this)  
   {  
    if (sensor == SensorManager.SENSOR_ORIENTATION)  
    {  
     for (int i = 0; i < 3; i++)  
     {  
      mOrientationValues[i] = values[i];  
     }  
    }  
    if (sensor == SensorManager.SENSOR_ACCELEROMETER)  
    {  
     for (int i = 0; i < 3; i++)  
     {  
      mLastValues[i] = values[i];  
     }  
    }  
    invalidate();  
   }  
  }