Android重力感应

Android重力感应
Android重力感应

手机的感应器在Android里边所代表的类是Sensor,你只要看到在android.hardware这个包下边的都是封装的关于一些特殊的硬件方面的类,比如说Camera、Sensor之类的。。一直都很怀疑为什么HTC的Google手机没有前置摄像头。。。怨念啊。。。

PS:虽然是2.1的机子,但是我用的是1.5的SDK。

代码很简单:我们首先要得到一个手机上的传感器。

Java代码

1.SensorManager sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);

这行代码只要用过类似开发的都应该知道是什么。

getSystemService(String name)可以用来返回一个硬件设备的控制器。比如说LocationManage(和GPS相关用来确定位置的)、TelephonyManage(查询电话相关内容,比如说IMEI码)、AudioManager(顾名思义,是视频播放用的)等等。。。具体可以观看SDK文档里边Activity的讲解。https://www.360docs.net/doc/3415306912.html,/int ... d/app/Activity.html

得到重力感应的硬件控制了,然后我们就应该得到一个Sensor了。

Java代码

1.Sensor sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ALL);

关于这个参数。。。其实挺复杂的。。。。我开始用的是TYPE_ALL,出的是XYZ三条轴线的偏移量,至于其他的大家可以看下边:

下边是官方SDK中对于各种类型的解析(粗体红字是我加上去的)

Constants

int TYPE_ACCELEROMETER

A constant describing an accelerometer sensor

type.加速度

int TYPE_ALL A constant describing all sensor types.所有类型,NexusOne 默认为 加速度

int TYPE_GYROSCOPE A constant describing a gyroscope sensor type 回转仪(这个不太懂)

int TYPE_LIGHT A constant describing an light sensor type.光线感应吗

int TYPE_MAGNETIC_FIELD A constant describing a magnetic field sensor type.磁场

int TYPE_ORIENTATION A constant describing an orientation sensor type.定向(指北针)和角度

int TYPE_PRESSURE A constant describing a pressure sensor type 压力计

int TYPE_PROXIMITY A constant describing an proximity sensor type.距离?不太懂

int TYPE_TEMPERATURE A constant describing a temperature sensor type 温度啦

然后就是我们需要即时了解手机的偏转度。以TYPE_ALL 为例子。(其实就是TYPE_ACCELEROMETER )

PS :有时候你的机子并不会拥有这么全的感应装置,这个时候你应该再进行以下判断。比如说: Java 代码

1. Sensor sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_TEMPERATURE);

2.

3. if (sensor == null ){

4. log.w("NO_SERVICE","没有感应温度的感应装置。")

5. ... ...

6. }else {

7. ... ...

8. }

所有最基本的三维坐标系有三个轴:X、Y和Z,这个学过矩阵或者线性代数的都应该知道吧

(~~~~(>_<)~~~~ 我当年线性代数挂了。。。。惨不忍睹啊。。。后来自学DirectX的时候才觉得原来矩阵变换是这么的重要。。而且更重要的是这个一点也不难吗。。。。)

关于手机的XYZ坐标,把你的手机平放到桌子上,横x,纵y,然后z就是屏幕法线。

官方的例子:(直接粘贴的话空格会变小,所以就截图了)

然后我们注册一个Listener,用来监听我们所得到的值的改变。

Java代码

1.SensorEventListener lsn = new SensorEventListener() {

2.public

void onSensorChanged(SensorEvent e) {

3.x = e.values[SensorManager.DATA_X];

4.y = e.values[SensorManager.DATA_Y];

5.z = e.values[SensorManager.DATA_Z];

6.t.setText("x=" + Math.round(x * ROUND_NUMBER) + "," + "y="

7. + Math.round(y * ROUND_NUMBER) + "," + "z="

8. + Math.round(z * ROUND_NUMBER));

9. }

10.

11.public

void onAccuracyChanged(Sensor s, int accuracy) {

12. }

13. };

在这里我把数字放大了,我预先定义了一个变量ROUND_NUMBER,是为了以后用来更改灵敏度的。我取的值是100。

这个就简单了,我们首先声明一个SensorEvent的监听,每当它得到的值改变的时候,我就在一个TextView t上边输出改变了的值。

在这里使用TYPE_ALL返回的值SensorEvent里边的values就是得到的数字。

得到的values默认是一个float[]。也就是说是一个float类型的数组。他在TYPE_ALL的声明下一共返回三个值,分别就是x、y、z轴的值,假如你将手机平放在水平面上,默认分别是0,0,10。(我在网上查到有的人和我得到的数字不一样,有人说是0,0,-10,关于这个我不知道是为什么,如果有人的Gphone 比较多的话可以看看是怎么一回事),而当你将手机垂直立起,显示的应当是0,10,0。

PS:SensorManager里边有很多的有意思的常量,比如说SensorManager.GRAVITY_EARTH是地球的重力加速度,当然也有GRAVITY_MARS火星的,GRAVITY_MOON月球的,最恶搞的还有GRAVITY_DEATH_STAR_I(星球大战里的卫星武器死星I号)。。。。还有一个

GRAVITY_THE_ISLAND,这个不知道是哪里。。。汗。。。难道是《岛》这本书里的世界?还是Neverland?

然后我们可以给Manager注册一个监听。

Java代码

1.sensorMgr.registerListener(lsn, sensor,

2.SensorManager.SENSOR_DELAY_GAME);

三个参数分别是监听,感应装置,和灵敏度。

灵敏度分为:

SENSOR_DELAY_FASTEST最灵敏,快的然你无语

SENSOR_DELAY_GAME游戏的时候用这个,不过一般用这个就够了,和上一个很难看出区别(也许是我的手机CPU高?1GHz的。。。)

SENSOR_DELAY_NORMAL比较慢。

SENSOR_DELAY_UI 最慢的,几乎就是横和纵的区别

也许有些人想要拿这个来练练手了。比如说是现在每天播放的联通iPhone广告里有一个“可以用来测量相框水平”这个广告词。

但是,但是。。。。恩恩。。。。输出的最好还是角度比较好吧?

所以我们改一改,做一个基本的LevelBar。。。没有什么图形界面,只是用来输出。

我们首先注册的Sensor应该改了。。。不是TYPE_ALL,而是TYPE_ORIENTATION !

然后剩下的基本上都一样。SensorEvent返回的values也是三个值的数组。但是,这三个值还是稍微有些不同的,如果你看了输出的值,那么就可能会明白了。

首先是第一个,有些人发现就算是平放在桌面上第一个值也会变,那么,第一个值其实不是轴角度,而是方向。

对了,这就是我在随上边写的指北针!当数字是0的时候,你的手机指向的是正北方向,90的话是东,180是南,270是西。这下子,再加上一个漂亮的图形界面,一个指南针软件就可以出来了吧。

然后是第二个和第三个,就是x,y轴的角度值!对,是角度值而且不用换算。这样子,你可以把屏幕横过来,然后直接输出y轴的角度值了,什么时候他是90度,那么就是水平了!

基于ANDROID传感器的应用设计

学号136312126 苏州市职业大学 毕业设计 题目基于ANDROID传感器的应用设计 学生姓名:夏新德 专业班级:13计算机应用技术3(3G)学院(部):计算机工程学院 校内指导教师:贾震斌(讲师) 校外指导教师:万勇平(工程师) 完成日期:2015年5 月 摘要: 内容主要是关于传感器的内容 和你开题报告的选题内容相似

ABSTRACT 将摘要翻译成英文 关键词:传感器,Android

目录 第1章绪论 1.1课题的研究意义 说一说你这款软件的用途以及设计意义,写的多一点

1.2主要研究内容以及拟解决的问题 开题报告上面有,就像那样写 1.3 第3章技术背景介绍 3.1传感器 3.1.1传感器的介绍 传感器的发展史传感器是一种物理装置或生物器官,能够探测、感受外界的信号、物理条件(如光、热、湿度)或化学组成(如烟雾),并将探知的信息传递给其他装置或器官。国家标准GB7665-87对传感器下的定义是:“能够感受规定的被测量并按照一定的规律转换成可用输出信号的器件或装置,通常由敏感元件和转换元件组成”。这里所说的“可用输出信号”是指便于加工处理、便于传输利用的信号。现在电信号是最易于处理和便于传输的信号。传感器是一种检测装置,能感受到被测量的信息,并能将检测感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。它是实现自动检测和自动控制的首要环节 传感器.不像计算机这么大型复杂的东西.那样的话人们会就清楚的记录它的历史了温度传感器是最早开发,应用最广的一类传感器。根据美国仪器学会的调查,1990年,温度传感器的市场份额大大超过了其他的传感器。从17世纪初伽利略发明温度计开始,人们开始利用温度进行测量。真正把温度变成电信号的传感器是

