1. 程式人生 > >Android感測器---Motion Sensor(四)

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

使用線性加速度感測器

線性加速度感測器用一個三維向量,提供裝置座標系中每個座標軸的加速度,但不包括重力。下列程式碼顯示瞭如何獲取預設的線性加速度感測器的例項:

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)

相關推薦

Android感測器---Motion Sensor

使用線性加速度感測器 線性加速度感測器用一個三維向量,提供裝置座標系中每個座標軸的加速度,但不包括重力。下列程式碼顯示瞭如何獲取預設的線性加速度感測器的例項: private SensorManager mSensorManager; private Sensor mSen

Android項目實戰:ViewPager切換動畫3.0版本以上有效果

技術 code info utf-8 play draw pos support addview 原文:Android項目實戰(四):ViewPager切換動畫(3.0版本以上有效果)學習內容來自“慕課網” 一般APP進去之後都會有幾張圖片來導航,

Android開發 - 掌握ConstraintLayout建立基本約束

上一篇我們介紹了編輯器的基本使用,本文我們介紹建立基本的約束。 "約束"表示View之間的位置關係。當我們在ConstraintLayout佈局中建立View時,如果我們沒有新增任何約束,雖然在設計檢視我們可以拖動它們到任意位置,但是執行後都會在左上角的原點位置,同時代碼中也會給出警告: 所以我們必須

Qt入門 Qt中Android環境的設定

前言 Qt的優越性在於其是一個跨平臺的C++圖形使用者介面應用程式開發框架。 當你在電腦上寫了一個小demo,然後想在你的Android手機上釋出,這個時候,你需要使用Qt編譯出安卓應用程式。 關於過程,你可以看本篇文章。 安裝JDK:編譯Android程式必需的Java開發

Android自定義元件

1.陰影 陰影即可以為文字和圖形指定陰影,預設情況下,我們的文字和圖形都是繪製在主層(main layer)上,我們也可以將內容繪製到新的layer上,實際上陰影就是在main layer的下面添加了一個陰影層。 Paint類為此定義了一個名為setShadowLayer

Android Broadcast原理分析之Android新版本限制

目錄 概述 官方文件介紹 原始碼解析 適配 1. 概述 隨著Android版本不斷迭代,Android對後臺的管控越來越嚴格,對於APP而言,通常來講後臺活躍的主要是廣播以及service,而Google對於後臺的管控也著重就在這兩個元件上,本篇文章主要介紹

我的Android NDK之旅android串列埠通訊-mac+串列埠除錯工具

一些關於串列埠的知識 什麼是串列埠 串列埠是計算機上一種非常通用裝置通訊的協議,不要與通用序列匯流排Universal Serial Bus(USB)混淆。大多數計算機包含兩個基於RS232的串列埠。串列埠同時也是儀器儀表裝置通用的通訊協議;很多GP

Android執行緒池ThreadPoolExecutor類原始碼解析

使用ThreadPoolExecutor private final int CORE_POOL_SIZE = 4;//核心執行緒數 private final int MAX_POOL_SIZE = 5;//最大執行緒數 priv

Android-五子連珠-MainActivity的Java程式碼

package com.example.administrator.wuziqi; import android.media.MediaPlayer; import android.support.v7.app.AppCompatActivity; impo

Android Gson詳解

一、TypeAdapter TypeAdapter 是Gson自2.0(原始碼註釋上說的是2.1)開始版本提供的一個抽象類,用於接管某種型別的序列化和反序列化過程,包含兩個注要方法 write(JsonWriter,T) 和 read(JsonReader)

Android感測器程式設計入門1

Android所有的感測器都歸感測器管理器 SensorManager 管理,獲取感測器管理器的方法很簡單: SensorManager sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVI

Android RecyclerView 詳解 RecyclerView分割線的使用和分割線樣式

package com.lw.myrecyclerview; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphi

Android自動化測試初探: 模擬鍵盤滑鼠事件Socket+Instrumentation實現

通過Socket + Instrumentation實現模擬鍵盤滑鼠事件主要通過以下三個部分組成:   *   Socket程式設計:實現PC和Emulator通訊,並進行迴圈監聽   *   Service服務:將Socket的監聽程式放在Service中,從而達到

Android系統啟動流程Launcher啟動過程與系統啟動流程

相關文章  Android系統架構與系統原始碼目錄  Android系統啟動流程(一)解析init程序啟動過程  Android系統啟動流程(二)解析Zygote程序啟動過程  Android系統啟動流程(三)解析SyetemServer程序啟動過程 前言

Android原始碼解析之-->HandlerThread

上一篇文章中我們講解了AsyncTast的基本使用以及實現原理,我們知道AsyncTask內部是通過執行緒池和Handler實現的,通過對執行緒池和handler的封裝實現了對非同步任務操作。更多關於AsyncTask相關的內容,可參考我的android原始

Android記憶體分析工具:adb命令

1.adb shell dumpsys meminfo yourpakagename Pss對應的TOTAL值:記憶體所實際佔用的值。 Dalvik Heap Size:從RuntimetotalMemory()獲得,DalvikHeap總共的記憶體大小。 Dalvik

Android面試題總結執行緒,多執行緒,執行緒池

1.開啟執行緒的三中方式?https://blog.csdn.net/longshengguoji/article/details/41126119(轉)https://blog.csdn.net/u012973218/article/details/51280044(轉)2

Kotlin在Android上的運用

13.Introduction Kotlin提供了一系列的to方法將一個集合型別轉換成另外一個集合型別。 這一部分的第一個任務很簡單,根據提示就可以完成,關於任務就不必多說。 先說明一下第二部分所有任務的資料模型。這一部分所有的任務都是圍繞一個商店(Sho

Android與js互動自定義cordova外掛

首先昨天我做測試的時候js端一直無法呼叫寫在js的方法後來查了資料才知道是在index.html中使用js時 需要刪除這一行 <meta http-equiv="Content-Security-Policy" content="default-src 'self'

Android外掛化探索免安裝執行Activity

在上一篇中,我們介紹了兩種免安裝啟動Activity的方法。但是那兩種方法都有缺陷,必須在AndroidManifest.xml中註冊。那麼今天,我們來探索其它幾種不需要在清單檔案中註冊的啟動方式。 靜態代理啟動activity 通過前幾篇的探索我們