Java 安卓加速度计读数
我想使用多个类来显示加速度计读数。我试着在一节课上得到加速度计的读数,它运行得非常好。 但是在这个代码中,输出是0.00000,0.000000,0.00000 以下是我的两门课: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
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
,该方法在sensorchanged中调用,并将新的SensorEvent作为参数fireUpdate
}@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]); }
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]);
}