将在另一个函数中使用的Android传感器值
在下面的代码中,我希望aX、oX等值用于另一个类的另一个函数。在本例中,使用matrixFunction中的函数。但是,传感器值的范围仅在while语句中。如何提取变量中的传感器值以用于另一个函数?就我而言,matX.aEx等。谢谢将在另一个函数中使用的Android传感器值,android,eclipse,orientation,accelerometer,sensors,Android,Eclipse,Orientation,Accelerometer,Sensors,在下面的代码中,我希望aX、oX等值用于另一个类的另一个函数。在本例中,使用matrixFunction中的函数。但是,传感器值的范围仅在while语句中。如何提取变量中的传感器值以用于另一个函数?就我而言,matX.aEx等。谢谢 public void onSensorChanged(SensorEvent event) { // TODO Auto-generated method stub double oX = 0.0; double o
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
double oX = 0.0;
double oY = 0.0;
double oZ = 0.0;
while (event.sensor.getType() == Sensor.TYPE_ORIENTATION)
{
oX = event.values[0];
oY = event.values[1];
oZ = event.values[2];
double timestamp_o = event.timestamp;
String orientX = String.valueOf(oX);
String orientY = String.valueOf(oY);
String orientZ = String.valueOf(oZ);
String timestamp_oS = String.valueOf(timestamp_o);
{orientationX.setText("X: "+orientX +"\nY: "+orientY
+ "\nZ: "+orientZ + "\nTimestamp: "+timestamp_oS);}
}
double aX = 0.0;
double aY = 0.0;
double aZ = 0.0;
double timestamp_a = 0.0;
while (event.sensor.getType() == Sensor.TYPE_LINEAR_ACCELERATION)
{
aX = event.values[0];
aY = event.values[1];
aZ = event.values[2];
timestamp_a = event.timestamp;
String acX = String.valueOf(aX);
String acY = String.valueOf(aY);
String acZ = String.valueOf(aZ);
String timestamp_aS = String.valueOf(timestamp_a);
{ acceleration.setText("X: "+acX +"\nY: "+acY
+ "\nZ: "+acZ + "\nTimestamp: "+timestamp_aS);}
}
double pressure_mbars = 0.0;
while (event.sensor.getType() == Sensor.TYPE_PRESSURE)
{
pressure_mbars = event.values[0];
double timestamp_p = event.timestamp;
String timestamp_pS = String.valueOf(timestamp_p);
// This is pressure in millibar.
String pressure_s = String.valueOf(pressure_mbars);
pressureT.setText("Pressure: "+pressure_s +"\n"+timestamp_pS);
}
matrixFunction matX = new matrixFunction();
double aEx = matX.aEx(aX, aY, aZ, oX, oY, oZ);
double aEy = matX.aEy(aX, aY, aZ, oX, oY, oZ);
double aEz = matX.aEz(aX, aY, aZ, oX, oY, oZ);
String aEx_s = String.valueOf(aEx);
String aEy_s = String.valueOf(aEy);
String aEz_s = String.valueOf(aEz);
accelerationInE.setText(aEx_s+"\n"+aEy+"\n"+aEz);
}
最简单的选项是在类中创建变量,并在
onSensorChanged()
中将它们设置为传感器读数。如果您无权访问实例,也不想将其传递给其他人,也可以将变量设置为静态。是,必须在onSensorChanged函数之外定义变量。