基于Android的传感器技术应用开发_毕业设计

基于Android的传感器技术应用开发 目录 摘要 ---------------------------------------------------------------------------------------------------------------------I ABSTRACT --------------------------------------------------------------------------------------------------------------- II 引言----------------------------------------------------------------------------------------------------------------------------------------- 1 1绪论---------------------------------------------------------------------------------------------------------------------------------- 2 1.1研究背景与意义 ----------------------------------------------------------------------------------------------------- 2 1.2国内外智能手机应用程序现状研究 ---------------------------------------------------------------------------- 3 1.3研究目的及项目背景介绍----------------------------------------------------------------------------------------- 3 1.4论文的研究内容和结构安排-------------------------------------------------------------------------------------- 3 1.4.1论文内容概述 ----------------------------------------------------------------------------------------------- 3 1.4.2论文内容结构安排 ----------------------------------------------------------------------------------------- 4 1.5小结--------------------------------------------------------------------------------------------------------------------- 4 2基于Android的传感器技术研究 ----------------------------------------------------------------------------------------- 5 2.1Android简述 --------------------------------------------------------------------------------------------------------- 5 2.1.1Android平台简介------------------------------------------------------------------------------------------- 5 2.1.2Android开发框架------------------------------------------------------------------------------------------- 5 2.1.3Android应用程序组件------------------------------------------------------------------------------------- 7 2.1.4Android软件开发的优点及缺点------------------------------------------------------------------------- 8 2.1.5Basic4android开发环境的搭建-------------------------------------------------------------------------- 9 2.1.6运用Basic4android软件的优势 ------------------------------------------------------------------------ 11 2.2传感器概念与分类 ------------------------------------------------------------------------------------------------- 11 2.2.1传感器的概念 ---------------------------------------------------------------------------------------------- 11 2.2.2传感器的分类 ---------------------------------------------------------------------------------------------- 12 2. 3传感器在智能手机中的应用------------------------------------------------------------------------------------12 2. 4Android平台传感器的种类 -------------------------------------------------------------------------------------12 2.4.1加速传感器(重力传感器)Accelerometer --------------------------------------------------------------- 14 2.4.2姿态传感器Orientation ---------------------------------------------------------------------------------- 14 2. 5传感器的使用方法 ------------------------------------------------------------------------------------------------15 2.5.1加速度传感器的调用(PhoneAccelerometer) ---------------------------------------------------------- 15 2.5.2方向传感器的调用(PhoneOrientation)----------------------------------------------------------------- 16 2.6B4A-Bridge软件的使用 ------------------------------------------------------------------------------------------16 2.7小结--------------------------------------------------------------------------------------------------------------------18 3游戏程序设计架构详解 --------------------------------------------------------------------------------------------------------18 3.1程序开发背景与功能简介----------------------------------------------------------------------------------------18 3.1.1程序开发背景简介 ---------------------------------------------------------------------------------------- 18 3.1.2游戏功能简介 ---------------------------------------------------------------------------------------------- 19 3.2游戏开发平台及工作准备----------------------------------------------------------------------------------------19 3.2.1游戏开发平台 ---------------------------------------------------------------------------------------------- 19

Android开发教程传感器编程详解-麦子学院

