- 1、本文档共95页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
android应用之加速度传感器
第5章 手机加速度传感器;5.1传感器sensor简介;5.1.1 传感器是什么?
分析:传感器就是一种特殊的外设,感受外界的 参数变化,然后反应到手机上面。{参数包括:磁 场、温度、压力、重力加速度、声音。}
5.1.2 传感器的分类有哪些?
分析:按测量物理量分类
加速度传感器(accelerometer)
陀螺仪传感器(gyroscope)
环境光照传感器(light)
磁力传感器(magnetic field)
方向传感器(orientation)
压力传感器(pressure)
距离传感器(proximity)
温度传感器(temperature)
;5.1.3传感器的作用有哪些?
1)传感器是人类五官的延伸
2)获取准确可靠的信息,更好的研究自然现象和规律以及生产活动
3)监视和控制生产过程中的各个参数,使设备工作在正常状态或最佳状态,并使产品达到最好的质量。
4)一些新机理和高灵敏度的检测传感器的出现,往往会有边缘学科开发上的突破
5)让用户对智能手机更加着迷
;5.2加速度传感器原理------以手机加速度传感器为例;分析:弹簧测力计的原理是弹簧伸长的长度与施加在它上面的压力成正比。当我们向上移动弹簧测力计时,弹簧就会由于惯性拉伸,我们只需根据弹簧测力计的距离既可以计算出重力。而我们的加速度计的原理便是利用了这个。
你可以很直观感觉到,当我们有三个这样的测力计,便能测出物体的三维运动方向了。
;如右图2:当y轴和z轴水平时,只有x轴能读出被拉伸的弹簧数据。
如右图3:当x轴和y轴水平时,只有z轴能读出弹簧被拉伸的数值了。 ;工程师用在芯片里用硅做成的微小加速度计,样子如图4:
加速度传感器就是利用了其内部芯片的由于加速度造成的晶体变形这个特性。
由于这个变形会产生电压,只要计算出产生电压和所施加的加速度之间的关系,就可以将加速度转化成电压输出。; 最后我们的手机加速度传感器感应加速度的方向大致如右图5:
X表示左右移动的加速度
Y表示前后移动的加速度
Z表示垂直方向的加速度 ;手机不同位置的加速度值:
当将手机平放在水平面上,Z轴朝向天空,三轴加速度值默认分别是(0,0,10)
当X轴朝向天空,三轴加速度值分别是(10,0,0)
当X轴朝向地面,三轴加速度值分别是(-10,0,0)
当手机屏幕垂直竖立放置,Y轴朝向天空,(0,10,0)
当手机屏幕垂直竖立放置,Y轴朝向地面,(0,-10,0)
总结:向上的就是正的,朝下的就是负的;传感器事件
1)加速度传感器元件焊到手机中供软件开发过程师使用。在编写android程序时,需要注册加速度传感器。FrameworkAPI对加速度输出进行封装,提供一个传感器类,我们就根据当前的传感器类型获得需要的值。因为传感器的值是频率性的,即每固定毫秒返回一个值。所以我们需要一个触发机制,要用事件监听。
2)当加速度传感器监测到手机加速度变化的时候,就会产生一个传感器事件
3)传感器事件也是一个对象
4)应用程序从传感器事件对象获取这时刻的手机加速度
;传感器相关的类
;注册
/* 第一个参数为Listener实例,第二个参数为想接收的传感器,第三个参数为接收频度*/
销毁
/*来销毁一个传感器*/;
;5.3加速度传感器的基本认识;5.3.1通过手机加速度传感器获取加速度; AndroidManifest.xml结构;AndroidManifest.xml---分解1;AndroidManifest.xml---分解2;AndroidManifest.xml---分解3;AndroidManifest.xml---分解4;layout布局文件(XML)代码;加速度获取的代码;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_gravity, menu);
return true;
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
sensorManager.unregisterListener(this);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
sensor
文档评论(0)