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程序设计有所帮助。