A. IM即時通訊開發如何實現android版智能心跳機制
IM即時通訊開發如何實現Android版智能心跳機制。
大體思路
a)延遲心跳測試法:這是測試結果准確的前提保障,我們認為長連接建立後連續三次成功的短心跳就可以很大程度的保證下一次心跳環境是正常的。
b)成功一次認定,失敗連續累積認定:成功是絕對的,連續失敗多次才可能是失敗。
c)臨界值避免:我們使用比計算出的心跳稍微小一點的值做為穩定心跳避免臨界值。
d)動態調整:即使在一次完整的智能心跳計算過程中,我們沒有找到最好的值,我們還有機會來進行校正。
方案需考慮到影響連接壽命的思素
在Android下,不管是GCM,還是微信,都是通過TCP長連接來進行消息收發的,TCP長連接存活,消息收發就及時,所以要對影響TCP連接壽命的因素進行研究。
1、NAT超時
大部分移動無線網路運營商都在鏈路一段時間沒有數據通訊時,會淘汰 NAT 表中的對應項,造成鏈路中斷(NAT超時的更多描述見附錄9.1)。NAT超時是影響TCP連接壽命的一個重要因素(尤其是國內),所以客戶端自動測算NAT超時時間,來動態調整心跳間隔,是一個重要的優化點。
2、DHCP的租期 (lease time)
目前測試發現安卓系統對DHCP的處理有Bug,DHCP租期到了不會主動續約並且會繼續使用過期IP,這個問題會造成TCP長連接偶然的斷連。(租期問題的具體描述見附錄9.2)。
3、網路狀態變化
手機網路和WIFI網路切換、網路斷開和連上等情況有網路狀態的變化,也會使長連接變為無效連接,需要監聽響應的網路狀態變化事件,重新建立Push長連接。
心跳范圍選擇
1、前後台區分處理:
為了保證微信收消息及時性的體驗,當微信處於前台活躍狀態時,使用固定心跳。微信進入後台(或者前台關屏)時,先用幾次最小心跳維持長鏈接。然後進入後台自適應心跳計算。這樣做的目的是盡量選擇用戶不活躍的時間段,來減少心跳計算可能產生的消息不及時收取影響。
2、後台自適應心跳選擇區間:
可根據自身產品的特點選擇合適的心跳范圍。
自適應心跳演算法量化描述
因為每個網路的NAT時間可能不一致。所以需要區分計算,數據網路按subType做關鍵字,WIFI按WIFI名做關鍵字。對穩定的網路,因為NAT老化時間的存在,在自適應計算態的時候,暫設計以下步驟在當前心跳區間逼近出最大可用的心跳。 即時通訊聊天軟體app開發可以加蔚可雲的v:weikeyun24咨詢
a)變數說明:
[MinHeart,MaxHeart]——心跳可選區間。
successHeart——當前成功心跳,初始為MinHeart
curHeart——當前心跳初始值為successHeart
heartStep——心跳增加步長
successStep——穩定期後的探測步長
經過該流程,會找到必然使心跳失敗的curHeart(或者MaxHeart),為了保險起見,我們選擇比前一個成功值稍微小一點的值作為後台穩定期的心跳間隔。
影響手機網路測試的因素太多,為了盡量保證測試結果的可靠性,我們使用延遲心跳測試法。在我們重新建立TCP連接後,先使用 短心跳連續成功三次,我們才認為網路相對穩定,可以使用curHeart進行一次心跳測試。圖4-2顯示了一次有效心跳測試過程。圖4-3顯示了在沒有達到穩定網路環境時,我們會一直使用固定短心跳直到滿足三次連續短心跳成功。
使用延遲心跳測試的好處是,可以剔除偶然失敗,和網路變化較大的情況(如地鐵),使測試結果相對可靠(五次延遲測試確定結論)。同時在網路波動較大的情況,使用短心跳,保證收取消息相對及時。
c)運行時的動態調整策略(已經按測算心跳穩定值後)
NAT超時值算出來後,在維持心跳的過程中的策略。
- 無網路、網路時好時壞、偶然失敗、NAT超時變小:
在後台穩定期發生心跳發生失敗後,我們使用延遲心跳測試法測試五次。如果有一次成功,則保持當前心跳值不變;如果五次測試全失敗,重新計算合理心跳值。該過程如圖4-4所示,有一點需要注意,每個新建的長連接需要先用短心跳成功維持3次後才用successHeart進行心跳。
NAT超時變大:
以周為周期,每周三將後台穩定態調至自適應計算態,使用心跳延遲法往後探測心跳間隔。
- successHeart是NAT超時臨界值:
因為我們現在選擇的是一個比successHeart稍小的值作為穩定值,所以在計算過程中可以避開臨界值。當運營商在我們後台穩定期將NAT超時調整為我們當前計算值,那麼由於我們每周會去向下探索,所以下一周探測時也可以及時調整正確。
d)冗餘Sync和心跳
在用戶的一些主動操作以及聯網狀態改變時,增加冗餘Sync和心跳,確保及時收到消息。
1、當用戶點亮屏幕的時候,做一次心跳。
2、當微信切換到前台時,做一次Sync。
3、聯網時重建信令TCP,做一次Sync。
可能存在的風險及預防措施
DHCP租期因素:
1、問題:根據目前的測試結果顯示,安卓不續約到期的IP Bug,會導致TCP連接在不確定的時間點失效,從而會導致一次心跳失敗。
2、預防:統計後台穩定期的心跳成功率,上報給後台。後台可以按地區分網路監控這個指標的波動,並且後台可以根據不同的波動,動態調整某區域特定網路下可選的心跳區間。
NAT超時介紹
因為 IP v4 的 IP 量有限,運營商分配給手機終端的 IP 是運營商內網的 IP,手機要連接 Internet,就需要通過運營商的網關做一個網路地址轉換(Network Address Translation,NAT)。簡單的說運營商的網關需要維護一個外網 IP、埠到內網 IP、埠的對應關系,以確保內網的手機可以跟 Internet 的伺服器通訊。
B. ANDROID手機攝像頭 測心率 的原理是什麼
准確的手機檢測心率軟體是需要一定的手機硬體支持的。將感測器的監測功能嵌入智能手機當中,同時將手機放在身體的不同位置。用戶可以將手機放在口袋或包里,可以在看視頻或聽一段語音對話時使用。
手機檢測心率軟體的項目目標是開發一個自動按照以往獲得人體正常心跳和呼吸頻率的方法,來恢復脈搏和呼吸波形。該種方法的准確性可與美國食品與葯物管理局(FDA)批準的監測心電圖(ECG)和呼吸的設備相抗衡。
(2)android心跳服務擴展閱讀:
裝有植入式心臟探測器的手機心率監測軟體在診斷不明原因暈厥和心悸患者方面很有前景。這種心律失常檢測技術具有重要的臨床應用價值。
隨著技術的進步,移植心臟檢測設備小型化和多功能化逐漸發展,可以幫助患者臨床,尤其是老人,行動不便,就醫困難的老年人家庭社區衛生監測和早期預警和診斷和治療,老齡化社會的進步在醫療衛生領域的管理。
C. android 怎樣將心電數據轉化為心率值
計算心率前先要判斷是否有心律不齊.
判斷的方法是:計算所有相鄰的PP或RR間期相互間的差值,如果大於0.12秒即為心律不齊,如果小於則為齊.
▲若心律齊,用公式算:
心率=60/(PP或RR間期)
▲若心律不齊,估算:
數3秒內的心跳次數,乘以20的值就是心率.
也可數4秒的,乘以15;5秒的乘以12;6秒的乘以10,依此類推.
D. android 消息推送是什麼,消息推送一般是怎麼做的
是從伺服器不定的向手機客戶端即時推送各種通知消息。消息推送方法是: