Android编程之加速度传感器
第8章 传感器(Sensor)-App Inventor Android移动应用开发实战-范士喜

【运行结果】:
8.3 方向传感器(OrientationSensor)
方向传感器(OrientationSensor)组件用于确定手机的空间方位, 该组件为非可视组件,以角度的方式提供三个方位值: 方位角(Azimuth): 当设备顶部指向正北方时,其值为0°,正东为 90°,正南为180°,正西为270°。 倾斜角(Pitch): 当设备水平放置时,其值为0°;随着设备顶部向下 倾斜至竖直时,其值为90°,继续沿相同方向翻转,其值逐渐减小,直 到屏幕朝向下方的位置,其值变为0°;同样,当设备底部向下倾斜直 到指向地面时,其值为-90°,继续沿同方向翻转到屏幕朝上时,其值 为0°。 翻转角(Roll):当设备水平放置时,其值为0°;并随着向左倾斜到 竖直位置时,其值为90°,而当向右倾斜至竖直位置时,其值为-90°。
(2-8 简易计步器
源程序:Pedometer.aia
【功能描述】:使用计步器(Pedometer)组件设 计一个简易计步器APP,实现计步、计路程、计 时等功能。
【组件设计】:
【逻辑设计1】:
【逻辑设计2】:
【运行结果】:
思考与练习:
(1)案例8-1 简易计时器为何要使用两个计时器(Clock)? (2)加速度传感器(AccelerometerSensor)、方向传感器
【逻辑设计】:
【运行结果】:
8.4 位置传感器(LocationSensor)
(1)属性面板
(2)事件
(3)方法
(4)主要属性
案例8-4 简易定位仪
源程序:LocationSensor.aia
【功能描述】:使用位置传感器(LocationSensor) 组件设计一个APP,显示手机所在位置的纬度、 经度、海拔和当前地址。
利用传感器实现微信的摇一摇功能

利用传感器实现微信的摇一摇功能现在的不少应用都用到了摇动手机改变内容的功能,比如微信中的“摇一摇”功能。
前两天要实现这个功能,稍微看了一下关于传感器Sensor的内容。
传感器有几种类型:方向传感器: Sensor.TYPE_ORIENTATION加速度(重力)传感器: Sensor.TYPE_ACCELEROMETER光线传感器: Sensor.TYPE_LIGHT磁场传感器: Sensor.TYPE_MAGNETIC_FIELD距离(临近性)传感器: Sensor.TYPE_PROXIMITY温度传感器: Sensor.TYPE_TEMPERATURE在摇动手机的功能中,我们只用加速度传感器就行了~~加速度传感器返回值的单位是加速度的单位 m/s^2(米每二次方秒),有三个方向的值分别是values[0]: x-axis 方向加速度values[1]: y-axis 方向加速度values[2]: z-axis 方向加速度其中x,y,z方向的定义是以水平放置在的手机的右下脚为参照系坐标原点x 方向就是手机的水平方向,右为正y 方向就是手机的水平垂直方向,前为正y 方向就是手机的空间垂直方向,天空的方向为正,地球的方向为负所以说,你的手机放置的空间位置不同,它三个方向的加速度也不同。
在这里,三个方向的加速度,与我们传统意义上的加速度(9.8m/s2)有所区别,需细细品味。
以下是摇动手机后清除TextView的文字的代码:package gy.lovers;import java.util.ArrayList;import java.util.List;import java.util.Random;import android.app.Activity;import android.app.Service;import android.content.res.Resources;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Bundle;import android.os.Vibrator;import android.view.View;import android.widget.Button;//需要实现SensorEventListener接口public class LoversChoise extends Activity implements SensorEventListener{Button clear;//定义sensor管理器private SensorManager mSensorManager;//震动private Vibrator vibrator;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceSt ate);setContentView(yout.lovers choise);//获取传感器管理服务mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);//震动vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);clear = (Button)findViewById(R.id.clear);clear.setListener(new Button.Listener(){@Overridepublic void (View arg0) {// TODO Auto-generated method stub//点击button后,给button按钮设置了textclear.setText("现在给button的text赋值喽~");});@Overrideprotected void onResume(){super.onResume();//加速度传感器mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),//还有SENSOR_DELAY_UI、SENSOR_DELAY_FASTEST、SENSOR_DELAY_GAME等,//根据不同应用,需要的反应速率不同,具体根据实际情况设定SensorManager.SENSOR_DELAY_NORMAL);}@Overrideprotected void onStop(){mSensorManager.unregisterListener(this);super.onStop();}@Overrideprotected void onPause(){mSensorManager.unregisterListener(this);super.onPause();}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub//当传感器精度改变时回调该方法,Do nothing.}@Overridepublic void onSensorChanged(SensorEvent event) {// TODO Auto-generated method stubint sensorType = event.sensor.getType();//values[0]:X轴,values[1]:Y轴,values[2]:Z轴float[] values = event.values;if(sensorType == Sensor.TYPE_ACCELEROMETER){/*因为一般正常情况下,任意轴数值最大就在9.8~10之间,只有在你突然摇动手机*的时候,瞬时加速度才会突然增大或减少。
Android传感器介绍

Android 传感器介绍一、Android 手机坐标系及角速度传感器TYPE_ACCELEROMETER 介绍在Android 坐标系统中,坐标原点位于屏幕的左下角,X 轴水平指向右侧,Y 轴垂直指向顶部,Z 轴指向屏幕前方。
在该系统中,屏幕后方的坐标具有负的Z 轴值。
Android 加速度计数据定义为:Sensor.TYPE_ACCELEROMETER图 1. 3 轴加速度计的Android 坐标系统所有数值都采用SI 标准单位(2/s m ),测量手机的加速度值,并减去重力加速度分量。
values[0]:x 轴上的加速度值减去Gx values[1]:y 轴上的加速度值减去Gy values[2]:z 轴上的加速度值减去Gz例如,当设备平放在桌上并推着其左侧向右移动时,x 轴加速度值为正。
当设备平放在桌上时,加速度值为+9.81,这是用设备的加速度值 (0 2/s m ) 减去重力加速度值 (-9.812/s mm/s2)得到的。
当设备平放在桌上放,并以加速度A m/s2 朝天空的方向推动时,加速度值等于A+9.81,这是用设备加速度值(+A 2/s m )减去重力加速度值(-9.81 2/s m )得到的。
表 1 列出了与设备的各个位置相对应的传感器的加速度值读数。
用户可以用下表检查加速度计的方向与系统坐标是否一致。
表 1. 不同位置上各轴的加速度值通过加速度传感器读取3 轴加速度值时,需要假设传感器的3 轴方向与系统坐标是一致的。
但是在实际的产品中,可能会使用不同的传感器芯片,或者采用不同的安装方向,因此数据方向也会不同。
图2 所示的是飞思卡尔MMA8452Q 3 轴加速度传感器的方向定义。
图2. MMA8452Q 的方向定义在图2 中,我们可以看到当安装芯片时,必须让引脚1 处于右下角的位置(PD),并安装在PCB 的前方,这样才能与Android 坐标系统的默认位置相符。
这样安装后,用户可确定数据方向与系统坐标定义是一致的。
基于Android的手机计步器的设计与实现+源代码【范本模板】

专业工程综合实训设计报告目录第一章绪论 (1)1。
1课题的背景及意义 (1)1.2系统框架 (1)第二章系统分析 (3)2.1 系统可行性分析 (3)2.1.1 功能可行性分析 (3)2。
1.2 运行环境可行性分析 (3)2。
2 开发环境简介 (3)2。
2。
1 Java Development kit(JDK)介绍 (3)2.2.2 Android SDK 介绍 (3)2.2.3 Eclipse开发工具介绍 (4)2.2.4 Android Development Tools(ADT)介绍 (4)第三章 Android开发常用到的技术及环境搭建 (5)3.1 Android开发常用到的技术 (5)3。
1.1 Activity (5)3.1.2 Service (6)3。
1。
3 Content Provider 内容提供者 (7)3。
1。
4 Intent 信使 (7)3。
2环境搭建 (7)3.2.1安装JDK (7)3.2.2安装Eclipse (8)3。
2.3 Android SDK安装 (8)3.2。
4 ADT安装 (8)第四章手机计步器的设计与实现 (9)4.1计步器功能的设计 (9)4。
2计步器功能的实现 (11)4.2。
1 计步开始及暂停 (11)4。
2.2 复位键 (12)4.2。
3设置步长 (12)4.2。
4设置体重 (12)4.2。
5历史记录的查看及删除 (13)第五章计步器的界面效果 (19)5.1用户界面 (19)5.2设置界面 (20)5.3历史界面 (23)5.4日历选择界面 (24)5。
5用户离开界面 (25)第六章系统测试与分析 (26)6。
1 测试过程 (26)6。
2 测试分析 (39)结论 (40)参考文献 (41)第一章绪论1。
1课题的背景及意义当今社会,手机已经成为人们工作生活中必不可少的一项通讯和娱乐工具,随着手机的不断更新,手机的各种高层服务和应用层出不穷。
android计步器课程设计

android计步器课程设计一、课程目标知识目标:1. 学生能理解Android计步器的基本工作原理,掌握计步器开发的必备知识。
2. 学生能掌握在Android平台上使用传感器获取数据的方法,了解计步算法的基本概念。
3. 学生了解Android开发中的界面设计与实现,能运用所学知识完成计步器界面设计。
技能目标:1. 学生能运用Android Studio编写计步器程序,实现计步功能,具备实际操作能力。
2. 学生能通过查阅资料、分析问题,解决计步器开发过程中遇到的技术难题,具备问题解决能力。
3. 学生能进行团队协作,共同完成项目开发,具备良好的沟通与协作能力。
情感态度价值观目标:1. 学生通过学习计步器开发,培养对编程的兴趣,激发学习动力。
2. 学生在项目实践过程中,树立正确的价值观,认识到科技对生活的积极作用。
3. 学生在团队协作中,学会尊重他人,培养合作精神,提高自身综合素质。
课程性质:本课程为实践性较强的课程,结合Android开发技术,以项目为导向,让学生在实际操作中掌握知识。
学生特点:学生具备一定的编程基础,对Android开发有一定了解,对实际项目开发充满兴趣。
教学要求:教师需结合学生特点,采用项目驱动法,引导学生自主探究、动手实践,注重培养学生的实际操作能力和团队协作精神。
在教学过程中,关注学生的学习反馈,及时调整教学策略,确保课程目标的达成。
二、教学内容1. Android开发基础回顾:介绍Android平台的基本架构,回顾Activity、Service、BroadcastReceiver等核心组件的使用,为学生后续学习计步器开发奠定基础。
(对应教材第一章)2. 传感器与计步算法:讲解Android平台传感器系统,重点介绍加速度传感器的工作原理及数据获取方法。
分析常见计步算法,如步数检测、步频计算等。
(对应教材第二章)3. 界面设计与实现:教授Android界面设计的基本知识,如布局、控件使用等,指导学生完成计步器界面的设计与实现。
基于App Inventor的陀螺仪、加速度传感器对比研究

基于App Inventor的陀螺仪、加速度传感器对比研究作者:卞云松来源:《科技视界》2019年第25期【摘要】基于手机传感器的行为识别与手势识别研究具有重要理论意义与实用价值,怎样方便初学者对手机里的传感器进行学习,本文介绍了一种方法。
通过用APP Inventor编程,对智能手机里的陀螺仪、加速度传感器进行对比研究。
【关键词】App Inventor;手机;陀螺仪;加速度传感器中图分类号: TN929.53 文献标识码: A 文章编号: 2095-2457(2019)25-0041-003DOI:10.19694/ki.issn2095-2457.2019.25.019Contrastive Study of Gyroscope and Acceleration Sensor Based on App InventorBIAN Yun-song(Jianghai polytechnic, Yangzhou Jiangsu 225000, China)【Abstract】The research of behavior recognition and gesture recognition based on mobile phone sensor has important theoretical significance and practical value.How to facilitate beginners to learn sensors in mobile phone is introduced in this paper.By programming with APP Inventor,the gyroscopes and accelerometers in smart phones are compared and studied.【Key words】App Inventor;Mobile Phone;Gyroscope;Acceleration Sensor0 概述陀螺仪、加速度传感器现在应用越来越广,智能手机上也有这两种传感器,如果在手机上通过编程APP程序来进行研究,对于非计算机专业的人士难度较大。
加速度传感器原理结构使用说明校准和参数解释

加速度传感器原理结构使用说明校准和参数解释
1.安装:将传感器固定在需要测量加速度的物体上,确保传感器与物
体的接触牢固。
2.接线:根据传感器的规格书和制造商提供的接线图,正确连接传感
器与测量设备或系统。
3.供电:根据传感器的工作电压要求,为传感器提供适当的电源。
4.编程:根据传感器的规格书和厂家提供的编程手册,编写适当的代
码来读取传感器的输出数据。
5.数据处理:根据应用需求,对传感器输出的数据进行处理和分析,
例如进行滤波、计算速度、位移等。
为了确保准确测量加速度,加速度传感器需要进行校准。
校准可分为
静态校准和动态校准两种方式。
1.静态校准:将加速度传感器放置在静止状态下,记录其输出值,然
后根据物理的力学原理进行校准,使传感器的输出与已知准确的加速度匹配。
2.动态校准:将加速度传感器暴露在已知加速度的环境中,比如进行
加速、减速、旋转等,通过比较传感器的输出与已知的加速度进行校准。
1.测量范围:指传感器能够测量的最大加速度范围。
2.灵敏度:指传感器对于单位加速度变化的输出变化。
3.频率响应:指传感器能够精确测量的频率范围。
4.噪声:指传感器输出的不确定性,通常以均方根值(RMS)来表示。
5.分辨率:指传感器能够区分的最小加速度变化。
6.非线性度:指传感器输出与输入之间的误差。
7.温度效应:指传感器输出与环境温度变化之间的关系。
总结:。
Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】

Android开发获取传感器数据的⽅法⽰例【加速度传感器,磁场传感器,光线传感器,⽅向传感器】本⽂实例讲述了Android开发获取传感器数据的⽅法。
分享给⼤家供⼤家参考,具体如下:package mobile.android.sensor;import java.util.List;import android.app.Activity;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Bundle;import android.widget.TextView;public class Main extends Activity implements SensorEventListener {private TextView tvAccelerometer;private TextView tvMagentic;private TextView tvLight;private TextView tvOrientation;private TextView tvSensors;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);// 获得SensorManager对象SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);// 注册加速度传感器sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_FASTEST);// 注册磁场传感器sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),SensorManager.SENSOR_DELAY_FASTEST);// 注册光线传感器sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),SensorManager.SENSOR_DELAY_FASTEST);// 注册⽅向传感器sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_FASTEST);tvAccelerometer = (TextView) findViewById(Accelerometer);tvMagentic = (TextView) findViewById(Magentic);tvLight = (TextView) findViewById(Light);tvOrientation = (TextView) findViewById(Orientation);tvSensors = (TextView) findViewById(Sensors);// 获得当前⼿机⽀持的所有传感器List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);for (Sensor sensor : sensors) {// 输出当前传感器的名称tvSensors.append(sensor.getName() + "\n");}}@Overridepublic void onSensorChanged(SensorEvent event) {// 通过getType⽅法获得当前传回数据的传感器类型switch (event.sensor.getType()) {case Sensor.TYPE_ACCELEROMETER: // 处理加速度传感器传回的数据String accelerometer = "加速度\n" + "X:" + event.values[0] + "\n"+ "Y:" + event.values[1] + "\n" + "Z:" + event.values[2]+ "\n";tvAccelerometer.setText(accelerometer);break;case Sensor.TYPE_LIGHT: // 处理光线传感器传回的数据tvLight.setText("亮度:" + event.values[0]);break;case Sensor.TYPE_MAGNETIC_FIELD: // 处理磁场传感器传回的数据String magentic = "磁场\n" + "X:" + event.values[0] + "\n" + "Y:"+ event.values[1] + "\n" + "Z:" + event.values[2] + "\n";tvMagentic.setText(magentic);break;case Sensor.TYPE_ORIENTATION: // 处理⽅向传感器传回的数据String orientation = "⽅向\n" + "X:" + event.values[0] + "\n" + "Y:"+ event.values[1] + "\n" + "Z:" + event.values[2] + "\n";tvOrientation.setText(orientation);break;}}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}}PS:这⾥获得的只是传感器采集数据,还需要对数据分析,变成有⽤的信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
»
// TODO something }
2021/3/13
2019013077 段道兵 软件111班
» 3)定义传感器监听器,用于监听传感器,如:
» Override
» public void onSensorChanged(SensorEvent event) {// 传感器数据变动事件
»
// TODO something }
2019013077 段道兵 软件111班
2021/3/13
» 2)从传感器管理器中获取其中某个或者某些 传感器的方法有如下三种:
» 第三种:获取所有传感器的列表 » List<Sensor> allSensors =
sensorManager.getSensorList(Sensor.TYPE_ALL);
2019013077 段道兵 软件111班
2021/3/13
» 2)从传感器管理器中获取其中某个或者某些 传感器的方法有如下三种:
» 第二种:获取某种传感器的列表 » List<Sensor> pressureSensors =
sensorManager.getSensorList(Sensor.TYPE_PRES SURE);
»}
2021/3/13
2019013077 段道兵 软件111班
» 4)对于某一个传感器,它的一些具体信息的 获取方法可以见下表:
2019013077 段道兵 软件111班
2021/3/13
» 5)根据传感器的状态的变化判断出用户的操 作,如:在使用加速度传感器时可以通过传 感器数值判断手机是否在摇晃:
»
c.把每次的晃动幅度相加,得到总体晃
动幅度
»
d.根据摇动幅度判断是否为用户的刻意
操作,是则执行对应事件,否则返回is
2021/3/13
2019013077 段道兵 软件111班
Android编程之加速度传感器
» 1)Android所有的传感器都归传感器管理器 SensorManager 管理,获取传感器管理器的 方法: String service_name = Context.SENSOR_SERVICE; SensorManager sensorManager = (SensorManager)getSystemService(service_na me);
»
a.记录accelerຫໍສະໝຸດ mererSensor的三个参数x、
y、z;
»
b.每个100毫秒检测一次:看是不是刚
开始晃动,是则记录开始事件,否则记录每
次晃动幅度;
2021/3/13
2019013077 段道兵 软件111班
» 5)根据传感器的状态的变化判断出用户的操 作,如:在使用加速度传感器时可以通过传 感器数值判断手机是否在摇晃:
2019013077 段道兵 软件111班
2021/3/13
» 3)定义传感器监听器,用于监听传感器,如:
» SensorEventListener acceleromererListener = new SensorEventListener(){
» Override
» public void onAccuracyChanged(Sensor sensor, int accuracy) {//传感器精度的改变
2019013077 段道兵 软件111班
2021/3/13
» 2)从传感器管理器中获取其中某个或者某些 传感器的方法有如下三种:
» 第一种:获取某种传感器的默认传感器 » Sensor defaultGyroscope =
sensorManager.getDefaultSensor(Sensor.TYPE_ GYROSCOPE);