android 磁场传感器 罗盘,Android开发获取重力加速度和磁场强度的方法

本文实例讲述了Android开发获取重力加速度和磁场强度的方法。分享给大家供大家参考,具体如下:

Android获取重力加速度和磁场强度主要依靠:

Sensor.getRotationMatrix (float[] R, float[] I, float[] gravity, float[] geomagnetic)

输入数据:

gravity为重力传感器测得的重力加速度float[3];

geomagnetic为罗盘传感器测得的地磁数据float[3];

输出数据:

R为通过这个方法计算得到的从手机的设备到坐标系到真实世界坐标系的转换矩阵

I为从将地磁数据转换到重力数据所在坐标的旋转矩阵

[0 0 g] = R * gravity (g = 重力加速度)

[0 m 0] = I * R * geomagnetic (m = 磁场强度)

下面是我做的结果图

b53917b719e90efc922e4f131406ec65.png

核心部分代码如下:

public class MainActivity extends AppCompatActivity implements SensorEventListener {

private static final String TAG = "CompassActivity";

private SensorManager sensorManager;

//记录rotationMatrix矩阵值

private float[] r = new float[9];

private float[] gravity = null;

private float[] geomagnetic = null;

private float[] I=new float[9];

private Handler handler=new Handler(){

@Override

public void handleMessage(Message msg) {

if(gravity!=null&&geomagnetic!=null)

{

if(SensorManager.getRotationMatrix(r, I, gravity, geomagnetic)) {

float gri = gravity[0] * r[6] + gravity[1] * r[7] + gravity[2] * r[8];

float h= (I[3]*r[0]+I[4]*r[3]+I[5]*r[6])*geomagnetic[0]+

(I[3]*r[1]+I[4]*r[4]+I[5]*r[7])*geomagnetic[1]+

(I[3]*r[2]+I[4]*r[5]+I[5]*r[8])*geomagnetic[2];

TextView textView = (TextView) findViewById(R.id.textView);

textView.setText("重力加速度" + gri + "\n"+"磁场强度" + h + "\n");

}

}

}

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

}

@Override

public 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;

}

@Override

public 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 SimplifiableIfStatement

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

@Override

public void onSensorChanged(SensorEvent sensorEvent) {

switch (sensorEvent.sensor.getType()){

case Sensor.TYPE_ACCELEROMETER:

gravity=sensorEvent.values;

handler.sendEmptyMessage(0);

break;

case Sensor.TYPE_MAGNETIC_FIELD:

geomagnetic=sensorEvent.values;

handler.sendEmptyMessage(0);

break;

default:break;

}

}

@Override

public void onAccuracyChanged(Sensor sensor, int i) {

}

private void showMessage(String message){

View view=findViewById(R.id.fab);

final Snackbar snackbar=Snackbar.make(view, message, Snackbar.LENGTH_INDEFINITE);

snackbar.setAction("关闭", new View.OnClickListener() {

@Override

public void onClick(View view) {

snackbar.dismiss();

}

});

snackbar.show();

}

@Override

protected void onPause() {

super.onPause();

sensorManager.unregisterListener(this);

}

@Override

protected void onResume() {

super.onResume();

Sensor sensor1=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

sensorManager.registerListener(this,sensor1,SensorManager.SENSOR_DELAY_UI);

Sensor sensor2=sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);

sensorManager.registerListener(this,sensor2,SensorManager.SENSOR_DELAY_UI);

}

}

希望本文所述对大家Android程序设计有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382934.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android spinner位置,在Android中的Spinner中没有选择位置0

