Android感應器---Motion Sensor(四)

來源:互聯網
上載者:User

使用線性加速度感應器

線性加速度感應器用一個三維向量,提供裝置座標系中每個座標軸的加速度,但不包括重力。下列代碼顯示了如何擷取預設的線性加速度感應器的執行個體:

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)

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.