Note that there are some explanatory texts on larger screens.

plurals
  1. POHow can I access the accelerometer properly in Android 1.5?
    text
    copied!<p>I have seen a few code examples of 1.0 / 1.1 but since a lot of that is deprecated now I was hoping to find a nice 1.5+ example. I have some code here that I wrote but it doesn't really work properly. Any help would be great, thanks!</p> <pre><code>public class collectAccel extends Activity implements SensorEventListener, OnClickListener{ private SensorManager sensorMgr; private TextView xLabel, yLabel, zLabel; private Button StartBtn; private List&lt;Sensor&gt; sensorList; private float x, y, z; private long lastUpdate = -1; // deltas for calibration private float cx, cy, cz; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); xLabel = (TextView) findViewById(R.id.x_label); yLabel = (TextView) findViewById(R.id.y_label); zLabel = (TextView) findViewById(R.id.z_label); StartBtn = (Button) findViewById(R.id.Button1); StartBtn.setOnClickListener(this); } @Override public void onClick(View arg0) { if (xLabel.getVisibility() != 1) xLabel.setVisibility(1); if (yLabel.getVisibility() != 1) yLabel.setVisibility(1); if (zLabel.getVisibility() != 1) zLabel.setVisibility(1); } @Override protected void onPause() { super.onPause(); sensorMgr.unregisterListener((SensorEventListener)this, sensorList.get(0)); sensorMgr = null; cx = 0; cy = 0; cz = 0; } @Override protected void onResume() { super.onResume(); sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE); sensorList = sensorMgr.getSensorList(Sensor.TYPE_ACCELEROMETER); boolean accelSupported = sensorMgr.registerListener((SensorEventListener)this, sensorList.get(0), SENSOR_DELAY_UI); if (!accelSupported) { // on accelerometer on this device sensorMgr.unregisterListener((SensorEventListener)this, sensorList.get(0)); } } @Override public void onAccuracyChanged(Sensor arg0, int arg1) { cx = 0; cy = 0; cz = 0; } @Override public void onSensorChanged(SensorEvent arg0) { if (arg0.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { long curTime = System.currentTimeMillis(); // only allow one update every 100ms, otherwise updates // come way too fast and the phone gets bogged down // with garbage collection if (lastUpdate == -1 || (curTime - lastUpdate) &gt; 100) { lastUpdate = curTime; x = arg0.values[0]; y = arg0.values[1]; z = arg0.values[2]; xLabel.setText(String.format("X: %+2.5f (%+2.5f)", (x+cx), cx)); yLabel.setText(String.format("Y: %+2.5f (%+2.5f)", (y+cy), cy)); zLabel.setText(String.format("Z: %+2.5f (%+2.5f)", (z+cz), cz)); } } } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload