Java 无法获取多个传感器数据
我正在玩传感器,看看我能用它做什么,所以第一步是获取传感器数据。然而,获得多个传感器,甚至是除加速计以外的任何传感器,似乎都存在问题。因为这是我手机上唯一的数据 我试着在加速计关闭的情况下运行它,但不管怎样,其他传感器都不会显示它们的数据Java 无法获取多个传感器数据,java,android,android-sensors,Java,Android,Android Sensors,我正在玩传感器,看看我能用它做什么,所以第一步是获取传感器数据。然而,获得多个传感器,甚至是除加速计以外的任何传感器,似乎都存在问题。因为这是我手机上唯一的数据 我试着在加速计关闭的情况下运行它,但不管怎样,其他传感器都不会显示它们的数据 public class MainActivity extends AppCompatActivity implements SensorEventListener { //TODO: Database variables //Backen
public class MainActivity extends AppCompatActivity implements SensorEventListener {
//TODO: Database variables
//Backend variables
private SensorManager senSensorManager;
private Sensor senAccelerometer, senLightsensor, senTemperatureSensor;
private boolean isRunning;
private Handler myHandler = new Handler();
private float ACx, ACy, ACz;
//UI variables
private RelativeLayout relativeLayout;
private TextView LightResult, Debug, AcceleroResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
relativeLayout = (RelativeLayout)findViewById(R.id.relativeLayout);
senSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
senAccelerometer = senSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
senLightsensor = senSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
senTemperatureSensor = senSensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
senSensorManager.registerListener(this, senAccelerometer , SensorManager.SENSOR_DELAY_NORMAL);
senSensorManager.registerListener(this, senLightsensor , SensorManager.SENSOR_DELAY_NORMAL);
LightResult = (TextView) findViewById(R.id.LightFound);
AcceleroResult = (TextView) findViewById(R.id.AcceleroResult);
Debug = (TextView) findViewById(R.id.Debug);
}
/**
* using isRunning for each sensors ensures no unneeded updates are happening when app is turned off.
*/
@Override
public void onSensorChanged(SensorEvent event) {
Sensor mySensor = event.sensor;
myHandler.post( new Runnable() {
public void run() {
LightResult.setText(String.valueOf(lx));
AcceleroResult.setText(String.valueOf(ACx));
}
}
);
if (mySensor.getType() == Sensor.TYPE_LIGHT && isRunning) {
float lx = event.values[0];
LightResult.setText(String.valueOf(lx));
}
else if (mySensor.getType() == Sensor.TYPE_ACCELEROMETER && isRunning) {
ACx = event.values[0];
ACy = event.values[1];
ACz = event.values[2];
AcceleroResult.setText(String.valueOf(ACx));
}
else if(mySensor.getType() == Sensor.TYPE_AMBIENT_TEMPERATURE && isRunning){
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
//Sensors dont run when app is not in foreground
protected void onPause() {
super.onPause();
senSensorManager.unregisterListener(this);
isRunning = false;
}
//Turns sensors on when the app is in the foreground
protected void onResume() {
super.onResume();
senSensorManager.registerListener(this, senAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
senSensorManager.registerListener(this, senTemperatureSensor, SensorManager.SENSOR_DELAY_NORMAL);
senSensorManager.registerListener(this, senLightsensor, SensorManager.SENSOR_DELAY_NORMAL);
isRunning = true;
}
}