- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二十四、感测器
以工作方式分類,感測器可以分成基於硬體的感測器(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元件顯示行動裝置上可以使用的所有感測器;當使用者敲清單上
文档评论(0)