Java 安卓加速度计读数

Java 安卓加速度计读数,java,android,class,accelerometer,Java,Android,Class,Accelerometer,我想使用多个类来显示加速度计读数。我试着在一节课上得到加速度计的读数,它运行得非常好。 但是在这个代码中,输出是0.00000,0.000000,0.00000 以下是我的两门课: package com.example.sample; import android.hardware.Sensor; import android.hardware.SensorManager; import android.os.Bundle; import android.widget.TextView; im

我想使用多个类来显示加速度计读数。我试着在一节课上得到加速度计的读数,它运行得非常好。 但是在这个代码中,输出是0.00000,0.000000,0.00000

以下是我的两门课:

package com.example.sample;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;
import android.app.Activity;
import android.content.Context;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    AccData accl=new AccData();     

    accl.mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    accl.sensor = accl.mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    accl.register();
    String result=accl.getAccelerometerReading();
    TextView display=(TextView)findViewById(R.id.tv);
    display.setText(result);

}
}
二,


您需要一种机制来通知其他类,
AccData
具有可用的更新值。通常,这是由侦听器完成的-您已经通过以下代码行使用了此概念:

public class AccData extends Activity implements SensorEventListener
当出现新的SensorEvent时,会通知您的班级
AccData
。 有关如何编写侦听器的更多信息,请访问

给你一个基本的想法:

  • 为侦听器创建一个接口,例如

    public interface MyListener{
      public void processSensorEvent(SensorEvent event);
    }
    
  • 将registerListener/unregisterListener方法添加到类
    AccData
    。还添加一个数据结构来存储注册的侦听器
  • AccData
    中编写一个方法
    fireUpdate
    ,该方法在sensorchanged中调用,并将新的SensorEvent作为参数

    @Override
    public void onSensorChanged(SensorEvent event) {
      acclX = event.values[0];
      acclY =event.values[1];
      acclZ = event.values[2];
      fireUpdate(event);
    
    }

  • fireUpdate
    的目的是迭代已注册侦听器的列表,并调用其方法的实现
    processSensorEvent(SensorEvent事件)

  • 让您的主要活动实现MyListener

    public class MainActivity extends Activity implements MyListener{
    
  • 然后,您必须在主活动中实现方法
    processSensorEvent(SensorEvent事件)
    ,并可以使用它来更新文本视图

    public void processSensorEvent(SensorEvent event){
      TextView display=(TextView)findViewById(R.id.tv);
      display.setText(event.values[0] + " " + event.values[1] + " " + event.values[2]);
    }
    

如何更新显示的文本视图的内容?创建第一个活动时,您仅设置一次内容。是。你是对的。但是我如何更新textview的内容呢?而且通过调试,我意识到程序控件没有进入onSensorChanged函数检查本教程中的android加速计数据您可以指定我应该使用哪种方法吗。我是Android/Java编程的新手。
public class MainActivity extends Activity implements MyListener{
public void processSensorEvent(SensorEvent event){
  TextView display=(TextView)findViewById(R.id.tv);
  display.setText(event.values[0] + " " + event.values[1] + " " + event.values[2]);
}