java - accelerometer code in class -


i'm writing app show accelerometer readings, able yesterday write accelerometer code in main activity , works fine on emulator , device.

but today trying make class contains accelerometer code , return the 3 integers x,y,z in integer array only, make code think it`s right every time run project on emulator , give me 0 ,0,0 . wish , please .

activity code ::

package com.example.accelerometer_sensor;  import android.os.bundle; import android.app.activity; import android.view.menu; import android.widget.textview;  public class mainactivity extends activity {      int [] accval = new int[3];      textview acceleration;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          accelerometerclass acc = new accelerometerclass();         acc.accelerometerinit(this);          accval =acc.vals;           acceleration = (textview)findviewbyid(r.id.acceleration);            acceleration.settext("x: "+acc.vals[0]+                     "\ny: "+acc.vals[1]+                     "\nz: "+acc.vals[2]);     }      @override     public boolean oncreateoptionsmenu(menu menu) {         // inflate menu; adds items action bar if present.         getmenuinflater().inflate(r.menu.activity_main, menu);         return true;     }   } 

accelerometerclass :

package com.example.accelerometer_sensor;  import android.content.context; import android.hardware.sensor; import android.hardware.sensorevent; import android.hardware.sensoreventlistener; import android.hardware.sensormanager;  public class accelerometerclass implements sensoreventlistener  {     int [] vals = new int[3];     sensor accelerometer;     sensormanager sm;      public void accelerometerinit(context context)     {          sm = (sensormanager)context.getsystemservice(context.sensor_service);                accelerometer=sm.getdefaultsensor(sensor.type_accelerometer);         sm.registerlistener(this, accelerometer,sensormanager.sensor_delay_normal);      }      protected void onresume() {          sm.registerlistener(this, accelerometer, sensormanager.sensor_delay_normal);      }      protected void onpause() {          sm.unregisterlistener(this);     }      @override     public void onaccuracychanged(sensor sensor, int accuracy) {         // todo auto-generated method stub      }      @override     public void onsensorchanged(sensorevent event) {         // todo auto-generated method stub          vals[0]=(int)event.values[0];         vals[1]=(int)event.values[1];         vals[2]=(int)event.values[2];     }   } 

please stuck in problem along time , appreciate .

i suspect text being written before onsensorchanged event being fired. goes this...

  1. register listener
  2. write text (all 0s @ point)
  3. event fires , changes x,y,z values

the text written though values aren't updating. wrong test stopping thread few seconds before writing values text field thread.sleep(2000); 2000 in milliseconds.

it event isn't firing. can check adding line inside onsensorchanged() method logs logcat.

log.d(tag, "onsensorchanged method has been invoked"); 

edit: ran it. works fine, you're not getting results want because text being written before event firing. need update ui when onsensorchanged() method called.