参考这篇博文

android 传感器使用与开发---陀螺仪传感器

没啥好说的,就是把陀螺仪的偏移量给计算出来拿来用

 

public class MainActivity extends AppCompatActivity {            @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);        mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);        mSensorManager.registerListener(mSensorEventListener, mSensor, SensorManager.SENSOR_DELAY_GAME);    }    private SensorManager mSensorManager;    private Sensor mSensor;        @Override    protected void onResume() {        super.onResume();        mSensorManager.registerListener(mSensorEventListener, mSensor, SensorManager.SENSOR_DELAY_GAME);    }    @Override    protected void onPause() {        super.onPause();        mSensorManager.unregisterListener(mSensorEventListener);    }    private float timestamp = 0;    private float angle[] = new float[3];    private static final float NS2S = 1.0f / 1000000000.0f;    private float gx = 0,gy = 0,gz = 0;    private SensorEventListener mSensorEventListener = new SensorEventListener() {        @Override        public void onSensorChanged(SensorEvent sensorEvent) {            if (sensorEvent.accuracy != 0) {                int type = sensorEvent.sensor.getType();                switch (type) {                    case Sensor.TYPE_GYROSCOPE:                        if (timestamp != 0) {                            final float dT = (sensorEvent.timestamp - timestamp) * NS2S;                            angle[0] += sensorEvent.values[0] * dT;                            angle[1] += sensorEvent.values[1] * dT;                            angle[2] += sensorEvent.values[2] * dT;                            float anglex = (float) Math.toDegrees(angle[0]);                            float angley = (float) Math.toDegrees(angle[1]);                            float anglez = (float) Math.toDegrees(angle[2]);                                                        if(gx != 0){                                float c = gx - anglex;                                if(Math.abs(c) >= 0.5 ){                                    Log.d("================", "anglex------------>" + (gx - anglex));                                    gx = anglex;                                }                            }else{                                gx = anglex;                            }                            if(gy != 0){                                float c = gy - angley;                                if(Math.abs(c) >= 0.5 ){                                    Log.d("================", "anglex------------>" + (gy - angley));                                    gy = angley;                                }                            }else{                                gy = angley;                            }//                            if(gz != 0){//                                Log.d("================", "anglex------------>" + (gz - anglez));//                            }                                                        gz = anglez;                        }                        timestamp = sensorEvent.timestamp;                        break;                }            }        }        @Override        public void onAccuracyChanged(Sensor sensor, int i) {        }    };}

 

z轴的话把手机放平了然后旋转手机就会有很大的数值变化了

 

 

 

 

 

 

 

更多相关文章

  1. android获取手机信息以及服务商信息
  2. JS判断客户端是否是iOS或者Android手机移动端
  3. Android加速度传感器数值的过滤
  4. 2010.12.26——— android 获得手机号码 和 IMEI号 等
  5. 移动端判断是android手机还是ios手机
  6. 【OSC手机App技术解析】- Android完全退出程序
  7. Android Studio 真机调试连接手机
  8. 手机操作系统开源软件
  9. 【 Android】使手机屏幕常亮,不进入待机状态

随机推荐

  1. Android(安卓)多渠道打包
  2. Android实用代码片段(一)
  3. Android之Spinner解析
  4. android:启动界面设计
  5. Android(安卓)Message里传送的数据
  6. 2013.12.04 (3)——— android SlidingMenu
  7. Android(安卓)最简单的SD卡文件遍历程序
  8. Android之AlertDialog Demo(20190115)
  9. android 悬浮球 (所有界面可用) 开发
  10. 【Android】Http请求