二十四、感測器.

Slides:



Advertisements
Similar presentations
项目二: 整体及一般检查 1. 任务一 整体状态的观察 一、体格发育 二、营养程度 三、精神状态 四、姿势与体态 五、运动与行为 2.
Advertisements

哈工大计算机科学与技术学院软件基础教研室 第二部分 Android 与工程和科研 授课教师:李治军 综合楼 411 室 第 5 讲 Android 人机交互与游戏 Lecture 5: Human-Computer Interface in Android.
國立東華大學會計系 104 學年度大學部 Orientation 系主任 周雅英博士 2015 年 9 月 5 日.
從 Android SDK 3.0 開始增加了 2 個新的類別: Fragment 與 Action Bar 。 Fragment 提供不同佈局畫面的另一種用法,但 設計更有彈性,更能針對螢幕大小變化,採用 最合適的設計,例如對較大螢幕的平板裝置, 它可以在一個活動的畫面同時顯示 2 個 Fragment.
3D 動畫製作 ZOMBIE WORLD Z 學生: 王奕棠 ( ) 邱昱瑋 ( ) 黃茗新 ( ) 指導老師:陳兆南.
★-光之魔術系列-★ 「熊貓」變「白熊」!? 主講人》 清大物理系 戴明鳳 教授 清大科普團隊製作.
智慧型感測器產業概況.
惠州市星聚宇光学有限公司 简介
課程地圖 (104年入學-日間部) 校通識核心 專業課程 必修與選修 與管理模組 網路技術 App設計與應用模組 學院通識核心 學院專業核心
问卷调查的规范与技术 问卷调查的规范与技术.
人 工 智 慧 報 告 五子棋AI設計 報告者 : 潘輝銘.
社區醫學相關選修~ 社區醫療實務 課程介紹.
99年成語200題庫(21-40).
中小企業經營管理 第五版 梁鴻民 著 3 PART 中小企業之 經營管理 中小企業經營管理.
第10章 面向对象的设计方法 教学目的:了解面向对象设计的概念和方法 教学重点:理解面向对象的设计的基本原理,掌 握面向对象的设计方法。
生物科 陳鳳娟老師.
救赎的神 冯秉诚.
院長:鄭錦聰 教授 各系負責老師 光電系:姬梁文老師 電機系:張凱雄老師 資工系:謝仕杰老師 電子系:陳柏宏 老師
位置與地圖應用 此投影片為講解Android如何取得定位經緯度和使用Google Map地圖.
研究生 :鍾哲民 指導教授:王宗一 報告者 :林谷霖 課程指導:蘇德仁
報告人:古博文 彰師大運動健康研究所副教授 人權教育基金會執行長 100年8月
屏東教育大學教育學院第三任院長候選人 治理院務的理念與實踐 感恩 ‧服務‧回饋 張慶勳
生產自動化 感測器.
荷福威士顿机器人科技有限公司 上海荷福集团
黃壬來教授 臺灣文藻外語學院傳播藝術系系主任 李樂華博士 教育統籌局課程發展處藝術教育組 高級課程發展主任(視覺藝術)
3.2 微分和求导法则 函数的和、差、积、商的微分与求导法则 反函数的微分与求导法则 复合函数的微分与求导法则 基本求导法则与导数公式
九十八學年度水土保持學系 碩士在職專班 專題討論(四) 9375
手外伤与断指再植 上海第二医科大学 附属第九人民医院骨科.
班級:四資工3B 指導老師:林建良 組員: 姚維杰、 林育誠、許耿銘
Services of the Mobile and Use of Communication Network
第一届 小型无人机技术创新竞赛 (技术培训)
Chapter 13 Android 實戰演練.
Iconia Tab A500 產品介紹 March
實驗十三:顯示目前經緯度位置.
智慧電子應用設計導論(1/3) Sensor-III
第四章 系統內部控制設計.
第11章 Android GPS位置服务与地图编程
Arduino 藍牙通訊模組.
ContentProvider與資料共享
CH7 佈局、按鈕與文字編輯元件.
專題報告 組員:吳家齊,江弘喻.
Short Version :. 11. Rotational Vectors & Angular Momentum 短版:. 11
第八章 欧氏空间 8.1 向量的内积 8.2 正交基 8.3 正交变换 8.4 对称变换和对称矩阵.
LabVIEW交流.
陀螺仪 指导教师:朱姗姗.
第10章 GPS位置服务与地图编程.
第二章 商业银行资本管理.
人機介面 Android 平台應用程式開發 簡介
專題名稱:Android App應用於訊號量測平台 指導教授:陳永欽
第4讲 函数y=Asin(ωx+φ) 的图象及应用
The Software Company Game
感側期末報告概續 樂高機器人 NXT 設計與應用 資工四甲 黃鼎峰.
运动学 第一章 chapter 1 kinematices.
Electric Current and Magnetic Field
3-3 錐度車削方法 一、尾座偏置車削法 二、錐度附件車削法 三、複式刀座車削法.
行動應用App基本資安檢測實驗室 檢測服務說明
Summary : 3. Motion in 2- & 3-D 摘要: 3. 二及三維運動
加速及方向感測器 靜宜大學資管系 楊子青.
聚合型第一種:隱沒帶、島弧 例子:臺灣東方的琉球海溝、南美洲智利海溝. 聚合型第一種:隱沒帶、島弧 例子:臺灣東方的琉球海溝、南美洲智利海溝.
第16章 天气预报 --Web Service调用
剛體的旋轉 Rotation of Rigid Body
Arduino 藍牙通訊模組.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
三角比的恆等式 .
加速感測器 靜宜大學資管系 楊子青.
104學年度 進修學校期初工作報告.
函数 y=Asin(x+) 的图象 2019/9/15.
第一章 三角函数 1.5函数y=Asin(ωx+φ)的图象.
烟草流行调查 平板电脑设置及调查软件介绍 中国疾病预防控制中心控烟办公室
精進優質 計畫方案 104-1良師甲工精進教學計畫 計畫目標 各教學單位辦理教師增能研習,期能對新課程的架構與 精神有更深一層的認知與準備。
Presentation transcript:

