1

I am trying to create an application which reads data from digital compass. I tried to reuse the code from the book Professional Android Application Development but the IDE displayed a note

The type SensorListener is deprecated

I guess it is because the code from the book is written for the earlier SDK version so I tried to use SensorEventListener instead.

Then when I tried to register the listener

sensorManager.registerListener(sensorListener, SensorManager.SENSOR_ORIENTATION, SensorManager.SENSOR_DELAY_FASTEST);

an error appeared:

The method registerListener(SensorListener, int, int) in the type SensorManager is not applicable for the arguments (SensorEventListener, int, int)

so I tried to cast SensorEventListener to SensorListener, but the application doesn't work.

Does anyone know how to use sensor in newer SDK versions?

Thank you.

Niko Gamulin
  • 66,025
  • 95
  • 221
  • 286

4 Answers4

8

There is a separate SensorEventListener class you need to use. See here.

Jared Burrows
  • 54,294
  • 25
  • 151
  • 185
CommonsWare
  • 986,068
  • 189
  • 2,389
  • 2,491
6

You actually need to pass in a Senor object, not just the ID of it.

Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); sensorManager.registerListener(sensorListener, sensor, SensorManager.SENSOR_DELAY_FASTEST)

CaseyB
  • 24,780
  • 14
  • 77
  • 112
1

The method is just deprecated, you have to use

registerListener(SensorEventListener, Sensor, int) 

instead.

Mcingwe
  • 2,070
  • 2
  • 18
  • 17
1

I had the same problem but when I casted the first 2 parameters as (SensorEventListener) and (Sensor) it worked. I then realised the problem was that for some reason I had declared the Sensor as type "Object" and not "Sensor", so Eclipse failed to identify the types of parameters.

This worked for me:

mSensorManager.registerListener((SensorManager)this, (Sensor)mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);

But now I have correctly declared mAccelerometer as type Sensor I no longer need the casts.

Jimbali
  • 2,065
  • 1
  • 20
  • 24