我有4个类向我显示传感器值和声音,我使用onSensorChanged()和onProgressUpdate()在4个类中获得不同的值,我想通过单击主类中的一个按钮来获取这些值
我的问题是如何将传感器值传递给我的班级?
这是我的sound.class
public Void doInBackground(Void... params) {
while(rec == true){
try{
Thread.sleep(250);
}catch(InterruptedException e){
e.printStackTrace();
}
ampitude = recorder.getMaxAmplitude();
db =(float) (20 * Math.log10(ampitude));
publishProgress(db);
}
return null;
}
public void onProgressUpdate(Float... progress){
database.addSoundData(dB);
dB = (progress[0].toString());
sound.setText("dB: "+ dB);
}
}
这是我的传感器课程之一
public void onSensorChanged(SensorEvent event) {
float speedX=event.values[0];
float speedY=event.values[1];
float speedZ=event.values[2];
float absoluteSpeed = (float)Math.sqrt(speedX*speedX + speedY*speedY + speedZ*speedZ);
db.addSpeedData(speedX, speedY, speedZ, absoluteSpeed );
String results = "X: "+ event.values[0] + "\nY: "+ event.values[1] + "\nZ: "+ event.values[2] +"\nAbsolute: "+ absoluteSpeed;
speed.setText(results);
}
答案 0 :(得分:0)
我会使用一个监听器将值传递给我的Activity,你会得到一个更新流,但你可以按下按钮更新UI。这是一些粗略的伪代码。
像这样创建监听器
public Interface MyListener{
public void onSensor1Update(Object value);
public void onSensor2Update(Object value);
public void onSensor3Update(Object value);
}
在您的Activity中实现它,并将您的Activity的引用提供给传感器类以充当监听器。
public class MyClassActivity implements MyListener{
public void createSensors(){
Sensor1 s1 = new Sensor1();
s1.listener = this;
Sensor2 s2 = new Sensor2();
s2.listener = this;
}
@Override
public void onSensor1Update(Object value){
//do something
}
public void onSensor2Update(Object value){
//do something
}
....
....
etc.
}
对于您想要值的每个类,执行类似的操作,也可以为AsyncTask类完成。
public class Sensor1{
public MyListener listener;
@Override
public void onSensorChanged(...){
listener.onSensor1Update(some value);
}
}