我想将我的android类数据传递给一个类

时间:2013-04-14 21:00:10

标签: android

我有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);

}

1 个答案:

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

}