-2

我有 4 个类向我显示传感器值和声音,我使用 onSensorChanged() 和 onProgressUpdate() 在 4 个类中获得不同的值,我想通过单击主类中的一个按钮来获取这些值

我的问题是如何将传感器值传递给我的班级?

这是我的声音.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);

}
4

1 回答 1

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

}
于 2013-04-14T23:18:25.203 回答