I have an application in which I want to start a listener for the accelerometer when a button is clicked, so I tried this way:
private SensorManager sensorManager;
@Override
public void onCreate (Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.storing_act);
Button start = (Button)findViewById(R.id.startl);
start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL);
}
});
but it appears a message with
"The method registerListener(SensorEventListener, Sensor, int) in the type SensorManager is not applicable for the arguments (new View.OnClickListener(){}, Sensor, int)"
Is there a way to solve it easy? Do I have to override any other method? Thanks
You need to use MyActivity.this
because this
refers to OnClickListener
and the registerListener
method is expecting SensorEventListener
.
public class MyActivity extends Activity implements SensorEventListener {
@Override
public void onCreate (Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.storing_act);
Button start = (Button)findViewById(R.id.startl);
start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);
sensorManager.registerListener(MyActivity.this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL);
}
});
}