2014-02-05 89 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