二十四、感測器

一、感測器 以工作方式分類,感測器可以分成基於硬體的感測器(hardware-based sensor)與基於軟體的感測器(software-based sensor)。 於硬體的感測器是內建在行動裝置上的實際元件,它們以直接量測特定環境因素而取得資料,例如加速計、光度計等。 基於軟體的感測器則是硬體感測器的模擬,並沒有真正的實體,它們提供的資料是取自硬體感測器,並經過運算、過濾或與其他感測器資料結合等處理而產生。

如果以感測器的功能分類,Android系統支援的感測器可以分成以下3類: 位置感測器(Position sensor):這一類感測器量測行動裝置的實際位置,例如方位感測器(Orientation sensor)、磁力計(Magnetometer)等。 運動感測器(Motion sensor):量測行動裝置3個軸向的加速度或角速度,例如加速計(Accelerometer)、陀螺儀(Gyroscope)等。 環境感測器(Environmental sensor):量測行動裝置所在環境的不同環境參數,像是量測環境溫度的溫度感測器(Temperature sensor)、量測環境亮度的亮度計(Photometer)等。

二、感測器應用程式開發步驟 Android SDK提供了相當完備的感測器開發框架與介面、類別,這些介面與類別都位於「android.hardware」套件中,主要有以下幾項: SensorManager 此類別用以建立感測器服務的實體,因此是以Context的「getSystemService(Context.SENSOR_SERVICE)」方法取得。

要存取指定的感測器,可以透過「getDefaultSensor(int type)」方法,或用「getSensorList(int type)」方法取得行動裝置中所有可以使用的指定型式感測器清單。 SensorManager sensorManager=(SensorManager) context.getSystemService(Context.SENSOR_SERVICE); Sensor accelerometer=sensorManager.getDefaultSensor (Sensor.TYPE_ACCELEROMETER); Sensor 此類別就表示一個感測器,提供有代表各種感測器型式的常數,以及一些可以取得感測器能力的方法。 SensorEvent 此類別是用以建立感測器事件的物件,它以欄位儲存一些與感測事件相關的資訊。

