Sensors in Android. I can not get them to show

1

I have a program in which I must show in some textview the information of the sensors that is obtained from the device, but they are not shown.

This is my code:

private ListView miListView;
private SensorManager miSensorManager;
private Sensor miSensor;
private TextView miTextView;
private TextView miTextLuz;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sensores);
    miSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    miSensor = miSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
    miTextView = (TextView) findViewById(R.id.textView);
    miTextLuz = (TextView) findViewById(R.id.textLuz);

    @Override
    public void onSensorChanged(SensorEvent sensorEvent) {
      switch (sensorEvent.sensor.getType()) {
        case Sensor.TYPE_LIGHT:
          if (sensorEvent.values[0] == 0.0) {
            miTextLuz.setText("No veo nada!!!");
          } else {
            miTextLuz.setText("Parece que hay buena iluminación");
          }
        case Sensor.TYPE_PROXIMITY:
          miTextView.setText(String.valueOf(sensorEvent.values[0]));
          if (sensorEvent.values[0] == 0.0) {
            textView.setText("Demasiado cerca");
          }
          break;
      }

    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int i) {

    }

    // Paramos el acceso a los sensores cuando no sea necesario.
    @Override
    protected void onPause() {
      super.onPause();
      miSensorManager.unregisterListener(this);
    }

Code update:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sensores);
    miSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    miSensorLuz = miSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
    miSensorProx = miSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
    miTextView = (TextView) findViewById(R.id.textView);
    miTextLuz = (TextView) findViewById(R.id.textLuz);
    if (miSensorLuz != null) {
      miSensorManager.registerListener(this, miSensorLuz, SensorManager.SENSOR_DELAY_NORMAL);
    } else {
      Log.d("SENSOR", "NOT Available");
    }

    if (miSensorProx != null) {
      miSensorManager.registerListener(this, miSensorProx, SensorManager.SENSOR_DELAY_NORMAL);
    } else {
      Log.d("SENSOR", "NOT Available");
    }
    @Override
    public void onSensorChanged(SensorEvent sensorEvent) {
      switch (sensorEvent.sensor.getType()) {
        case Sensor.TYPE_LIGHT:
          if (sensorEvent.values[0] == 0.0) {
            miTextLuz.setText("No veo nada!!!");
          } else {
            miTextLuz.setText("Parece que hay buena iluminación");
          }
        case Sensor.TYPE_PROXIMITY:
          miTextView.setText(String.valueOf(sensorEvent.values[0]));
          if (sensorEvent.values[0] == 0.0) {
            textView.setText("Demasiado cerca");
          }
          break;
      }

    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int i) {

    }

    // Paramos el acceso a los sensores cuando no sea necesario.
    @Override
    protected void onPause() {
      super.onPause();
      miSensorManager.unregisterListener(this);
    }
    
asked by PacoPepe 26.02.2018 в 22:40
source

1 answer

1

I do not see that you register the Listener , you must do it so that the changes are recorded in onSensorChanged()

  miSensorManager.registerListener(
                    this,
                    miSensor,
                    SensorManager.SENSOR_DELAY_NORMAL);

This is how you do it within onCreate() :

SensorManager miSensorManager;
Sensor mySensorProximity;
Sensor mySensorLight;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sensores);
    miSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

    mySensorLight = mySensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
    mySensorProximity = mySensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
 ...
 ...

   if(mySensorLight != null){
        Log.d(TAG, " existe TYPE_LIGHT : " + mySensorLight.getName());
        mySensorManager.registerListener(
                this,
                mySensorLight,
                SensorManager.SENSOR_DELAY_NORMAL);

    }else{
        Log.d(TAG, "Sensor.TYPE_LIGHT NOT Available");
    }

    if(mySensorProximity != null){
        Log.d(TAG, " existe TYPE_PROXIMITY : " + mySensorProximity.getName());
        mySensorManager.registerListener(
                this,
                mySensorProximity,
                SensorManager.SENSOR_DELAY_NORMAL);

    }else{
        Log.d(TAG, "Sensor.TYPE_PROXIMITY NOT Available");
    }



}
    
answered by 27.02.2018 в 00:42