Android特色開發 1 感測器

2021-09-06 09:48:27 字數 2353 閱讀 4776

參考書籍:《android應用開發揭秘》第9章

android 是乙個面向應用程式開發的豐富平台,它擁有許多具有吸引力的使用者介面元素、資料管理和網路應用等優秀的功能。android 還提供了很多頗具特色的介面。本文我們將分別介紹這些吸引開發者眼球的特色開發,主要包括:感測器系統(sensor)、語音識別技術 (recognizerintent)、google map和用來開發桌面的外掛程式(widget)。

google android作業系統中內建了很多感測器,比如g1自帶了乙個非常實用的加速感應器(微型陀螺儀),有了它,g1手機就支援重力感應、方向判斷等功能,在部分遊戲或軟體中可以自動識別螢幕的橫屏、豎屏方向來改變螢幕顯示布局。下面是android中支援的幾種感測器:

sensor.type_accelerometer:加速度感測器。

sensor.type_gyroscope:陀螺儀感測器。

sensor.type_light:亮度感測器。

sensor.type_magnetic_field:地磁感測器。

sensor.type_orientation:方向感測器。

sensor.type_pressure:壓力感測器。

sensor.type_proximity:近程感測器。

sensor.type_temperature:溫度感測器。

下面我們通過乙個例子來分析android中感測器的使用,這裡分析的是方向感測器(type_orientation)。

要在android中使用感測器,首先需要了解sensormanager和sensoreventlistener。顧名思義,sensormanager就是所有感測器的乙個綜合管理類,包括了感測器的種類、取樣率、精準度等。我們可以通過getsystemservice 方法來取得乙個sensormanager物件。**如下:

sensormanager msensormanager = (sensormanager)getsystemservice(sensor_service);

取得sensormanager物件之後,可以通過getsensorlist方法來獲得我們需要的感測器型別,儲存到乙個感測器列表中。通過如下**可以得到乙個方向感測器:

list sensors = msensormanager.getsensorlist(sensor.type_orientation);

要與感測器互動,應用程式必須註冊以偵聽與乙個或多個感測器相關的活動。android中提供了registerlistener來註冊乙個感測器,並提供了unregisterlistener來解除安裝乙個感測器。registerlistener方法包括3個引數:第1個引數,接收訊號的 listener例項;第2個引數,想接收的感測器型別的列表(即上一步建立的list物件);第3個引數,接收頻度。呼叫之後返回乙個布林值,true表示成功,false表示失敗。當然,之後不再使用時,我們還需要解除安裝。**如下:

//註冊感測器

boolean mregisteredsensor = msensormanager.registerlistener(this, sensor,

sensormanager.sensor_delay_fastest);

//解除安裝感測器

msensormanager.unregisterlistener(this);

其中,sensoreventlistener是使用感測器的核心部分,包括以下兩個方法必須實現:

onsensorchanged (sensorevent event) 方法在感測器值更改時呼叫。該方法只由受此應用程式監視的感測器呼叫。該方法的引數包括乙個sensorevent物件,該物件主要包括一組浮點數,表示感測器獲得的方向、加速度等資訊。例如,以下**可以取得其值:

float x = event.values[sensormanager.data_x];

float y = event.values[sensormanager.data_y];

float z = event.values[sensormanager.data_z];

onaccuracychanged (sensor sensor,int accuracy) 方法在感測器的精準度發生改變時呼叫。其引數包括兩個整數:乙個表示感測器,另乙個表示該感測器新的準確值。

sensormanager中還有很多常量和一些常用的方法,如下:

getdefaultsensor:得到預設的感測器物件。

getinclination:得到地磁感測器傾斜角的弧度值。

getorientation:得到裝置旋轉的方向。

getsensorlist:得到指定感測器的列表。

例子中演示了如何獲得方向感測器的方向、加速度等資訊,我們可以根據得到的數值與上一次得到的數值之間的關係來進行需要的操作。

Android感測器開發詳解

效果圖 連線真機milestone,編譯並執行程式,顯示結果如下 結合程式我們做一些解釋。1 android所有的感測器都歸感測器管理器 sensormanager 管理,獲取感測器管理器的方法很簡單 string service name context.sensor service sensor...

感測器 1 感測器緒論

感測器 測量儀表火組成元件是否準確可靠 測量方法是否完善 測量儀表安裝 調整或放置是否正確合理 感測器或儀表工作場所的環境條件是否符合規定條件 測量者操作是否正確 二 系統誤差的消除 在測量結果中進行修正 消除系統誤差的根源 在測量系統中採用補償措施 實時反饋修正 以正態分佈為前提 例題 mems工...

Android感測器(一) 感測器列表

感測器型別有很多種 每個android手機含有其中幾種感測器 通過乙個小例子實現 tx1 textview findviewbyid r.id textview01 從感測器管理器中獲得全部的感測器列表 listallsensors initsensors 顯示有多少個感測器 tx1.settext...