二十四、感测器.pptVIP

  • 0
  • 0
  • 约4.61千字
  • 约 23页
  • 2017-09-03 发布于天津
  • 举报
二十四、感测器

以工作方式分類,感測器可以分成基於硬體的感測器(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)

1亿VIP精品文档

相关文档