Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】
程序员文章站
2023-10-19 08:22:34
本文实例讲述了android开发获取传感器数据的方法。分享给大家供大家参考,具体如下:
package mobile.android.sensor;
impor...
本文实例讲述了android开发获取传感器数据的方法。分享给大家供大家参考,具体如下:
package mobile.android.sensor; import java.util.list; import android.app.activity; import android.hardware.sensor; import android.hardware.sensorevent; import android.hardware.sensoreventlistener; import android.hardware.sensormanager; import android.os.bundle; import android.widget.textview; public class main extends activity implements sensoreventlistener { private textview tvaccelerometer; private textview tvmagentic; private textview tvlight; private textview tvorientation; private textview tvsensors; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); // 获得sensormanager对象 sensormanager sensormanager = (sensormanager) getsystemservice(sensor_service); // 注册加速度传感器 sensormanager.registerlistener(this, sensormanager.getdefaultsensor(sensor.type_accelerometer), sensormanager.sensor_delay_fastest); // 注册磁场传感器 sensormanager.registerlistener(this, sensormanager.getdefaultsensor(sensor.type_magnetic_field), sensormanager.sensor_delay_fastest); // 注册光线传感器 sensormanager.registerlistener(this, sensormanager.getdefaultsensor(sensor.type_light), sensormanager.sensor_delay_fastest); // 注册方向传感器 sensormanager.registerlistener(this, sensormanager.getdefaultsensor(sensor.type_orientation), sensormanager.sensor_delay_fastest); tvaccelerometer = (textview) findviewbyid(r.id.tvaccelerometer); tvmagentic = (textview) findviewbyid(r.id.tvmagentic); tvlight = (textview) findviewbyid(r.id.tvlight); tvorientation = (textview) findviewbyid(r.id.tvorientation); tvsensors = (textview) findviewbyid(r.id.tvsensors); // 获得当前手机支持的所有传感器 list<sensor> sensors = sensormanager.getsensorlist(sensor.type_all); for (sensor sensor : sensors) { // 输出当前传感器的名称 tvsensors.append(sensor.getname() + "\n"); } } @override public void onsensorchanged(sensorevent event) { // 通过gettype方法获得当前传回数据的传感器类型 switch (event.sensor.gettype()) { case sensor.type_accelerometer: // 处理加速度传感器传回的数据 string accelerometer = "加速度\n" + "x:" + event.values[0] + "\n" + "y:" + event.values[1] + "\n" + "z:" + event.values[2] + "\n"; tvaccelerometer.settext(accelerometer); break; case sensor.type_light: // 处理光线传感器传回的数据 tvlight.settext("亮度:" + event.values[0]); break; case sensor.type_magnetic_field: // 处理磁场传感器传回的数据 string magentic = "磁场\n" + "x:" + event.values[0] + "\n" + "y:" + event.values[1] + "\n" + "z:" + event.values[2] + "\n"; tvmagentic.settext(magentic); break; case sensor.type_orientation: // 处理方向传感器传回的数据 string orientation = "方向\n" + "x:" + event.values[0] + "\n" + "y:" + event.values[1] + "\n" + "z:" + event.values[2] + "\n"; tvorientation.settext(orientation); break; } } @override public void onaccuracychanged(sensor sensor, int accuracy) { } }
ps:这里获得的只是传感器采集数据,还需要对数据分析,变成有用的信息。
更多关于android相关内容感兴趣的读者可查看本站专题:《android开发入门与进阶教程》、《android视图view技巧总结》、《android编程之activity操作技巧总结》、《android操作sqlite数据库技巧总结》、《android操作json格式数据技巧总结》、《android资源操作技巧汇总》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。