Android操作系统作为一款开源的手机操作系统,深受开发者喜爱,开发者们也可以根据自己的需求进行各种修改。对开android开发初学者,对于传感器的编程技巧需要重点了解下。如下例: 1. Accelrator的x,y,z轴的正负向: 手机屏幕向上水平放置时: (x,y,z) = (0, 0, -10) 而不是 (0, 0, 10) 当手机顶部抬起时: y减小,且为负值 当手机底部抬起时: y增加,且为正值 当手机右侧抬起时: x减小,且为负值 当手机左侧抬起时: x增加,且为正值 2. Accelrator的z轴的变化: 手机屏幕向上水平放置时,z= -10 手机屏幕竖直放置时, z= 0 手机屏幕向下水平放置时,z= 10 3. 当x变为+5时,手机画面切换为竖向 当x变为-5时,手机画面切换为横向 4. Android传感器相关的类在SDK1.1和SDK1.5中不一样,因此实现代码也不一样 5. Android传感器类型分为:方向、加速表、光线、磁场、临近性、温度等 程序中分别为: 方向: SensorManager.SENSOR_ORIENTATION, 加速表: SensorManager.SENSOR_ACCELEROMETER 光线: SensorManager.SENSOR_LIGHT 磁场: SensorManager.SENSOR_MAGNETIC_FIELD 临近性: SensorManager.SENSOR_PROXIMITY 温度: SensorManager.SENSOR_TEMPERATURE 采样率:最快、游戏、普通、用户界面。当应用程序请求特定的采样率时,其实只是对Android传感器子系统的一个提示,或者一个建议。不保证特定的采样率可用。 最快: SensorManager.SENSOR_DELAY_FASTEST 游戏: SensorManager.SENSOR_DELAY_GAME 普通: SensorManager.SENSOR_DELAY_NORMAL 用户界面: SensorManager.SENSOR_DELAY_UI 准确性:高、低、中、不可靠。 6. Orientation Sensor三个坐标的含义: values[0]:方位角(水平旋转角),简单的说就是手机的头现在朝向哪个方位,0=北、90=东、180=南、270=西(可是好像不太准) values[1]:纵向旋转角,0=面朝上平置、-90=垂直向上、-180/180=面朝下平置、90=垂直向下 values[2]:橫向旋转角,0=朝前、90=往右倒、-90=往左倒 7. 自动侦测手机方向

Android Sensor传感器系统架构初探

?第一层次底层驱动层,包括标准Linux,Android核心驱动,Android相关设备驱动,G-sensor的设备驱动程序即存在于此 ?第二层次Android标准C/C++库,包括硬件抽象层,Android各底层库,本地库,JNI ?第三层次Android Java Framwork框架层 ?第四层次Java应用程序 本文重点关注硬件抽象层,JNI以及Framework。