我创建了一个有三个项目的微调器日常每周每月一次我在我的java文件中执行了以下操作:navSpinner new ArrayList();navSpinner.add(new SpinnerNavItem(getResources().getString(R.string.dailyview)));navSpinner.add(new SpinnerNavItem(getResources().getStrin…

android tombstone发生过程,Android Tombstone解决步骤

这周和同事一起解了个tombstone的bug, 记录下分析的过程&#xff0c;免得以后又忘记。。。1>log的分析pid: 122, tid: 14745, name: Binder_2 >>> /system/bin/mediaserver <<<signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000058eax 00000…

优酷android手机客户端for,优酷手机客户端

优酷手机客户端官方最新版是官方出品的最新版播放软件&#xff0c;该软件上面汇聚了其他视频app上没有的精彩节目&#xff0c;全国各大精彩剧集与电影免费首播&#xff0c;更有独特高清蓝光画质播放&#xff0c;想要体验的朋友可以来欣赏一下!软件特点1、高清流畅播放2、国内外…

html在线编辑器 asp.net,ASP.NET网站使用Kindeditor富文本编辑器配置步骤

1. 下载编辑器下载 KindEditor 最新版本&#xff0c;下载页面: http://www.kindsoft.net/down.php2. 部署编辑器解压 kindeditor-x.x.x.zip 文件&#xff0c;将editor文件夹复制到web目录下3、在网页中加入(ValidateRequest"false")4、引入脚本文件(XXX部分需要修改)…

html表格中绑定显示xml文档内容的简单实例,JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)...

本文实例讲述了JS读取XML文件数据并以table形式显示数据的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;先看xml文件&#xff1a;张秋丽女 18李文才男 31李斯文男 22马英女 25孙红雷男 32欧阳俊雄男 28江琳女 23小小女 22aspx页面代码&#xff1a;function load…

html中通过定位 实现下拉,JS+CSS相对定位实现的下拉菜单

本文实例讲述了JSCSS相对定位实现的下拉菜单。分享给大家供大家参考。具体如下&#xff1a;这里使用的是相对定位&#xff0c;不过效果还可以&#xff0c;用时候再修整一下&#xff0c;这个只是实现了大概功能&#xff0c;还有许多细节没有修饰。运行效果截图如下&#xff1a;在…

html页面包含头文件,Web前端技术:HTML部分---Head标签中包含的头文件标签,body标签包含的内部标签...

1、Head标签中包含的 头文件标签的作用&#xff1a;(1)title标签&#xff1a;定义网页的标题。(2)meta标签&#xff1a;一般用于定义页面的特殊信息&#xff0c;例如页面的关键字、页面描述等(3)link标签&#xff1a;用于引入外部样式文件(CSS 文件)。(4)style标签&#xff1a;…

爬虫图片href是html图片,xpath爬虫实例,爬取图片网站百度盘地址和提取码

某套图网站&#xff0c;套图以封面形式展现在页面&#xff0c;需要依次点击套图&#xff0c;点击广告盘链接&#xff0c;最后到达百度网盘展示页面。这一过程通过爬虫来实现&#xff0c;收集百度网盘地址和提取码&#xff0c;采用xpath爬虫技术1、首先分析图片列表页&#xff0…

HTML如何做个播放器图表,Web绘图神器之ECharts-ts文件播放器

前言最近在做一个项目需要用到大量的图形报表来展示数据。就去对比了一些前端图形报表框架&#xff0c;有Highcharts、Echarts、Three.js。发现Three.js比较笨重&#xff0c;不太适合数据展示&#xff0c;做前端动画还是比较好。而highcharts、echarts比较轻量级拿来就用比较方…

微型计算机主存可以分为,计算机基础试题 (含答案)

计算机基础试题 (含答案)一、填空题(每空1分&#xff0c;共30分)1、计算计的软件系统通常分成______软件和______软件。2、字长是计算机______次能处理的______进制位数。3、1KB______B;1MB______KB。4、计算机中&#xff0c;中央处理器CPU由______和______两部分组成。5、CPU按…

90年代微型计算机,版本控制如何在80年代和90年代的当今微型计算机上工作?

您必须在当时的通用基础结构中看到这一点。在80年代初期&#xff0c;IBM发布了“个人计算机”&#xff0c;您可以从字面上理解它。开发PC应用程序的最常见方法是一个人创建某些东西并试图出售它。因此&#xff0c;每个发行版本一张软盘可能很常见。您可以购买一些漂亮的彩色标签…

全国英语计算机9月统考2019,2019年9月网络教育统考《计算机应用基础》模拟题6...

本文为大家提供2019年9月网络教育统考《计算机应用基础》模拟题6&#xff0c;有需要的考生请自取。网络教育本科全国统考《计算机应用基础》模拟题6一、单选题1、第一台电子数字计算机诞生于 ______。A &#xff1a; 麻省理工学院B &#xff1a; 哈佛大学C &#xff1a; 宾夕法…

计算机网络原码反码补码,计算机的原码和反码及补码到底是什么

数据在计算机里面都是以0和1存储和运算的&#xff0c;这是冯诺依曼体系的基础。比如一个数在计算机中若有正负之分&#xff0c;则用一个数的最高位(符号位)用来表示它的正负&#xff0c;其中0表示正数&#xff0c;1表示负数。原码就是整数绝对值的二进制形式&#xff0c;为了解…

计算机组装活动口号,广教育、多技能、求发展喜迎计算机系第五届电脑文化节...

在深入学习实践科学发展观&#xff0c;改革教育教学模式&#xff0c;迎接高职院校人才培养评估工作的今天&#xff0c;为贯彻以人为本理念&#xff0c;全方位服务学生&#xff0c;培养学生综合技能&#xff0c;本学期计算机系举办第五届电脑文化节&#xff0c;举办电脑文化节是…

关于计算机应用基础问题,《计算机应用基础》习题及问题详解

《计算机应用基础》习题及问题详解 (17页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;19.90 积分实用文档第一章 计算机基础知识填空题&#xff1a;1. 信息技术在现代工业工程中的应用十分广泛&…

html 微博下拉菜单,jQuery实现模仿微博下拉滚动条加载数据效果

本文实例讲述了jQuery实现模仿微博下拉滚动条加载数据效果。分享给大家供大家参考&#xff0c;具体如下&#xff1a;滚动条距离底部$(function () {var i 4;$(window).bind("scroll", function (event) {//滚动条到网页头部的 高度&#xff0c;兼容ie,ff,chromevar …

怎么用计算机计算方位角,坐标方位角连续计算 fx-5800计算器编程

摘要&#xff1a;利用fx-5800计算器可编程的特点&#xff0c;编写坐标方位角连续计算程序&#xff0c;使计算方位角的工作变得简单易行&#xff0c;并且工作量大幅度降低。关键词&#xff1a;方位角&#xff1b;左侧转角&#xff1b;导线Abstract: using fx-5800 calculator pr…

yii html 添加下拉框,php – Yii2下拉列表:在我的选项中添加像data-food =“…”这样的html标记...

我正在使用Yii2构建应用程序.我使用Yii2提供的Html Helper生成下拉列表&#xff1a; Html::dropDownList(food, $food_id, $foodList, [id>food-select]); ?>其中$food_id是默认选择的选项,$foodList是一个包含表示选项值和文本的键值对的数组.它工作得很好,但我需要在我…

html是网页技术,Html静态网页技术小结

《Html静态网页技术小结》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《Html静态网页技术小结(4页珍藏版)》请在人人文库网上搜索。1、Html静态网页技术小结l Html入门n 所有的html网页都是有标签(W3C规定标准标签)n 所有的标签使用标准&#xff1a; &#xff0c;而…

超级计算机 极光,万亿次极光系列代数运算微处理器来袭,国产超算已经一骑绝尘?-控制器/处理器-与非网...

在一日千里、风起云涌的信息时代&#xff0c;谁掌握了核心芯片技术&#xff0c;谁就占据了引领信息产业发展潮流的制高点。长期以来中国一直饱受缺芯之痛&#xff0c;每年都要花费超过 2000 亿美元的资金用于从西方国家购买芯片&#xff0c;规模甚至超过了石油、铁矿石等大宗资…