zoukankan      html  css  js  c++  java
  • Android开发之方向传感器的使用  (2011-10-13 20:56:05)转载▼

    Android开发之方向传感器的使用

      (2011-10-13 20:56:05)
    Android中的方向传感器在生活中是一个很好的应用,典型的例子是指南针的使用,我们先来简单介绍一下传感器中三个参数x,y,z的含义,以一幅图来说明。

    Android开发之方向传感器的使用                                     图 1 
    补充说明:图中的坐标轴x,y,z和传感器中的X,Y,Z没有任何联系!
    如上图所示,绿色部分表示一个手机,带有小圈那一头是手机头部
    传感器中的X:如上图所示,规定X正半轴为北,手机头部指向OF方向,此时X的值为0,如果手机头部指向OG方向,此时X值为90,指向OH方向,X值为180,指向OE,X值为270

    传感器中的Y:现在我们将手机沿着BC轴慢慢向上抬起,即手机头部不动,尾部慢慢向上翘起来,直到AD跑到BC右边并落在XOY平面上,Y的值将从0~180之间变动,如果手机沿着AD轴慢慢向上抬起,即手机尾部不懂,直到BC跑到AD左边并且落在XOY平面上,Y的值将从0~-180之间变动,这就是方向传感器中Y的含义。

    传感器中的Z:现在我们将手机沿着AB轴慢慢向上抬起,即手机左边框不动,右边框慢慢向上翘起来,直到CD跑到AB右边并落在XOY平面上,Z的值将从0~180之间变动,如果手机沿着CD轴慢慢向上抬起,即手机右边框不动,直到AB跑到CD左边并且落在XOY平面上,Z的值将从0~-180之间变动,这就是方向传感器中发Z的含义。

    了解了方向传感器中X,Y,Z的含义之后下面我们就开始学习如何使用
    首先我们创建一个传感器管理器和一个传感器监听器,管理器用来管理传感器以及创建各种各样的传感器,监听器用来监视传感器的变化并且进行相应的操作
    private SensorManager sensorManager;
    private MySensorEventListener mySensorEventListener;
    mySensorEventListener= new MySensorEventListener();//这个监听器当然是我们自己定义的,在方向感应器感应到手机方向有变化的时候,我们可以采取相应的操作,这里紧紧是将x,y,z的值打印出来
    private final class MySensorEventListener implements  SensorEventListener{

    @Override
    //可以得到传感器实时测量出来的变化值
    public void onSensorChanged(SensorEvent event) {
    //方向传感器
    if(event.sensor.getType()==Sensor.TYPE_ORIENTATION){
    //x表示手机指向的方位,0表示北,90表示东,180表示南,270表示西
    float x = event.values[SensorManager.DATA_X];
    float y = event.values[SensorManager.DATA_Y];
    float z = event.values[SensorManager.DATA_Z];
    //tv_orientation是界面上的一个TextView标签,不再赘述
    tv_orientation.setText("Orientation:"+x+","+y+","+z);
    }
    }

    我们在onResume方法中创建一个方向传感器,并向系统注册监听器
    protected void onResume() {
        Sensor sensor_orientation=sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
        sensorManager.registerListener(mySensorEventListener,sensor_orientation, SensorManager.SENSOR_DELAY_UI);
    super.onResume();
    }
    最后我们在onPause()中注销所有传感器的监听,释放方向感应器资源!
    protected void onPause() {
    //注销所有传感器的监听
    sensorManager.unregisterListener(mySensorEventListener);
    super.onPause();
    }
    到此,有关方向传感器的介绍完毕!
      有关本课程的Eclipse工程文件源码,点此下载





  • 相关阅读:
    Element Pagination分页组件 二次封装
    vue 发送短信验证码倒计时
    生成动态海报,带二维码
    H5九宫格抽奖,亲测可用
    elementui el-select使用远程搜索单选,输入内容不会触发remote-method
    日期格式转换,转换格式YYYY-MM-DD HH:mm:ss
    bignumber.js是一款用于任意精度十进制和非十进制算术的JavaScript库
    element table切换分页不勾选的自带方法
    密码强度校验
    webdriver-设置代理
  • 原文地址:https://www.cnblogs.com/Jxiaobai/p/6618388.html
Copyright © 2011-2022 走看看