如题,如何获取手机的重力感应数据能给部门源代码最好了、

解决方案 »

  1.   

    import java.util.List;
    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.View;
    import android.widget.Button;
    import android.widget.TextView;public class SensorGetValueActivity extends Activity implements SensorEventListener{
    private SensorManager sensorManager;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            sensorManager=(SensorManager)this.getSystemService(SENSOR_SERVICE);
            setContentView(R.layout.main);
            Button close=(Button)findViewById(R.id.btn_close);
            close.setOnClickListener(new Button.OnClickListener(){
    public void onClick(View v) {
    // TODO Auto-generated method stub
    finish();
    }       
            });
        }    protected void onResume(){
         super.onResume();
         List<Sensor> sensors=sensorManager.getSensorList(Sensor.TYPE_ALL);
         for(Sensor s:sensors){
         sensorManager.registerListener(this, s,SensorManager.SENSOR_DELAY_NORMAL);
         }
    //     sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
    //     SensorManager.SENSOR_DELAY_NORMAL);
        }
        
    public void onAccuracyChanged(Sensor arg0, int arg1) {
    // TODO Auto-generated method stub

    } public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
    switch(event.sensor.getType()){
    //加速度
    case Sensor.TYPE_ACCELEROMETER:
    TextView tv1=(TextView)findViewById(R.id.tv1);
    String x1=String.valueOf(event.values[SensorManager.DATA_X]);
    String y1=String.valueOf(event.values[SensorManager.DATA_Y]);
    String z1=String.valueOf(event.values[SensorManager.DATA_Z]);
    tv1.setText("加速度x:"+x1+"\n"+"加速度y:"+y1+"\n"+"加速度z:"+z1);
    break;
    //倾斜度
    case Sensor.TYPE_ORIENTATION:
    TextView tv2=(TextView)findViewById(R.id.tv2);
    String x2=String.valueOf(event.values[SensorManager.DATA_X]);
    String y2=String.valueOf(event.values[SensorManager.DATA_Y]);
    String z2=String.valueOf(event.values[SensorManager.DATA_Z]);
    tv2.setText("倾斜度x:"+x2+"\n"+"倾斜度y:"+y2+"\n"+"倾斜度z:"+z2);
    break;
    //磁力计
    case Sensor.TYPE_MAGNETIC_FIELD:
    TextView tv3=(TextView)findViewById(R.id.tv3);
    String x3=String.valueOf(event.values[SensorManager.DATA_X]);
    String y3=String.valueOf(event.values[SensorManager.DATA_Y]);
    String z3=String.valueOf(event.values[SensorManager.DATA_Z]);
    tv3.setText("磁力计x:"+x3+"\n"+"磁力计y:"+y3+"\n"+"磁力计z:"+z3);
    break;
    //温度
    case Sensor.TYPE_TEMPERATURE:
    TextView tv4=(TextView)findViewById(R.id.tv4);
    String c=String.valueOf(event.values[SensorManager.DATA_X]);
    tv4.setText("Degree:"+c);
    break;
    }
    }

    protected void onStop(){
    super.onStop();
    sensorManager.unregisterListener(this);
    }
    }