本文实例讲述了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 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程序设计有所帮助。