0

Hey Guys私は現在、加速度計にアクセスして、コードが現在機能していないときにグラフ化するプロジェクトに取り組んでいます。理由がわからない場合は、助けていただければ幸いです。

プログラムは、30秒間データを記録してから、グラフを出力する必要がありますが、3軸すべてに対して0の値を出力し続けます。

コード:

public class AccelerometerData extends Activity implements SensorEventListener {

public float _x;
public float _y;
public float _z;

boolean senseA = false; 

int Time = 30;
int samplerate=10;
int sampleSize=(Time*1000)/samplerate;
public double[] X = new double[sampleSize];         
public double[] Y = new double[sampleSize];
public double[] Z = new double[sampleSize];

Sensor accelerometer;
SensorManager sm;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    sm=(SensorManager)getSystemService(SENSOR_SERVICE);
    accelerometer=sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    sm.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_FASTEST);

    final Timer updateTimer = new Timer();
    updateTimer.scheduleAtFixedRate(new TimerTask(){
        public void run(){
            if (senseA= true){
                for (int i = 0; i < sampleSize; i++){
                    X[i] = _x;                                          
                    Y[i] = _y;
                    Z[i] = _z;                                                  
        }

            }                                                       
        }
    }, 0, samplerate);

  }

public void onAccuracyChanged(Sensor sensor, int accuracy) {
    // TODO Auto-generated method stub

}

public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
        _x = event.values[0];
        _y = event.values[1];
        _z = event.values[2];
        senseA = true;
        }

}

}

出力値は以下のとおりです。

AccelerometerData data= new AccelerometerData();

double[] dataX =  data.X;   

double[] dataY =  data.Y;

double[] dataZ =  data.Z;

int length = data.sampleSize;

よろしくお願いします

4

1 に答える 1

0

加速度計から読み取るためのコードは正常に見えます。

ただし、でアクティビティを開始することはできません

AccelerometerData data= new AccelerometerData();

代わりに、インテントを使用してアクティビティを開始できます。

startActivity(new Intent(this, AccelerometerData.class));

また、加速度計の値を保存する方法は偽物に見えます。X、Y、Z配列のi番目の位置にi番目の読み取り値を格納するとします。代わりに、配列のすべての要素を最新の値で上書きしています。

于 2012-09-20T16:33:06.833 に答える