SensorEventListener 此介面的作用是在感測器量測的值發生改變,或是感測器精度發生改變時,接受系統的通知。 實作此介面時必須實作它的2個抽象方法,「onSensorChanged(SensorEvent event)」方法是感測器量測值改變時,由系統回呼的方法;「onAccuracyChanged(Sensor sensor, int accuracy)」方法是對指定感測器設定新的精度時,由系統回呼的方法。 為感測器登錄事件偵聽器時,需要設定事件的延遲(即事件觸發的頻率),這延遲設定相當重要,設定的太頻繁會耗用太多電力,設定頻率太低則可能會降低量測的準確度。此延遲一般是藉由SensorManager類別的常數設定,可以設定的常數有:

SENSOR_DELAY_NORMAL:200000微秒,是預設的觸發頻率,適合用於偵聽螢幕方位改變的事件。 SENSOR_DELAY_UI:60000微秒,適合用於偵聽使用者介面的事件。 SENSOR_DELAY_GAME:20000微秒,適合用於偵聽遊戲中的事件。 SENSOR_DELAY_FASTEST:0微秒,表示以系統最大的能力盡快更新量測資料。

感測器使用的座標系統

感測器應用程式建置架構如下: 用「getSystemService()」方法從系統取得感測器服務的實體。 用「getDefaultSensor()」或「getSensorList()」方法取得要使用感測器的參考。 實作SensorEventListener介面,並依程式的目的設計onSensorChanged(SensorEvent event)與onAccuracyChanged(Sensor sensor, int accuracy)回呼方法。 用「registerListener()」方法登錄感測器事件的偵聽器,一般會在活動的onResume()方法中登錄偵聽器。

當不再需要使用感測器的時候,用「unregisterListener()」方法取消對感測器事件偵聽器的登錄,這一般建議放在活動的onPause()方法中處理。 SensorsList Test範例 以ListView元件顯示行動裝置上可以使用的所有感測器;當使用者敲清單上任何一個感測器,程式將以Toast物件顯示此感測器的名稱、型式(數字代碼)、製造商等訊息。 範例詳細內容請參考原書。

三、位置感測器應用 Android系統主要以地磁場感測器(geomagnetic field sensor)與方位感測器(orientation sensor)決定行動裝置的位置,另以近接感測器(proximity sensor)判斷行動裝置的螢幕有多接近一個物體。 地磁場感測器 地磁場感測器量測對地球磁場的變化,是基於硬體的感測器。

它在一個感測事件中提供3個軸向的磁場值,分別以SensorEvent. values[0]表示X軸、SensorEvent 它在一個感測事件中提供3個軸向的磁場值,分別以SensorEvent.values[0]表示X軸、SensorEvent.values[1]表示Y軸、SensorEvent.values[2]表示Z軸的磁場強度。 private SensorManager sensorManager; private Sensor sensor; ..... sensorManager = (SensorManager)getSystemService (Context.SENSOR_SERVICE); sensor = sensorManager.getDefaultSensor (Sensor.TYPE_MAGNETIC_FIELD); …..

近接感測器 近接感測器也是基於硬體的感測器,主要作用是決定一個物體與行動裝置的距離,它在一個感測事件中,只提供一個量測值。 private SensorManager sensorManager; private Sensor sensor; ..... sensorManager = (SensorManager)getSystemService (Context.SENSOR_SERVICE); sensor = sensorManager.getDefaultSensor (Sensor. TYPE_PROXIMITY); …..

