文档章节

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

Airship
 Airship
发布于 2015/03/05 15:18
字数 827
阅读 6330
收藏 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
粉丝 39
博文 936
码字总数 19883
作品 0
南京
高级程序员
私信 提问
深入探讨 Android 传感器

Android 是一个面向应用程序开发的富平台,它拥有许多具有吸引力的用户界面元素和数据管理功能。Android 还提供了一组丰富的接口选项。在本文中,学习如何配合使用 Android 的各种传感器选项...

红薯
2009/07/20
7.9K
9
《Android应用开发揭秘》传感器和语音识别

第9章 Android特色开发 Android 是一个面向应用程序开发的丰富平台,它拥有许多具有吸引力的用户界面元素、数据管理和网络应用等优秀的功能。Android 还提供了很多颇具特色的接口。本章我们将...

鉴客
2011/12/01
3.3K
4
Android传感器概述(一)

本文译自:http://developer.android.com/guide/topics/sensors/sensors_overview.html 大多数的Android设备都有内置的测量运动、方向、和各种环境条件的传感器。这些传感器具有提供高精度和...

长平狐
2012/10/16
148
0
如何改变Activity的显示方向

本示例演示如何通过Activity了的setRequestedOrientation()方法来设定Activity的显示方向。 本示例在Eclipse上编译测试。 1. 定义清单文件(AndroidManifest.xml) 2. 定义字符串资源(strin...

长平狐
2012/10/16
399
0
android应用开发全程实录-实现甩动拨打和挂断电话

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

紫地瓜
2012/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

漏洞防御与修复工作

漏洞管理工作是企业安全建设必不可少的一环,在风险管理工作中,漏洞管理能够防患于未然,企业对漏洞管理有着广泛的基础建设和实践经验。但随着攻防技术的发展,传统漏洞管理的安全技术和管理...

linuxprobe16
17分钟前
0
0
MicroPython技术及应用前景

1 Micropython技术是什么? MicroPython极精简高效的实现了Python3语言。它包含Python标准库的一小部分,能在单片机和受限环境中运行。 1.1 MicroPython发展 由剑桥大学的理论物理学家乔治....

bodasisiter
23分钟前
0
0
跟我学Spring Cloud(Finchley版)-13-通用方式使用Hystrix

本节详细讲解使用Hystrix的通用方式。 简介 Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。Hystrix主要...

周立_ITMuch
32分钟前
0
0
🛠️Hanjst/汉吉斯特更新加JavaScript运行时优化等

这是 Hanjst/汉吉斯特 发布以来的首个主要升级更新版本。这次的主要升级更新的内容包括移除HTML Comments注释行, 优化在 Hanjst include模板文件时的JavaScript运行时环境。 Hanjst 在设计和...

wadelau
今天
2
0
OSChina 周六乱弹 —— 舔狗是没有好下场的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @我没有抓狂 :#今天听什么# #今天听这个# 分享 Nirvana 的歌曲《Smells Like Teen Spi...》 《Smells Like Teen Spi...》- Nirvana 手机党少...

小小编辑
今天
494
13

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部