使用線性加速度感應器
線性加速度感應器用一個三維向量,提供裝置座標系中每個座標軸的加速度,但不包括重力。下列代碼顯示了如何擷取預設的線性加速度感應器的執行個體:
private SensorManager mSensorManager;
private Sensor mSensor;
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);
概念上,這種感應器根據下列關係來 提供加速度資料:
線性加速度 = 加速度 – 重力加速度通常,在想要擷取沒有重力影響的加速度資料時,使用這種感應器。例如,你能夠使用這種感應器來看你的汽車運行速度。線性加速度感應器始終有一個位移量,你需要刪除這個位移量。做這件事的最簡單的方法就是在你的應用程式中建立一個校準處理。在校準期間,你能夠要求使用者把裝置放到案頭上,讀取所有三軸的位移量,然後從加速度感應器中讀取的資料中直接減去對應的位移量,來擷取線性加速度。該感應器的座標系統與加速度感應器的座標系相同,它的測量單位是(m/s2)。使用旋轉向量感應器旋轉向量用角和軸的組合來代表裝置的取向,即裝置繞著軸(X、Y或Z)旋轉角度θ。下列代碼顯示了如何擷取預設的旋轉向量感應器的執行個體:privateSensorManager mSensorManager;privateSensor mSensor;...mSensorManager =(SensorManager) getSystemService(Context.SENSOR_SERVICE);mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);這三個旋轉向量元素分別被表述以下形式:x*sin(θ/2)y*sin(θ/2)z*sin(θ/2) 其中sin(θ/2)是旋轉的數量,旋轉軸的方向是旋轉向量的方向。這三個旋轉向量元素等於一個四元數(cos(θ/2),X*sin(θ/2),Y*sin(θ/2),Z*sin(θ/2)的最後三部分。旋轉向量元素是無單位的。X、Y和Z軸的定義與加速度感應器相同。該參照座標系統是用直接正交基來定義的(1)
圖1.旋轉向量感應器使用的座標系統
這個座標系統有以下特點:
1. X軸是用向量積YxZ來定義的,它在裝置的當前位置與地面相切,並指向東方;
2. Y軸在裝置當前位置與地面相切,並指向地磁場的北極。
3. Z指向天空,並垂直與地面。
Android SDK提供了一個示範如何使用旋轉向量感應器的應用程式範例。這個執行個體應用程式位於API Demos代碼中(OS-RotationVectorDemo)