Sunday 15 May 2011

android interval between sensor listeners -



android interval between sensor listeners -

i wrote simple android code, listens acceleration , orientation sensors, , writes acceleration x,y,z values, , angel north.

in app trying set 30 seconds interval between sending sensors event onsensorchanged() function, it's still updating few times every second.

this code:

package com.example.sensors; import java.util.list; import android.os.bundle; import android.util.log; import android.view.menu; import android.hardware.sensoreventlistener; import android.hardware.sensormanager; import android.app.activity; import android.hardware.sensor; import android.hardware.sensorevent; public class mainactivity extends activity implements sensoreventlistener{ private sensormanager sensormanager; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); sensormanager = (sensormanager)this.getsystemservice(sensor_service); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.main, menu); homecoming true; } @override public void onsensorchanged(sensorevent event) { if (event.sensor.gettype() == sensor.type_accelerometer) // { float x = event.values[0]; float y = event.values[1]; float z = event.values[2]; log.i("acceleration:", "x, y, z" + " " + x + " " + y + " " + z + " "); } else if (event.sensor.gettype() == sensor.type_orientation) //@deprecated. utilize type_magnetic_field { log.i("orentation: " , "north:" + event.values[0]); } } @override public void onaccuracychanged(sensor sensor, int accuracy) { } @override protected void onresume() { super.onresume(); // register class listener accelerometer sensors , orientation sensormanager.registerlistener(this, sensormanager.getdefaultsensor(sensor.type_accelerometer),//this method default sensor given type 30000000);//sensormanager.sensor_delay_normal sensormanager.registerlistener(this, sensormanager.getdefaultsensor(sensor.type_orientation),//this method default sensor given type 30000000); } @override protected void onpause() { // unregister listener super.onpause(); sensormanager.unregisterlistener(this); } }

you can't set custom interval sensor rates. slowest rate possible sensor_delay_ui, , samples per sec depend on device. need filter these values saving lastly time printed values, wait until difference between time , current time on 30 seconds , print again.

android sensor

No comments:

Post a Comment