Está en la página 1de 2

package com.example.

pruba_2;
import android.R;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.os.Build;
public class MainActivity extends Activity implements SensorEventListener{
private TextView tvx, tvy, tvz;
private SensorManager mSensorManager;
private Sensor accelerometer, magnetometer;
Float azimut, pitch, roll;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE)
;
accelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELERO
METER);
magnetometer = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_
FIELD);
tvx=(TextView)findViewById(R.id.tvx);
tvy=(TextView)findViewById(R.id.tvy);
tvz=(TextView)findViewById(R.id.tvz);
}
protected void onResume()
{
super.onResume();

mSensorManager.registerListener(this, accelerometer, SensorMan
ager.SENSOR_DELAY_GAME);
mSensorManager.registerListener(this, magnetometer, SensorMana
ger.SENSOR_DELAY_GAME);

}

protected void onPause()
{
mSensorManager.unregisterListener(this, accelerometer);
mSensorManager.unregisterListener(this, magnetometer);
super.onPause();

}
protected void onStop()
{
mSensorManager.unregisterListener(this, accelerometer);
mSensorManager.unregisterListener(this, magnetometer);
super.onStop();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
float[] mGravity;
float[] mGeomagnetic;
double x1, x2, x3, PI= 3.141592653589793;
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
mGravity = event.values;
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
mGeomagnetic = event.values;
if (mGravity != null && mGeomagnetic != null) {
float R[] = new float[9];
float I[] = new float[9];
boolean success = SensorManager.getRotationMatrix(R, I, mG
ravity, mGeomagnetic);
if (success) {
float orientation[] = new float[3];
SensorManager.getOrientation(R, orientation);
azimut = orientation[0]; // orientation contains: azimut
, pitch and roll
pitch = orientation[1];
roll = orientation[2];

x1= azimut*(180/PI);
x2= pitch*(180/PI);
x3= roll*(180/PI);
}
}
tvx.setText("X= "+x2);
tvy.setText("Y= "+x3);
tvz.setText("Z= "+x1);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
}

También podría gustarte