日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 计步器 - 手机自带系统级的 健康运动App 授权

發布時間:2023/12/20 Android 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 授权的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。