zoukankan      html  css  js  c++  java
  • Android重力感应器Sensor编程

    添加当重力变化时的处理函数
    在创建监听器时调用的函数 doSomething(x, y, z) 是自己定义的方法。
    当手机倾斜方向改变时,监听器会调用该方法。
    我们要做的,就是填充该方法,用于在重力发生变化时进行我们自己的处理。
    当 x=y=0 时,手机处于水平放置状态。
    当 x=0 并且 y>0 时,手机顶部的水平位置要大于底部,也就是一般接听电话时手机所处的状态。
    当 x=0 并且 y<0 时,手机顶部的水平位置要小于底部。手机一般很少处于这种状态。
    当 y=0 并且 x>0 时,手机右侧的水平位置要大于左侧,也就是右侧被抬起。
    当 y=0 并且 x<0 时,手机右侧的水平位置要小于左侧,也就是左侧被抬起。
    当 z=0 时,手机平面与水平面垂直。
    当 z>0 时,手机屏幕朝上。
    当 z<0 时,手机屏幕朝下。
    //1、取得重力感应器Sensor对象
    //在 Activity 中定义以下成员变量:
    private SensorManager mManager = null;
    private Sensor mSensor = null;
    //以下代码加入到 onCreate() 方法中:
    mManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    mSensor = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    //2、创建监听器
    //在 Activity 中定义以下成员变量:
    private SensorEventListener mListener = null;
    //以下代码加入到 onCreate() 方法中:
    mListener = new SensorEventListener() {
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }
    public void onSensorChanged(SensorEvent event) {
    float x = event.values[SensorManager.DATA_X];
    float y = event.values[SensorManager.DATA_Y];
    float z = event.values[SensorManager.DATA_Z];
    doSomething(x, y, z);
    }
    };
    //3、注册监听器
    //以下代码加入到 onResume() 方法中:
    mManager.registerListener(mListener, mSensor, SensorManager.SENSOR_DELAY_GAME);
    //这里 SENSOR_DELAY_GAME 还可以是以下常量:
    //SENSOR_DELAY_FASTEST
    //SENSOR_DELAY_UI
    //SENSOR_DELAY_NORMAL
    //4、取消监听器
    //以下代码加入到 onPause() 方法中:
    mManager.unregisterListener(mListener);
  • 相关阅读:
    LeetCode 242. Valid Anagram (验证变位词)
    LeetCode 205. Isomorphic Strings (同构字符串)
    LeetCode 204. Count Primes (质数的个数)
    LeetCode 202. Happy Number (快乐数字)
    LeetCode 170. Two Sum III
    LeetCode 136. Single Number (落单的数)
    LeetCode 697. Degree of an Array (数组的度)
    LeetCode 695. Max Area of Island (岛的最大区域)
    Spark中的键值对操作
    各种排序算法总结
  • 原文地址:https://www.cnblogs.com/top5/p/2336495.html
Copyright © 2011-2022 走看看