文档章节

Android开发之方向传感器的使用

Airship
 Airship
发布于 2015/03/05 15:18
字数 827
阅读 6285
收藏 0
点赞 0
评论 0

Android中的方向传感器在生活中是一个很好的应用,典型的例子是指南针的使用,我们先来简单介绍一下传感器中三个参数x,y,z的含义,以一幅图来说明。

图 1 

补充说明:图中的坐标轴x,y,z和传感器中的X,Y,Z没有任何联系!

如上图所示,绿色部分表示一个手机,带有小圈那一头是手机头部

传感器中的X:如上图所示,规定X正半轴为北,手机头部指向OF方向,此时X的值为0,如果手机头部指向OG方向,此时X值为90,指向OH方向,X值为180,指向OE,X值为270


传感器中的Y:现在我们将手机沿着BC轴慢慢向上抬起,即手机头部不动,尾部慢慢向上翘起来,直到AD跑到BC右边并落在XOY平面上,Y的值将从0~180之间变动,如果手机沿着AD轴慢慢向上抬起,即手机尾部不懂,直到BC跑到AD左边并且落在XOY平面上,Y的值将从0~-180之间变动,这就是方向传感器中Y的含义。


传感器中的Z:现在我们将手机沿着AB轴慢慢向上抬起,即手机左边框不动,右边框慢慢向上翘起来,直到CD跑到AB右边并落在XOY平面上,Z的值将从0~90之间变动,如果手机沿着CD轴慢慢向上抬起,即手机右边框不动,直到AB跑到CD左边并且落在XOY平面上,Z的值将从0~-90之间变动,这就是方向传感器中发Z的含义。


了解了方向传感器中X,Y,Z的含义之后下面我们就开始学习如何使用

首先我们创建一个传感器管理器和一个传感器监听器,管理器用来管理传感器以及创建各种各样的传感器,监听器用来监视传感器的变化并且进行相应的操作

private SensorManager sensorManager;

private MySensorEventListener mySensorEventListener;

mySensorEventListener= new MySensorEventListener();//这个监听器当然是我们自己定义的,在方向感应器感应到手机方向有变化的时候,我们可以采取相应的操作,这里紧紧是将x,y,z的值打印出来

private final class MySensorEventListener implements  SensorEventListener{


@Override

//可以得到传感器实时测量出来的变化值

public void onSensorChanged(SensorEvent event) {

//方向传感器

if(event.sensor.getType()==Sensor.TYPE_ORIENTATION){

//x表示手机指向的方位,0表示北,90表示东,180表示南,270表示西

float x = event.values[SensorManager.DATA_X];

float y = event.values[SensorManager.DATA_Y];

float z = event.values[SensorManager.DATA_Z];

//tv_orientation是界面上的一个TextView标签,不再赘述

tv_orientation.setText("Orientation:"+x+","+y+","+z);

}

}


我们在onResume方法中创建一个方向传感器,并向系统注册监听器

protected void onResume() {

    Sensor sensor_orientation=sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);

    sensorManager.registerListener(mySensorEventListener,sensor_orientation, SensorManager.SENSOR_DELAY_UI);

super.onResume();

}

最后我们在onPause()中注销所有传感器的监听,释放方向感应器资源!

protected void onPause() {

//注销所有传感器的监听

sensorManager.unregisterListener(mySensorEventListener);

super.onPause();

}

到此,有关方向传感器的介绍完毕!
  有关本课程的Eclipse工程文件源码,点此下载

本文转载自:http://blog.sina.com.cn/s/blog_5a48dd2d0100u4lx.html

共有 人打赏支持
Airship
粉丝 34
博文 852
码字总数 18996
作品 0
南京
高级程序员
android应用开发全程实录-实现甩动拨打和挂断电话

android应用开发全程实录-实现甩动拨打和挂断电话 今天继续给大家带来《Android应用开发全程实录》中的章节,这部分是讲传感器中的一个实例。 通过上面的例子我们学会了如何获得某种类型的传...

紫地瓜
2012/10/26
0
0
浅入浅出Android(006):实时获取加速计Accelerometer的信息

1、关于加速计Accelerometer 这篇文章对传感器做了些讲解。 Android手机一般会自带几个传感器,加速计Accelerometer是常见的一种,一些游戏APP就用到了加速计。加速计计算的是三个方向上加速...

樂天
2014/05/11
0
1
【Android游戏开发十八】解放手指,利用传感器开发游戏!(本文讲解在SurfaceView中用重力传感器控制圆球的各方向移动)

李华明Himi 原创,转载务必在明显处注明: 转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/344.html 很多童鞋说我的代码运行后,点击home或者back后会程序异常,...

迷途d书童
2012/03/19
0
0
简单链接Simplelink 传感器标签SensorTag

