Android指南针之加速度传感器地磁传感器
由于andorid不推荐用传统的方向传感器,推荐用加速度传感器和地磁传感器来构造得到方向传感器的数据,其实主要是z轴的旋转角度。代码如下:
public class MainActivity extends Activity {private ImageView compass;private SensorManager sensorManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);compass = (ImageView) findViewById(R.id.compass);sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);Sensor AccelerometerSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);Sensor magneticSensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);sensorManager.registerListener(sensorEventListener,magneticSensor,SensorManager.SENSOR_DELAY_GAME);sensorManager.registerListener(sensorEventListener,AccelerometerSensor,SensorManager.SENSOR_DELAY_GAME);}private SensorEventListener sensorEventListener = new SensorEventListener() {float[] accelerometerValues = new float[3];float[] maneticValues = new float[3];private float lastDegree;@Overridepublic void onSensorChanged(SensorEvent sensorEvent) {if (sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER){accelerometerValues = sensorEvent.values.clone();}else if (sensorEvent.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD){maneticValues = sensorEvent.values.clone();}float[] R = new float[9];float[] values = new float[3];SensorManager.getRotationMatrix(R,null,accelerometerValues,maneticValues);SensorManager.getOrientation(R,values);
//获取方向角度,可根据需要进行应用float rotateDegree = -(float) Math.toDegrees(values[0]);if (Math.abs(rotateDegree - lastDegree) > 1){RotateAnimation animation = new RotateAnimation(lastDegree,rotateDegree, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);animation.setFillAfter(true);compass.startAnimation(animation);lastDegree = rotateDegree;}}@Overridepublic void onAccuracyChanged(Sensor sensor, int i) {}};@Overrideprotected void onDestroy() {if (sensorManager != null){sensorManager.unregisterListener(sensorEventListener);}super.onDestroy();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.menu_main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();//noinspection SimplifiableIfStatementif (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}
}
Android指南针之加速度传感器地磁传感器相关推荐
- Android指南针之加速度传感器地磁传感器-android学习之旅(67)
由于andorid不推荐用传统的方向传感器,推荐用加速度传感器和地磁传感器来构造得到方向传感器的数据,其实主要是z轴的旋转角度 具体代码示例 代码如下 public class MainActivit ...
- 博世传感器调试笔记(三)加速度及地磁传感器BMC156
一. 器件简介: 1. BMC 156是一款整合三轴地磁传感器与三轴(12bit)加速度传感器于一体的传感器,以BMC 150 电子罗盘模块为基础, 并与Bosch Sensortec 2 ...
- 传感器之方向:使用加速度传感器和地磁传感器共同实现
布局很简单: activity: /*** 方向加速度:使用加速度传感器和地磁传感器共同实现.* 此模拟简易指南针功能.*/public class ActOrientationSensor exte ...
- Android GPS及地磁传感器 API
Android 提供的位置包括经纬度和时间戳,可选地包含高度和方位,高度以WGS84椭球体为参照,方位以真北为参考. 地磁传感器以磁北为北.有2种传感器可提供方位信息:地磁场(Geomagnetic) ...
- android 三轴加速度传感器【转】
一.手机中常用的传感器 在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用,具体如下:(Sensor类) #define SENSOR_TYPE_ACCE ...
- 传感器--方向传感器制作指南针
我们根据地磁传感器和加速度传感器来进行当前手机旋转的方向 同时使用一个imageView来展示我们当前的方向的展示,并让其根据手机旋转的角度来旋转指向正确的方向 public class MainAc ...
- 高通AKM8975地磁传感器分析
1. 概述 地磁使用的是AKM8975地磁传感器,其kernel部分的驱动代码路径是\kernel\drivers\ misc\akm8975.c,android的HAL层的路径是qics1003\h ...
- 传感器系列之4.7地磁传感器
4.7地磁传感实验 一.实验目的 1.掌握LPC2378芯片的编程方法 2. 掌握地磁传感器的工作原理 3. 掌握地磁传感器的使用流程 二.实验材料 1.具有USB 串口通讯的PC 机1 台 2.AD ...
- android开发笔记之高级主题—传感器的简单介绍
今天我们开始进入讲解android中的一些高级主题的用法,比如传感器.GPS.NFC.语音和人脸识别等. 这次来对传感器的一个简单介绍: Android平台支持三大类的传感器: 位移传感器 这些传感器 ...
最新文章
- iframe 自动适应高和宽问题 和 其他Frame操作技巧
- 模式设计概述:反应器(Reactor)模式
- 从宇宙、互联网和脑的关系看元宇宙的终极形态
- 不讲武德,拿到户口后立马辞职...
- 立即终止Sleep的线程
- Ubuntu16.04安装jdk8
- 【redismemcached】数据类型、内存管理、数据持久化和集群管理的区别
- 2020牛客多校2 - Exclusive OR(FWT)
- how to deal with error message Failed to create note
- GeneralUpdate20220323里程碑版本发布
- c#中常用集合类和集合接口之接口系列【转】
- java mysql jsp分页代码_JAVA/JSP学习系列之六(MySQL翻页例子)
- 【转载】关联分析中的支持度、置信度和提升度
- charles请求转发_Charles安装与基本操作
- 在 Vs2013中查看类的内部布局
- 2021运营App推广必备的几款工具
- HBase CURD之Put
- JAVA-day09-多线程
- 树莓派3 Android Pie 编译适配
- c语言在bmp图片上写字的函数,在bmp上写字