標籤:時報 port tty void code nexus public stand def
概念及原理計步感應器介紹
Android KitKat has added a few more hardware sensors to it’s API list. Step Sensors are one of them, which looks very promising. Although, not a lot of phones yet have these Step Sensors, in the future, this would gradually become a standard I think. Currently, Nexus 5 has them.
Step Counter: This keeps a count of the number of steps that you have taken. The counter is only reset when you re-boot the device, else, for every step you take (or the phone thinks you took, you counts up).
Step Detector: This sensor just detects when you take a step. That’s [email protected]link
Step counter sensor
TYPE_STEP_COUNTER:計步器(記錄曆史步數累加值)
這種類型的感應器返回使用者自上次重新啟用以來所採取的步驟數。 該值作為浮點數返回(小數部分設定為零),僅在系統重新引導時才將其重設為零。 事件的時間戳記設定為採取該事件的最後一步的時間。 該感應器以硬體實現,預計功耗低。 如果要持續跟蹤長時間的步數,請勿取消註冊該感應器,以便即使AP處於掛起模式,也會在後台繼續計數步驟,並且當AP處於掛起狀態時報告彙總計數 蘇醒。 應用程式需要保留該感應器的註冊,因為如果沒有啟用步進計數器不計數步驟。 該感應器適用於健身跟蹤應用。 它被定義為REPORTING_MODE_ON_CHANGE感應器。
Step detector sensor
TYPE_STEP_DETECTOR:檢測器(檢測每次步伐資料)
這種類型的感應器每次使用者觸發一個事件。 唯一允許的傳回值為1.0,並為每個步驟產生一個事件。 與任何其他事件一樣,時間戳記表示事件(這裡是步驟)何時發生,這對應於當腳撞到地面時,產生加速度的高變化。 該感應器僅用於檢測每個單獨的步驟,例如執行航位推算。 如果您只需要在一段時間內累積的步數,請註冊TYPE_STEP_COUNTER。 它被定義為REPORTING_MODE_SPECIAL_TRIGGER感應器。@link
API部分
使用:@link1、使用感應器之前首先擷取SensorManager通過系統服務擷取:SensorManager mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);2、擷取我們需要的感應器類型://單次有效計步Sensor mStepCount = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);//系統計步累加值Sensor mStepDetector = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);3、註冊監聽者(監聽感應器事件)mSensorManager.registerListener(this, mStepDetector, SensorManager.SENSOR_DELAY_FASTEST);mSensorManager.registerListener(this, mStepCount, SensorManager.SENSOR_DELAY_FASTEST);PS:取消註冊:mSensorManager.unregisterListener(this, mStepDetector);mSensorManager.unregisterListener(this, mStepCount);4、實現SensorEventListener介面,重寫方法並擷取資料:從監聽到的感應器事件中選取合適的類型,獲得資料:@Overridepublic void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == sensorTypeC) { //event.values[0]為計步曆史累加值 tvAllCount.setText(event.values[0] + "步"); } if (event.sensor.getType() == sensorTypeD) { if (event.values[0] == 1.0) { mDetector++; //event.values[0]一次有效計步資料 tvTempCount.setText(mDetector + "步"); } }}
參考:
Android計步模組最佳化 項目應用
android-4-4-step-detector-and-counter
Android 計步功能-簡單實現
android計步功能初探 基於加速度感應器
安卓 計步感應器