浅谈智能手机传感器机理及应用设计案例
2018-01-26杨碎明苟青青
杨碎明 苟青青
(西安交通工程学院,陕西 西安 710399)
一、引言
传感器是一个内置物理装置,能够采集,探测,感知外界的信号,并将这些信息分析加工变成计算机所能处理的数据,最终将信息量传递给其他装置,本文主要对Android上各种传感器做简单介绍,继而阐述传感器的开发步骤以及使用技巧。
二、传感器种类及调用流程
(一)传感器种类
手机传感器的种类主要有:加速度传感器、磁力感应器、方向传感器、重力感应器等等传感器,本文主要应用姿态传感器(Orientation),它的作用主要是实时记录手机翻转、移动的变化数据,每次读取的都有三个参数,分别代表手机沿Y轴,P轴,R轴转动角度。
三、传感器调用流程
传感器调用流程大体分为四大步骤:获取系统服务(getSystemService),设置传感器类型(getDefaultSensor,注册监听器(regListener),实现回调函数。
(一)获取系统服务。调用getSystemService方法获得SensorManager对象,该方法中会根据传入参数的不同从而得到不同的传感器对象。
(二)设置传感器类型。这一步主要根据开发的需求,针对传感器类型的,获取某个传感器对象。
(三)注册监听器。在实际开发中,经常需要实时获取传感器的数据变,因此在得到了指定传感器之后,要为传感器注册事件。当传感器服务开始工作的时候,监听器会及时把外界变化信息传递给系统,然后系统根据不同的信号做出响应。
(四)实现回调函数。经过上述三个步骤后,开发者要实现SensorEventListener接口,该接口为传感器的回调进接口,重写onSensorChanged方法,该方法传入一个SensorEvent对象,开发者即可从该对象中获得对应的数据。
1.理论基础
手机旋转过程中姿态传感器如何定位:
Android姿态传感器主要感应手机姿态方向的变化,它及时捕获的是三个方位的参数,分别代表手机沿Yaw轴、Pitch轴和Roll轴转过的角度,Yaw轴是最好理解的,它总是与重力方向相反,它的方向是固定不变的,也就是说一直是竖直向上的,与手机所处的姿态无关。Pitch轴的方向总是与Yaw轴成90度夹角,因此其方向会随着手机沿Yaw轴旋转而改变。Roll轴的方向是沿着手机屏幕向上的,无论手机处于何种姿态,Roll轴始终沿着手机的屏幕向上,所以手机围绕Yaw轴或Pitch轴转动的过程中,Roll轴也会跟随手机一起转动,而并不是保持与标准空间坐标系中的Y轴相同的方向。本案例采用姿态传感器它已在Android手机中内置的功能,App开发人员可以调用相应的函数获得相应的数据,从而来判断手机的姿态。
2.核心功能实现
本实例中,捕获传感器数据的类是Ball Listener类,Ball Listener类是 Sensor Listener的子类,其主要作用是对手机的方位变化进行监听并获取相应的动态变化数据。Sensor Listener是Android系统中的内置类,它的主要功能是:在手机中传感器参数发生变化时它会触发传感器的值。它提供了一个onSensor Changed方法,用来读取来自传感器的数据。(部分代码如下)。
public class Ball Listener extends Activity {
MyGLView myGLView;
SensorManager对象引用
public void onCreate(Bundle savedInstanceState){
//创建myGLView
//在LinearLayout中加入myGLView
}
//开发SensorEventListener接口实现了的传感器监听器
private SensorListener myListener = new SensorListener(){
public void onSensorChanged(int sensor,float[]values)
{
if(sensor == SensorManager.SENSOR_ORIENTATION)
{//判断是否为加速度传感器变化产生的数据
//计算出重力在屏幕上的投影方向
int directionDotXY[]=RotateUtil.getDirectionDot
(new double[]{values[0],values[1],values[2]}
);
//标准化xy位移量 }};
四、结束语
伴随着Android 硬件平台的不断升级换代,手机功能越来越强大,将会不断有更多的传感器应用在手机App开发中,使手机游戏的趣味性、娱乐性必将大放异彩。值得一提的是由于获取传感器数据比较耗费系统资源,因此要及时关闭。
[1]苏亚光,吴亚峰,索依娜.Android平台下传感器技术开发计步器应用.
[2]吴丽.Android姿态传感器在手机游戏开发中的应用[J].学术期刊,2014(9).