2014-02-05 2 views
1

Простой вопрос, я следил за несколькими учебниками, но мой датчик приближения не работает. Я могу только программно получить тот факт, что она действительно существует, но текст не меняется, когда я положил руку на датчик приближения:android: проблема с датчиком приближения

public class MainActivity extends Activity implements SensorEventListener { 
private SensorManager sensorManager; 
private Sensor sensor; 
private TextView textView; 

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
    sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); 
    textView = (TextView) findViewById(R.id.textview); 

    if(sensor == null) { 
     textView.setText("No Proximity Sensor found"); 
    }else{ 
     textView.setText(sensor.getName() + " Found"); 
    } 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    sensorManager.unregisterListener(this); 
} 

@Override 
public void onSensorChanged(SensorEvent event) { 
    if(event.sensor.getType() == Sensor.TYPE_PROXIMITY) { 
     if(event.values[0] == 0) { 
      textView.setText("You are near: " + String.valueOf(event.values[0])); 
     }else{ 
      textView.setText("You are far: " + String.valueOf(event.values[0])); 
     } 
    } 
} 

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

} 

} 

Решение:

public class MainActivity extends Activity implements SensorEventListener { 
private SensorManager sensorManager; 
private Sensor sensor; 
private TextView textView; 

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
    sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); 
    textView = (TextView) findViewById(R.id.textview); 

    if(sensor == null) { 
     textView.setText("No Proximity Sensor found"); 
    }else{ 
     textView.setText(sensor.getName() + " Found"); 
    } 
    sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY), SensorManager.SENSOR_DELAY_NORMAL); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY), SensorManager.SENSOR_DELAY_NORMAL); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    sensorManager.unregisterListener(this); 
} 

@Override 
public void onSensorChanged(SensorEvent event) { 
    if(event.sensor.getType() == Sensor.TYPE_PROXIMITY) { 
     if(event.values[0] == 0) { 
      textView.setText("You are near: " + String.valueOf(event.values[0])); 
     }else{ 
      textView.setText("You are far: " + String.valueOf(event.values[0])); 
     } 
    } 
} 

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

} 

Вот как я, наконец, получил она работает, спасибо за помощь, ребята :)

ответ

2

Вы забыли прикрепить слушателя к датчику:

sensor.registerListener(this); 

Или лучше было бы:

sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_FASTEST); 
+1

Ошибка: не удается разрешить метод, или он должен быть sensorManager.registerListener()? Если да, какими должны быть параметры? – xXJJJasonMokXx

+0

Попробуйте изменить 'SensorEventListener' на' SensorListener' – Manitoba

+0

Но я все еще не могу сделать 'sensor.registerListener (this);' – xXJJJasonMokXx