Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】
本文实例讲述了Android开发获取传感器数据的方法。分享给大家供大家参考,具体如下:
packagemobile.android.sensor;
importjava.util.List;
importandroid.app.Activity;
importandroid.hardware.Sensor;
importandroid.hardware.SensorEvent;
importandroid.hardware.SensorEventListener;
importandroid.hardware.SensorManager;
importandroid.os.Bundle;
importandroid.widget.TextView;
publicclassMainextendsActivityimplementsSensorEventListener{
privateTextViewtvAccelerometer;
privateTextViewtvMagentic;
privateTextViewtvLight;
privateTextViewtvOrientation;
privateTextViewtvSensors;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获得SensorManager对象
SensorManagersensorManager=(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);
//获得当前手机支持的所有传感器
Listsensors=sensorManager.getSensorList(Sensor.TYPE_ALL);
for(Sensorsensor:sensors){
//输出当前传感器的名称
tvSensors.append(sensor.getName()+"\n");
}
}
@Override
publicvoidonSensorChanged(SensorEventevent){
//通过getType方法获得当前传回数据的传感器类型
switch(event.sensor.getType()){
caseSensor.TYPE_ACCELEROMETER://处理加速度传感器传回的数据
Stringaccelerometer="加速度\n"+"X:"+event.values[0]+"\n"
+"Y:"+event.values[1]+"\n"+"Z:"+event.values[2]
+"\n";
tvAccelerometer.setText(accelerometer);
break;
caseSensor.TYPE_LIGHT://处理光线传感器传回的数据
tvLight.setText("亮度:"+event.values[0]);
break;
caseSensor.TYPE_MAGNETIC_FIELD://处理磁场传感器传回的数据
Stringmagentic="磁场\n"+"X:"+event.values[0]+"\n"+"Y:"
+event.values[1]+"\n"+"Z:"+event.values[2]+"\n";
tvMagentic.setText(magentic);
break;
caseSensor.TYPE_ORIENTATION://处理方向传感器传回的数据
Stringorientation="方向\n"+"X:"+event.values[0]+"\n"+"Y:"
+event.values[1]+"\n"+"Z:"+event.values[2]+"\n";
tvOrientation.setText(orientation);
break;
}
}
@Override
publicvoidonAccuracyChanged(Sensorsensor,intaccuracy){
}
}
PS:这里获得的只是传感器采集数据,还需要对数据分析,变成有用的信息。
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android操作SQLite数据库技巧总结》、《Android操作json格式数据技巧总结》、《Android资源操作技巧汇总》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。