How can one get hold of SensorManager? lazarus / 43-Android ---------------------------------------------------------------------- stab · 2013-08-06 08:26 Hi all, Would like to be able to get magnetic field readings and need to get hold of SensorManager. Have been trying with following code with no luck:   // get sensorManagerClass   sensorManagerClass := javaEnvRef^^.FindClass(javaEnvRef, 'android/hardware/SensorManager');   if sensorManagerClass = nil then     debugln('******** sensorManagerClass NIL ********')   else     debugln('******** sensorManagerClass NOT NIL ********');   // get the string Context.SENSOR_SERVICE remember that NewStringUTF does not require ReleaseStringUTFChars   javaString_SENSORMANAGER_SERVICE := javaEnvRef^^.NewStringUTF(javaEnvRef, pchar('SENSOR_SERVICE'));   // Get the SensorManager object   lParams[0].l := javaString_SENSORMANAGER_SERVICE;   sensorManagerObject := javaEnvRef^^.CallObjectMethodA(javaEnvRef, javaActivityObject, javaMethod_getSystemService, @lParams[0]);   if sensorManagerObject = nil then     debugln('******** sensorManagerObject NIL ********')   else     debugln('******** sensorManagerObject NOT NIL ********');   javaMethodId_getDefaultSensor :=     javaEnvRef^^.GetMethodID(javaEnvRef, sensorManagerClass, 'getDefaultSensor', '(I)Landroid/hardware/Sensor;');   if javaMethodId_getDefaultSensor = nil then     debugln('******** javaMethodId_getDefaultSensor NIL ********')   else     debugln('******** javaMethodId_getDefaultSensor NOT NIL ********'); From this code I find sensorManagerClass and javaMethodId_getDefaultSensor but sensorManagerObject is nil. Reading documentation for SensorManager and code used from java public class Test extends Activity implements SensorEventListener {     private SensorManager mgr;     private Sensor compass;     private TextView text;     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         mgr = (SensorManager) this.getSystemService(SENSOR_SERVICE);         compass = mgr.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); My conclusion is that one should use SENSOR_SERVICE as parameter to get hold of SensorManager but that doesn't work. Any hint on this will be appreciated Regards stab