方位感測器 方位感測器可以用來偵測行動裝置相對於地磁北的位置,是基於軟體的感測器,它的資料來自加速計與地磁場感測器。方位感測器在一個感測事件中也同時提供3個軸向的方位角,分述如下: 擺動角(Yaw),存於SensorEvent.values[0]中;是繞Z軸轉動後,行動裝置Y軸與磁北之間的夾角,以Y軸朝X軸方向轉動為正,因此當行動裝置Y軸指向磁北時,此角度為0,指向東方時為90度,值的範圍0~360。 抬頭角(Pitch),存於SensorEvent.values[1]中;是繞X軸轉動的角度,以Y軸朝Z軸方向轉動為正,值的範圍180~-180。

滾動角(Roll),存於SensorEvent.values[2]中;是繞Y軸轉動的角度,以Z軸朝X軸方向轉動為正,值的範圍90~-90。 private SensorManager sensorManager; private Sensor sensor; ..... sensorManager = (SensorManager)getSystemService (Context.SENSOR_SERVICE); sensor = sensorManager.getDefaultSensor (Sensor. TYPE_ORIENTATION); …..

Compass Test範例 以方位感測器的擺動角旋轉螢幕上的羅盤圖形,使羅盤的指針指向北方。 範例詳細內容請參考原書。

四、運動感測器應用 運動可以是來自使用者的操作,例如使用者搖動,這類型的運動是相對於裝置本身座標系統的運動;運動也可以是因為行動裝置所處環境造成,例如行動裝置隨著使用者移動,這類型的運動則是相對於實際環境的位置變化。

線性加速計(Linear Accelerometer) 加速計量測行動裝置在3個軸所承受的加速度,其中SensorEvent.values[0]表示X軸的值、SensorEvent.values[1]為Y軸的值、SensorEvent.values[2]為Z軸的值,量測值包括重力影響。 使用時必須指定「TYPE_ACCELEROMETER」型式常數。 線性加速計(Linear Accelerometer) 與加速計主要的差別是它的量測值已經將重力影響扣除,另外線性加速計是基於軟體的感測器。

旋轉向量感測器(Rotation Vector Sensor) 使用時必須指定「TYPE_LINEAR_ACCELERATION」型式常數。 陀螺儀(Gyroscope) 陀螺儀量測繞行動裝置3個軸旋轉的角速度,使用時必須指定「TYPE_GYROSCOPE」型式常數。 旋轉向量感測器(Rotation Vector Sensor) 當行動裝置繞它的一個軸旋轉一個角度時,旋轉向量感測器的量測值是以此軸和角度的組合表示裝置的方位,分別以x×sin(θ/2)、y×sin(θ/2)、z×sin(θ/2)表示,其中旋轉向量的大小為「sin(θ/2)」。其座標系統定義如下:

重力感測器(Gravity Sensor) X為Y和Z的向量積(外積),與裝置目前位置地表相切且指向東方。 Y與裝置目前位置地表相切且指向北方。 Z與裝置目前位置地表垂直且指向天空。 使用時必須指定「TYPE_ROTATION_VECTOR」型式常數。 重力感測器(Gravity Sensor) 以3維向量指示重力的方向與大小,使用時必須指定「TYPE_GRAVITY」型式常數。 RollingBall Test範例 用加速計做個簡單方向控制的展示。

一開始有一個球位於螢幕中央,當使用者轉動行動裝置時,這個球會朝向行動裝置低的位置滾動。 範例詳細內容請參考原書。

五、環境感測器應用 Android系統提供的環境感測器共有5種:行動裝置溫度感測器(量測裝置本身的溫度)、環境溫度感測器(量測裝置四周的環境溫度)、相對濕度感測器、壓力感測器與光度計。 共同特性是,它們都是基於硬體的感測器,而且在一個感測事件中只提供一筆資料,但仍然是以陣列的形式提供。

SensorManager為各感測器定義的型式常數如下: 裝置溫度感測器:TYPE_TEMPERATURE 環境溫度感測器:TYPE_AMBIENT_TEMPERATURE 相對濕度感測器:TYPE_RELATIVE_HUMIDITY 壓力感測器:TYPE_PRESSURE 光度計:TYPE_LIGHT LightSensor Test範例 是單純的展示光度計的使用。 範例詳細內容請參考原書。