Hardware Android

package app.test;
import android.app.Activity;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;
public class Test extends Activity implements SensorEventListener {
  private SensorManager mgr;
  private Sensor accel;
    private Sensor compass;
  private Sensor orient;
    private TextView preferred;
  private TextView orientation;
  private boolean ready = false;
  private float[] accelValues = new float[3];
  private float[] compassValues = new float[3];
  private float[] inR = new float[9];
  private float[] inclineMatrix = new float[9];
  private float[] orientationValues = new float[3];
  private float[] prefValues = new float[3];
  private float mAzimuth;
  private double mInclination;
  private int counter;
  private int mRotation;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        preferred = (TextView)findViewById(R.id.preferred);
        orientation = (TextView)findViewById(R.id.orientation);
        mgr = (SensorManager) this.getSystemService(SENSOR_SERVICE);
        accel = mgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        compass = mgr.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
        orient = mgr.getDefaultSensor(Sensor.TYPE_ORIENTATION);
        WindowManager window = (WindowManager) this.getSystemService(WINDOW_SERVICE);
        int apiLevel = Integer.parseInt(Build.VERSION.SDK);
        if(apiLevel < 8) {
            mRotation = window.getDefaultDisplay().getOrientation();
        }
        else {
          mRotation = window.getDefaultDisplay().getRotation();
        }
    }
    @Override
    protected void onResume() {
        mgr.registerListener(this, accel, SensorManager.SENSOR_DELAY_GAME);
        mgr.registerListener(this, compass, SensorManager.SENSOR_DELAY_GAME);
        mgr.registerListener(this, orient, SensorManager.SENSOR_DELAY_GAME);
      super.onResume();
    }
    @Override
    protected void onPause() {
        mgr.unregisterListener(this, accel);
        mgr.unregisterListener(this, compass);
        mgr.unregisterListener(this, orient);
      super.onPause();
    }
  public void onAccuracyChanged(Sensor sensor, int accuracy) {
  }
  public void onSensorChanged(SensorEvent event) {
    switch(event.sensor.getType()) {
    case Sensor.TYPE_ACCELEROMETER:
      for(int i=0; i<3; i++) {
              accelValues[i] = event.values[i];
      }
            if(compassValues[0] != 0)
              ready = true;
            break;
    case Sensor.TYPE_MAGNETIC_FIELD:
      for(int i=0; i<3; i++) {
        compassValues[i] = event.values[i];
      }
            if(accelValues[2] != 0)
              ready = true;
            break;
    case Sensor.TYPE_ORIENTATION:
      for(int i=0; i<3; i++) {
        orientationValues[i] = event.values[i];
      }
        break;
    }    
        if(!ready)
          return;
        if(SensorManager.getRotationMatrix(
                inR, inclineMatrix, accelValues, compassValues)) {
          mInclination = SensorManager.getInclination(inclineMatrix);
          SensorManager.getOrientation(inR, prefValues);
          if(counter++ % 10 == 0) {
            doUpdate(null);
            counter = 1;
          }
        }
  }
    public void doUpdate(View view) {
      if(!ready)
        return;
      mAzimuth = (float) Math.toDegrees(prefValues[0]);
      if(mAzimuth < 0) {
        mAzimuth += 360.0f;
      }
        String msg = String.format(
            "Preferred:\nazimuth (Z): %7.3f \npitch (X): %7.3f\nroll (Y): %7.3f",
            mAzimuth, Math.toDegrees(prefValues[1]),
             Math.toDegrees(prefValues[2]));
      preferred.setText(msg);
        msg = String.format(
            "Orientation Sensor:\nazimuth (Z): %7.3f\npitch (X): %7.3f\nroll (Y): %7.3f",
            orientationValues[0],
            orientationValues[1],
             orientationValues[2]);
        orientation.setText(msg);
         preferred.invalidate();
         orientation.invalidate();
    }
    public void doShow(View view) {
        Intent intent=new Intent(Intent.ACTION_VIEW, Uri.parse(
            "google.streetview:cbll=30.32454,-81.6584&cbp=1," +
            Math.round(orientationValues[0]) + ",,0,1.0"
            ));
      startActivity(intent);
      return;
    }
}
//main.xml


    android:layout_width="fill_parent"  android:layout_height="fill_parent"
    >
      android:layout_width="wrap_content"  android:layout_height="wrap_content" 
    android:onClick="doUpdate" />
      android:layout_width="wrap_content"  android:layout_height="wrap_content" 
    android:onClick="doShow" android:layout_toRightOf="@id/update" />
      android:layout_width="wrap_content"  android:layout_height="wrap_content"
    android:layout_below="@id/update" />
      android:layout_width="wrap_content"  android:layout_height="wrap_content"
    android:layout_below="@id/preferred" />