2014-09-24 117 views
0

我已經編寫代碼來獲取由加速度計返回的座標,並在單擊按鈕時在TextView上打印它們。但是,所有標籤上的值都只有0.0。 我還在onSensorChange()方法中添加了setText部分,以檢查每次手機有些動搖時值是否更改。我已經在Manifest中添加了必要的許可。請幫我做這個工作。Android加速度計返回0.0

代碼:

package com.example.lol; 

import android.app.Activity; 
import android.content.Context; 
import android.hardware.Sensor; 
import android.hardware.SensorEvent; 
import android.hardware.SensorEventListener; 
import android.hardware.SensorManager; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 

public class MainActivity extends Activity implements SensorEventListener{ 

    private SensorManager senSensorManager; 
    private Sensor senAccelerometer; 
    private long lastUpdate = 0; 
    private float last_x, last_y, last_z; 
    public float dummy_x, dummy_y,dummy_z; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button button1 = (Button)findViewById(R.id.button1); 
     button1.setOnClickListener(onClickListener); 

     senSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
     senAccelerometer = senSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
     senSensorManager.registerListener(this, senAccelerometer , SensorManager.SENSOR_DELAY_NORMAL); 
    } 

    protected void onPause() { 
     super.onPause(); 
     senSensorManager.unregisterListener(this); 
    } 
    protected void onResume() { 
     super.onResume(); 
     senSensorManager.registerListener(this, senAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
    } 

    public void onSensorChange(SensorEvent sensorEvent) { 
     Sensor mySensor = sensorEvent.sensor; 

     if (mySensor.getType() == Sensor.TYPE_ACCELEROMETER) { 
      float x = sensorEvent.values[0]; 
      float y = sensorEvent.values[1]; 
      float z = sensorEvent.values[2]; 
      dummy_x=x; 
      dummy_y=y; 
      dummy_z=z; 
      TextView textView1 = (TextView)findViewById(R.id.textView1); 
      TextView textView2 = (TextView)findViewById(R.id.textView2); 
      TextView textView3 = (TextView)findViewById(R.id.textView3); 
      textView1.setText(Float.toString(x)); 
      textView2.setText(Float.toString(y)); 
      textView3.setText(Float.toString(z)); 
     } 
    } 

    @Override 
    public void onAccuracyChanged(Sensor sensor, int accuracy) { 

    } 

    @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; 
    } 

    private OnClickListener onClickListener = new OnClickListener() { 
     @Override 
     public void onClick(final View v) { 
      switch(v.getId()){ 
       case R.id.button1: 
        TextView textView1 = (TextView)findViewById(R.id.textView1); 
        TextView textView2 = (TextView)findViewById(R.id.textView2); 
        TextView textView3 = (TextView)findViewById(R.id.textView3); 
        textView1.setText(Float.toString(dummy_x)); 
        textView2.setText(Float.toString(dummy_y)); 
        textView3.setText(Float.toString(dummy_z)); 
       break; 
      } 
     } 
    }; 

    @Override 
    public void onSensorChanged(SensorEvent event) { 

    } 

} 

回答

1

你有2種OnSensorChange功能。第一個包含所有TextView代碼的內容不會覆蓋任何內容。底部的那個(空的)是價值觀的來源。