1.1 硬件抽象层 硬件抽象层通过例如open(), read(), write(), ioctl(), poll()等函数调用的方式,与底层设备驱动程序进行交互,而这些函数调用是底层设备驱动程序事先准备好的。 用于交互的关键是文件描述符fd,fd通过open()打开G-sensor设备节点而得到,即fd = open ("/dev/bma220", O_RDONLY);而/dev/bma220这个设备节点是在底层设备驱动中注册完成的。 其他的函数调用如read(), write()等都通过该文件描述符fd对G-sensor设备进行操作。 1.2 JNI (Java Native Interface) JNI层可以认为是整个体系结构中的配角,概括地讲,它就完成了一项任务,既实现从C++语言到Java语言的转换。JNI层为Java Framework层提供一系列接口,而这些接口函数的具体实现中,利用例如module->methods->open(), sSensorDevice->data_open(), sSensorDevice->poll()等回调函数与硬件抽象层进行交互。而这些open(), poll()回调函数在硬件抽象层中具体实现。 1.3 Java Framework Framework层提供各种类和类的对象,可作为系统的守护进程运行,也可供上层应用程序的使用。 例如类SensorManager,它作为系统的守护进程在初始化的时候开始运行,其子类SensorThread中的子类SensorThreadRunnable通过sensors_data_poll()实现了对 G-sensor数据的轮训访问,而sensors_data_poll()通过JNI层转换到硬件抽象层去具体实现poll()。 2 数据结构 一般境况下,硬件抽象层对硬件的描述都分为control和data两大类。 2.1 sensors_control_context_t struct sensors_control_context_t { struct sensors_control_device_t device;

Android传感器编程入门

本讲内容:Android传感器编程入门,分别包括加速度传感器(accelerometer),陀螺仪(gyroscope),环境光照传感器(light),磁力传感器(magnetic field),方向传感器(orientation),压力传感器(pressure),距离传感器(proximity)和温度传感器(temperature) 一、前言 我很喜欢电脑,可是笔记本还是太大,笔记本电脑再小还是要弄个小包背起来的,智能手机则不同,它完全就是一个手机,可以随意装在一个口袋里随身携带。因此我在2002年左右时最喜欢玩装备是Dell的PDA,2007年的时候最喜欢玩的是N73,而在2010年最喜欢玩的则是Milestone。眼见着手机的功能越来越强,时至今日智能手机甚至在某些方面已经强过了台式机和笔记本。本节课讲的就是智能手机强过台式机和笔记本的地方:传感器。 2008年的时候我很喜欢我的小白笔记本Macbook,喜欢玩它的一个小软件,一拍桌子,笔记本感受到了震动,它就转换了一个桌面出来,这让我像个小孩子一样没事就拍拍桌子。这一功能这得益于苹果笔记本内置有传感器。 我不知道iPhone手机是不是第一个把各种各样的传感器运用在手机上的,不过我知道iPhone是把传感器运用在手机上最成功的第一个。随后的Android系统也内置了大量的传感器,这让Android系统手机和普通的诺基亚智能机和Windows CE智能机相比牛气了许多,在拥有了Milestone之后,我的N73就被仍在抽屉的角落里了。 从Android1.5开始,系统内置了对多达八种传感器的支持,他们分别是:加速度传感器(accelerometer),陀螺仪(gyroscope),环境光照传感器(light),磁力传感器(magnetic field),方向传感器(orientation),压力传感器(pressure),距离传感器(proximity)和温度传感器(temperature)。 利用这些传感器我们可以制作出各种有趣的应用程序和游戏。譬如在口袋里晃一晃手机,手机就开始神不知鬼不觉的录音,不要着急这个很容易做,我们在本文的结尾就一起制作这个小应用。 本讲的学习方式还是在实战中学习,需要提醒的是模拟器中无法模拟传感器,因此你需要准备一款Android真机才能运行本讲的例子。 二、实例:手机传感器清单 我们还是先看程序后解释, 1、创建一个项目 Lesson37_HelloSensor , 主Activity名字叫 mainActivity.java 2、UI布局文件main.xml的内容如下: view source

基于MATLAB和Android智能手机传感器的计步器的设计

By ali 作者简介:徐文力,男(汉族),硕士研究生,主要研究领域为智能及高级过程控制。 李明辉,男(汉族),教授,硕士研究生导师,主要研究领域为智能及高级过程控制。 基于MATLAB 和Android 智能手机传感器的计步器的设计 徐文力,李明辉 (陕西科技大学机电工程学院,陕西 西安710021) 摘 要:本文设计的是一种基于MATLAB 和Android 智能手机传感器的计步器,首先分析了人体运动时加速度的变化规律,通过手机传感器获取三维加速度值,然后由sensorudp APP 以UDP 数据包的形式通过无线网络发送给运行着MATLAB 软件的计算机,利用MATLAB 软件强大的科学计算功能对数据包进行解析得到加速度的值,并进行滤波和样条插值等处理,最后得出运动的步数,进而求出运动的距离以及能耗,为健康运动提供了判断依据。 关键词:智能手机;计步器;无线网络;滤波 中图分类号:TN91 文献标识码:B Design of pedometer based on MATLAB and the smartphone sensors Li ,Xu (College of Mechanical and Electrical Engineering ,Shaanxi University of Science & Technology ,xi ’an shaanxi 710021,China) ABSTRACT : This paper designs a pedometer based on MATLAB and the Android smartphones sensor. First analysis the change law of acceleration of the human body when people exercise, obtaining 3D acceleration through mobile phone sensor, and then send to the computer which running MATLAB software in the form of UDP packets through the wireless network by the sensorudp APP, and use the powerful MATLAB software to decode the packets to get the acceleration, and then execute the filter and spline interpolation, and get the number of steps , the distance and energy consumption, which can provide the basis to judge the movement. KEYWORDS : Smartphones; Pedometer; Wireless network; Filter; 0 引言 Android 智能手机自推出以来,其内置传感器逐渐增多,传感器所实现的功能也日益多样化,极大的满足了用户对智能手机功能的需求,从依赖于重力传感器的各种游戏,到依靠距离传感器实现的通话灭屏,再到指南针功能下的电子罗盘等等,小小的一个Android 智能手机以各种传感器为依托实现了许多有趣的功能。因此,手机已经不再是一个简单的通讯工具,而是具有综合功能的便携式的电子设备。在这种情况下,各种传感器在手机上的应用应运而生。本文就是利用Android 智能手机中的G-sensor 传感器,结合MATLAB 软件的强大计算功能,设计了一种计步器,通过对传感器数据进行分析处理得到运动的步数,进一步计算就可以得到运动速度、距离和能耗等数据。在全民健康意识普遍提高的背景下,各种运动器具变得炙手可热,而计步器的应用可有效辅助提高运动效果,达到健康运动的目的。 1 计步器原理 要实现检测步数首先要对人走路的姿态有一定了解。以步伐特征的研究为基础,考虑到

Android重力传感器代码

所建立Android项目包的名称可自定义修改 //=============syx==============// package com.example.yidong; //==============================// import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.Window; import android.view.WindowManager; import android.widget.EditText; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; public class MainActivity extends Activity implements SensorEventListener { SensorManager sensorManager; EditText editText; EditText editText1; EditText editText2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.360docs.net/doc/3415306912.html,yout.activity_main); editText=(EditText)findViewById(R.id.editText1); editText1=(EditText)findViewById(R.id.editText2); editText2=(EditText)findViewById(R.id.editText3); //获取重力传感器服务 sensorManager=(SensorManager)getSystemService(MainActivity.this.SENSOR_SERVICE); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume();

Android操作系统11种传感器介绍

在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用。 #define SENSOR_TYPE_ACCELEROMETER 1 //加速度 #define SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力 #define SENSOR_TYPE_ORIENTATION 3 //方向 #define SENSOR_TYPE_GYROSCOPE 4 //陀螺仪 #define SENSOR_TYPE_LIGHT 5 //光线感应 #define SENSOR_TYPE_PRESSURE 6 //压力 #define SENSOR_TYPE_TEMPERATURE 7 //温度 #define SENSOR_TYPE_PROXIMITY 8 //接近 #define SENSOR_TYPE_GRAVITY 9 //重力 #define SENSOR_TYPE_LINEAR_ACCELERATION 10//线性加速度 #define SENSOR_TYPE_ROTATION_VECTOR 11//旋转矢量 我们依次看看这十一种传感器 1 陀螺仪传感器 陀螺仪传感器叫做Gyro-sensor,返回x、y、z三轴的角加速度数据。 角加速度的单位是radians/second。 根据Nexus S手机实测: 水平逆时针旋转,Z轴为正。 水平逆时针旋转,z轴为负。 向左旋转,y轴为负。 向右旋转,y轴为正。 向上旋转,x轴为负。 向下旋转,x轴为正。 ST的L3G系列的陀螺仪传感器比较流行,iphone4和google的nexus s中使用该种传感器。 2 方向传感器 方向传感器简称为O-sensor,返回三轴的角度数据,方向数据的单位是角度。为了得到精确的角度数据,E-compass需要获取G-sensor的数据, 经过计算生产O-sensor数据,否则只能获取水平方向的角度。 方向传感器提供三个数据,分别为azimuth、pitch和roll。 azimuth:方位,返回水平时磁北极和Y轴的夹角,范围为0°至360°。 0°=北,90°=东,180°=南,270°=西。 pitch:x轴和水平面的夹角,范围为-180°至180°。 当z轴向y轴转动时,角度为正值。 roll:y轴和水平面的夹角,由于历史原因,范围为-90°至90°。 当x轴向z轴移动时,角度为正值。

手机方向和加速度传感器技术

1.package cn.itcast.sensor; 2. 3.import android.app.Activity; 4.import android.hardware.Sensor; 5.import android.hardware.SensorEvent; 6.import android.hardware.SensorEventListener; 7.import android.hardware.SensorManager; 8.import android.os.Bundle; 9.import android.widget.TextView; 10. 11.public class MainActivity extends Activity { 12. private TextView accelerometerView; 13. private TextView orientationView; 14. private SensorManager sensorManager; 15. private MySensorEventListener sensorEventListener; 16. @Override 17. public void onCreate(Bundle savedInstanceState) { 18. super.onCreate(savedInstanceState); 19. setContentView(https://www.360docs.net/doc/3415306912.html,yout.main); 20. 21. sensorEventListener = new MySensorEventListener(); 22. accelerometerView = (TextView) this.findViewById(R.id.a ccelerometerView); 23. orientationView = (TextView) this.findViewById(R.id.ori entationView); 24. //获取感应器管理器 25. sensorManager = (SensorManager) getSystemService(SENSOR _SERVICE); 26. } 27. @Override 28. protected void onResume() { 29. Sensor orientationSensor = sensorManager.getDefaultSens or(Sensor.TYPE_ORIENTATION); 30. sensorManager.registerListener(sensorEventListener, ori entationSensor, SensorManager.SENSOR_DELAY_NORMAL); 31. 32. Sensor accelerometerSensor = sensorManager.getDefaultSe nsor(Sensor.TYPE_ACCELEROMETER); 33. sensorManager.registerListener(sensorEventListener, acc elerometerSensor, SensorManager.SENSOR_DELAY_NORMAL); 34. super.onResume(); 35. } 36. private final class MySensorEventListener implements Sensor EventListener{

Android传感器---Motion Sensor

本文译自:https://www.360docs.net/doc/3415306912.html,/guide/topics/sensors/sensors_motion.html Android平台提供了几个能够监视设备移动的传感器。其中的两个是基于硬件的(加速度传感器和陀螺仪),有三个传感器既可以是基于硬件的,也可以是基于软件的(重力传感器、线性加速度传感器和旋转矢量传感器)。例如,在某些基于软件传感器的设备上会从加速度传感器和磁力仪中提取它们的数据,但是在其他的设备上,它们也可以使用陀螺仪来提取数据。大多数Android设备都有加速度传感器和陀螺仪。基于软件的传感器的有效性是可变的,因为它们要依赖一个或多个硬件传感器来提取对应的数据。 运动传感器用于监视设备的移动,如:倾斜、振动、旋转或摆动。移动通常是直接的用户输入的反映(如,用户在游戏中操作汽车或控制一个球),但也能够是设备所处的物理环境的反映(如,驾驶汽车时的位置移动)。在第一种场景中,你要相对于设备的参照系或应用程序的参照系来监视设备的移动,在第二种场景中,你要相对于全球参照系来监视设备的移动。通常,移动传感器本身并不用于监视设备的位置,但它们能够跟其他传感器一起来使用,例如跟地磁传感器一起来判断设备相对于全球参照系统的的位置(更多信息,请看位置传感器)。所有的移动传感器的每个SensorEvent都会返回传感器值的多维数组。例如,一个加速度传感器的传感器事件会返回三个坐标轴方向的加速度力,陀螺仪会返回三个坐标轴方向旋转速率。这些数据是以float数组的形式跟SensorEvent参数一起被返回的。表1概要介绍了Android平台上可用的移动传感器。

Android 传感器代码

Android下调用传感器代码 在这里介绍一下所写的在android下调用传感器的程序。 Android中支持的几种传感器: Sensor.TYPE_ACCELEROMETER:加速度传感器。 Sensor.TYPE_GYROSCOPE:陀螺仪传感器。 Sensor.TYPE_LIGHT:亮度传感器。 Sensor.TYPE_MAGNETIC_FIELD:地磁传感器。 Sensor.TYPE_ORIENTATION:方向传感器。 Sensor.TYPE_PRESSURE:压力传感器。 Sensor.TYPE_PROXIMITY:近程传感器。 Sensor.TYPE_TEMPERATURE:温度传感器。 使用传感器最关键的一些知识是:SensorManager是所有传感器的一个综合管理类,包括了传感器的种类、采样率、精准度等。我们可以通过getSystemService方法来取得一个SensorManager对象。使用传感器时,需要通过registerListener函数注册传感器,使用完后需要通过unregisterListener取消注册。 百闻不如一见,还是直接讲代码: 新建一个Sensors的工程,创建一个Sensors.java,内容如下:.........10........20........30........40........50........60........70.. (80) ........90.. (100) 01 package me.sigma.sensors; 02 03 04import android.app.Activity; 05import android.hardware.SensorListener; 06import android.hardware.SensorManager; 07import android.os.Bundle; 08import android.widget.TextView; 09 10public class Sensors extends Activity {

android系统 传感器获取

android系统传感器获取 1显示系统获取的传感器的布局文件activity_main.xml 2获取系统的传感器: setContentView(https://www.360docs.net/doc/3415306912.html,yout.activity_main); all_ll=(LinearLayout)findViewById(R.id.all_ll); tips_tv=(TextView)findViewById(R.id.tips_tv); SensorManager sensorManager=(SensorManager)getSystemService(Contex

使用Android+传感器实现测试大气压强

使用Android+传感器实现测试大气压强 【摘要】近几年来,智能手机和它的应用十分普及,与此同时,Android系统因有易操作、高性能、免费等优点,如今已被大多数手机生产商接受和使用,OTG是一种新型的USB,能够在没有电脑的情行下,实现设备间的数据及图像的传送,有较好的发展空间,在手机中加入传感器,同时将运行程序载入开发板中,通过OTG接口与手机相接,能够让手机拥有更强大的功能。 【关键词】Android系统压力传感器OTG 一、项目目的 大气压强是无处不在的,在实验过程中,压强可能会对实验结果产生一定的影响。在实验室中,虽然可以轻易地使用基本仪器测出压强。但如果是在如室外等复杂环境里做一些压强可能影响结果的实验,想要使用复杂或者庞大的实验室仪器实现观察大气压的改变,不仅十分不方便,也是十分不现实的,成本也会变得很高,影响实验的可行性,同时,手机能够集多种功能于一身,可以成为庞大仪器的最好替代品。因此,我们小组在做SRTP项目时,试图尝试通过压力传感器与手机相连,用手机的安卓系统界面显示外界的压强,以使在复杂环境中进行压强的测试更加简便,更加具有可行性。 二、所需器材 Bmp气压传感器,一根otg线,arduino开发板,一个支持otg的安卓手机。 Bmp气压传感器:BMP085是一种耗能低,精度高,体积小的气压传感器。其测量误差可减少至0.5米。能够测量范围从-500(米)到+9000(米)的气压值。内部涵括了压强和温度传感器。器件内部的电压范围宽。利用I2C提供数据与操作设备接口,具有易操作、精度高等特点。 Arduino开发板:Arduino开发板具有灵活、便捷、方便、易上手等优点,涵括硬件(即各种类型的arduino板子)和软件(即arduino IDE)。 三、所需准备 首先要确定整个项目的版图,为了实现手机对空气压强的测量,需要用电脑编程之后下载到Arduino开发板中,使其可以读取传感器所测得的压强值,此外还需了解安卓系统,借而做出可以显示传感器所测压强数值的安卓界面,从而达到利用手机测量大气压强的目的。因此整个项目的器材连接过程为arduino板子上的一个接口与传感器相连,另一个接口通过OTG线与客户端手机相连,为实现此项目,需要针对开发板进行编程,与此同时,还要对客户端手机界面进行编程,因此为了顺利完成此项目,我们需要了解一些程序的编辑,对于Arduino开发板,里面的程序设计需要包含以下等几个步骤:从BMP085得到压力,将所

Android传感器的应用开发

Android传感器的应用开发 整理:苏老师 一、传感器的获取 1、Android所有的传感器都归传感器管理器SensorManager 管理,获取传感器管理器的方法: String name = Context.SENSOR_SERVICE; SensorManager sensorManager = (SensorManager)getSystemService(name); 2、现行Android版本支持的传感器有: 3、通过传感器管理器获取传感器对象的方法: (1)、获取一个传感器 Sensor defaultGyroscope = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE); (2)、获取多个传感器,获取结果是传感器集合 List pressureSensors = sensorManager.getSensorList(Sensor.TYPE_PRESSURE); //限定某种传感器类型或者不限传感器类型获取传感器对象列表: List allSensors = sensorManager.getSensorList(Sensor.TYPE_ALL); 4、传感器对象提供获取其传感器信息的方法:

二、传感器事件的常规应用步骤 1、获取传感器管理器对象、传感器对象 // 获取传感器管理器 SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE); // 获取加速传感器 Sensor acceleromererSensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 2、定义传感器事件 // 定义传感器事件监听器 SensorEventListener acceleromererListener = new SensorEventListener() { @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } //传感器数据变动事件 @Override public void onSensorChanged(SensorEvent event) { float x = event.values[SensorManager.DATA_X]; float y = event.values[SensorManager.DATA_Y]; float z = event.values[SensorManager.DATA_Z]; //x、y、z变量是从加速传感器获得的数据 //…… //…… } }; 3、注册(应用)传感器事件 //在传感器管理器中注册监听器 sm.registerListener(acceleromererListener, acceleromererSensor, SensorManager.SENSOR_DELAY_NORMAL); 三、传感器事件参数变量 onSensorChanged方法只有一个SensorEvent类型的参数event,其中SensorEvent类有一个values变量非常重要,该变量的类型是float[]。但该变量最多只有3个元素,而且根据传感器的不同,values变量中元素所代表的含义也不同。

相关主题
相关文档
最新文档