Android 计步器 - 手机自带系统级的 健康运动App 授权
#1. Android 手機自帶系統級的 運動健康App
于是我整理一份列表,如下:
- 三星手機上的 “三星健康” ;? 三星開發者平臺:SDK:?Hello Health Data | Samsung Developers
- 華為手機上的“運動健康”;華為開發者平臺:SDK?文檔中心
- 小米手機上的“小米運動健康”; 小米開放平臺:接入網址??小米健康云開放平臺? ??
- 魅族手機上的: 計步器; ( 😭 還沒找到...)
- oppo手機上的: 運動計步;? ( 😭 還沒找到...)
- vivo手機不自帶“記步數”功能的
???數據同步 需要相應的手機官方授權,見上列表,我目前找到了 三星/ 華為/ 小米(因為計步器是華米出品)對接授權平臺,鏈接中如何對接 一有盡有!
如華為示例:(這里就偷懶截圖顯示了)
?? 注意:以上對接 需要去申請賬號,創建應用,獲取密鑰之類的數據來授權!
對于第三方應用同步數據,比如:?微信 - 微信運動 開啟后能獲取到對于手機上的步數,這里我試了華為手機和oppo手機,發現“微信運動”都能顯示出手機系統級的健康運動類應用的步數;但是我在vivo手機上剛開啟微信運動后,步數顯示 0,但是之后你的步數會實時記錄顯示。
闡明理解:(屬于個人理解)
1. 微信是通過對接相應的授權平臺,開啟“微信運動”后,如果手機存在系統級的計步器,即同步手機自帶計步器的步數顯示。
2. 對于手機不存在系統級的計步器,如vivo手機,開啟“微信運動”后,也無法獲取到已經運動的步數,只會顯示0;但是后面會顯示步數,是可以通過實現Android自帶的?步測器傳感器?來記錄步數。
(備注:具體記錄步數的靈明度數值,步數統計算法... 微信的高大上,我也不知道具體的實現,就不去做過多猜想)
3.?另外,我們也值得注意,微信已經是手機常駐型級別的應用,所以它在手機的后臺進程中會存在后臺服務,這也為?記錄步數 這樣行為提供了監聽的環境。
4. 雖然 Android自帶的計步傳感器(Sensor.TYPE_STEP_COUNTER)可以在應用關閉的時候繼續工作,因為是Android系統自帶的,但是它是重啟以來用戶邁出的步數,所以這個統計出來的數據并不是每天的步數,只是個總數,而且每次手機重啟后,都會置0!所以需要實現 持久的監聽步數,就需要存在常駐型的服務,得到手機系統的認可,不會殺掉你的進程,這對于現在對于Android 權限越來越重視的情況下,我研究不來這樣的“技術”!(歡迎討論...)
5. 如果我們的App必須要實現實時準確隔天計步的功能,其實還有一個方式可以,對接微信運動小程序來同步微信運動的數據,具體怎么對接,歡迎去百度,Google。
如果要實現打開App來準確計步的功能:其實也可以用Android自帶傳感器來實現;
以下簡單介紹下兩個傳感器:
#2.?Android自帶傳感器
1. 使用計步器傳感器
以下代碼展示如何獲取默認計步器傳感器的實例:
val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager val sensor: Sensor? = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)計步器傳感器?提供自已激活傳感器后最后一次重啟以來用戶邁出的步數。與步測器傳感器相比,計步器的延遲時間更長(最多 10 秒),但精確度更高。
?? 注意:如要保護運行應用的設備上的電池,您應使用?JobScheduler?類,從而以特定的時間間隔從計步器傳感器檢索當前值。盡管不同類型的應用需要不同的傳感器讀取間隔,但是除非您的應用需要來自傳感器的實時數據,否則應盡可能延長此間隔。
?? 注意:因為是重啟以來用戶邁出的步數,所以這個數據并不是每天的步數,只是個總數,而且每次手機重啟后,都會置0!?
2.?使用步測器傳感器
以下代碼展示如何獲取默認步測器傳感器的實例:
val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager val sensor: Sensor? = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR)每次用戶邁步時,步測器傳感器都會觸發事件。延遲時間預計將低于 2 秒。
????注意:使用?傳感器?您必須聲明?ACTIVITY_RECOGNITION 權限,以便您的應用在運行 Android?10 (API 級別 29) 或更高版本的設備上使用此傳感器。
需要在manifest中添加:
<!-- 您必須聲明 ACTIVITY_RECOGNITION 權限,以便您的應用在運行 Android 10 (API 級別 29) 或更高版本的設備上使用此傳感器。--><uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>在需要的地方(Activity)中添加申請權限:
private const val COARSE_REQUEST = 1001/*** Permissions required to make the app work!*/private val CHECK_PERMISSIONS = arrayOf(Manifest.permission.ACTIVITY_RECOGNITION)// 請求權限private fun requestPermissions() {ActivityCompat.requestPermissions(this,CHECK_PERMISSIONS,COARSE_REQUEST)}// 處理權限后回調方法override fun onRequestPermissionsResult(requestCode: Int,permissions: Array<out String>,grantResults: IntArray) {when (requestCode) {COARSE_LOCATION_REQUEST -> {if (allPermissionsGranted()) {// 同意了授權}else{// 拒絕了授權}}}}/*** Check if all permission specified in the manifest have been granted*/private fun allPermissionsGranted(): Boolean {return CHECK_PERMISSIONS.all {ContextCompat.checkSelfPermission(baseContext, it) == PackageManager.PERMISSION_GRANTED}}總結
以上是生活随笔為你收集整理的Android 计步器 - 手机自带系统级的 健康运动App 授权的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Almost Arithmetic Pr
- 下一篇: android sina oauth2.