传感器标签现在支持iBeacon技术 为了让你的传感器标签升级到与iBeancon技术兼容,你需要和苹果公司签约一个iBeacon许可,然后你可以请求访问软件,通过点击这里http://www.ti.com/tool/sens...

刘小米
2014/11/11
0
0
Android AndroidManifest 清单文件以及权限详解

每个Android应用都需要一个名为AndroidManifest.xml的程序清单文件,这个清单文件名是固定的并且放在每个Android应用的根目录下。它定义了该应用对于Android系统来说一些非常重要的信息。And...

程序袁_绪龙
2015/01/13
0
0
AndroidThings之基础一 基本概念

转载自:https://blog.csdn.net/weixin41636248/article/details/79069994 Android Things是什么 一句话说,AndroidThings就是让开发者可以使用Android开发工具开发嵌入式设备。 If you can...

qq_28831197
05/09
0
0
Android 第五课——Activity基础

1 Activity 概念 呈现在手机上的视图界面,类似于web程序的Servlet,它的父类是Context(上下文)。 2 Activity 创建 1)新建一个继承Activity的类 2)重写onCreate方法,这个方法会在Activ...

learn_more
2015/01/01
0
0
Android应用开发实战GPS与加速度传感器

Android应用开发实战GPS与加速度传感器 本文将为读者详细介绍Android中增强现实应用程序的两个关键元素:GPS与加速度传感器。   所需工具   下面是本文中将用到的工具: Android SDK 1....

庸人谷
2013/01/04
0
0
Android 2.3 NDK的新特性

This release of the NDK includes many new APIs, most of which are introduced to support the development of games and similar applications that make extensive use of native code.......

晨曦之光
2012/03/13
0
0
谷歌Android things物联网硬件接入阿里云IoT物联网套件实战

aliyun-iot-androidthings-nxp 谷歌Android things物联网硬件接入阿里云IoT物联网套件云端实战 项目代码 https://github.com/iot-blog/aliyun-iot-android-things-nxp 1.硬件设备 android th......

wongxmig
05/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

PostgresSQL 查看当前schema下所有的函数/存储过程

selectroutine_name from information_schema.routineswhere routine_catalog = 'YourDBName'and routine_schema = 'YourSchemaName'order by routine_name;...

Leyxiao
3分钟前
0
0
去除bootstrapValidator 的校验结果

$("#form").data('bootstrapValidator').destroy();//会报没有这个方法,很奇怪 $('#form').data('bootstrapValidator',null); $('#form').bootstrapValidator();...

暗中观察
4分钟前
0
0
java环境安装

1、首先下载jdk安装包,一般去官网,官网需要登录才可以下载。 2、下载完成双击运行,想改路径改下路径,比较简单。安装jdk安装完,会弹出个窗口,提示开始安装jre的位置,我这里窗口比较奇葩...

朝如青丝暮成雪
6分钟前
0
0
Linux Command

Copy with progress rsync -r --progress source dest

Lyle_W
7分钟前
0
0
个灯数据营销,帮你找回被浪费的广告费

近日,个灯受邀出席被喻为广告营销业界的年度盛会——第八届梅花网传播业大展北京站的活动。 在展会上,个灯总经理严雯婷女士带来了《数据增能,营销智能》的主题演讲,以理论与实践相结合的...

个推
9分钟前
0
0
java的反射机制理解

一、概念说明 java的反射机制,是在运行状态下,可以动态获取任意一个类的属性和方法;可以动态调用一个对象任意方法; 二、反射相关类 java.lang.Class; //类 java.lang.re...

盼望明天
13分钟前
0
0
nginx反向代理-多端口映射

代码解释 1.1 http:www.baidu.test.com默认是80,访问“/”利用反向代理,然后访问本地8083; 1.2 8083代表本地的前端工程访问地址,前端需要访问后台数据,”/”,继续代理到后台地址9803; ...

lilugirl
14分钟前
0
0
Jfinal使用log4j2打印日志

1,添加maven配置 <properties><log4j2.version>2.11.0</log4j2.version><slf4j.version>1.7.25</slf4j.version></properties> <!--slf4j及log4j2日志 --><dependency> ......

iborder
15分钟前
0
0
如何在Rancher 2.0上快速部署Datadog

Datadog是一种流行的托管监控解决方案,用于聚合和分析分布式系统的指标和事件。从基础架构集成到协作仪表板,Datadog为用户提供了一个简洁的单一窗格视图,用户可以快速查看对其最重要的信息...

RancherLabs
18分钟前
0
0
Java示例演示Functor 和monad

This article was initially an appendix in our Reactive Programming with RxJavabook. However introduction to monads, albeit very much related to reactive programming, didn't suit......

Quan全
36分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部