欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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