android 陀螺仪简单的使用
16lz
2021-01-23
参考这篇博文
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轴的话把手机放平了然后旋转手机就会有很大的数值变化了
更多相关文章
- android获取手机信息以及服务商信息
- JS判断客户端是否是iOS或者Android手机移动端
- Android加速度传感器数值的过滤
- 2010.12.26——— android 获得手机号码 和 IMEI号 等
- 移动端判断是android手机还是ios手机
- 【OSC手机App技术解析】- Android完全退出程序
- Android Studio 真机调试连接手机
- 手机操作系统开源软件
- 【 Android】使手机屏幕常亮,不进入待机状态