本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種計(jì)步器消息的上報(bào)方法及裝置。
背景技術(shù):
現(xiàn)有技術(shù)中,越來(lái)越多的軟件包含了計(jì)步的功能,例如,微信計(jì)步,QQ運(yùn)動(dòng)等,對(duì)于這些軟件來(lái)講,其對(duì)應(yīng)的步數(shù)是由終端中內(nèi)置的計(jì)步器檢測(cè)到步伐之后,在驅(qū)動(dòng)層將步伐數(shù)據(jù)上報(bào),應(yīng)用層的微信應(yīng)用、QQ應(yīng)用等應(yīng)用程序監(jiān)聽計(jì)步器上報(bào)的相關(guān)消息,然后將相應(yīng)的步數(shù)更新在微信計(jì)步頁(yè)面或QQ運(yùn)動(dòng)的計(jì)步頁(yè)面。
一般來(lái)講,計(jì)步器統(tǒng)計(jì)的步伐數(shù)據(jù)是存儲(chǔ)在相應(yīng)的芯片內(nèi)部的寄存器中,而該寄存器存在存儲(chǔ)的數(shù)值的最大值,例如,對(duì)于一個(gè)16位的寄存器來(lái)講,能存儲(chǔ)的步數(shù)的最大值為65535。在計(jì)步器統(tǒng)計(jì)的數(shù)據(jù)超過(guò)上述寄存器的最大值時(shí),相應(yīng)的數(shù)值會(huì)被直接歸零,這就是常見的溢出現(xiàn)象。
在計(jì)步器將統(tǒng)計(jì)到的數(shù)據(jù)進(jìn)行上報(bào)的過(guò)程中,若發(fā)生了數(shù)據(jù)的溢出,則本次上報(bào)的數(shù)據(jù)會(huì)明顯小于上一次上報(bào)的數(shù)據(jù),也就是說(shuō),寄存器中存儲(chǔ)的步數(shù)從一個(gè)較大的值跳變到一個(gè)較小的值。在發(fā)生數(shù)據(jù)溢出的情況下,相應(yīng)的應(yīng)用例如微信運(yùn)動(dòng)等,在檢測(cè)到計(jì)步器上報(bào)的步數(shù)之后,會(huì)直接上本次較小的步數(shù)值進(jìn)行統(tǒng)計(jì),但是因?yàn)閿?shù)據(jù)發(fā)生了溢出,而在統(tǒng)計(jì)的過(guò)程中并沒有考慮數(shù)據(jù)溢出對(duì)步數(shù)的實(shí)際值產(chǎn)生的影響,從而導(dǎo)致了統(tǒng)計(jì)的步數(shù)不能真實(shí)的反應(yīng)用戶實(shí)際的運(yùn)動(dòng)量,存在數(shù)據(jù)統(tǒng)計(jì)的準(zhǔn)確性不足的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
基于此,為解決傳統(tǒng)技術(shù)中的因計(jì)步器的寄存器可存儲(chǔ)的數(shù)據(jù)的大小限制導(dǎo)致計(jì)步器中統(tǒng)計(jì)的數(shù)據(jù)產(chǎn)生的溢出從而導(dǎo)致的步數(shù)統(tǒng)計(jì)的準(zhǔn)確性不足的技術(shù)問(wèn)題,特提出了一種計(jì)步器消息的上報(bào)方法。
一種計(jì)步器消息的上報(bào)方法,包括:
監(jiān)測(cè)計(jì)步器統(tǒng)計(jì)的步數(shù),在所述計(jì)步器統(tǒng)計(jì)的步數(shù)大于預(yù)設(shè)的步數(shù)閾值時(shí),生成中斷指令;
檢測(cè)計(jì)步器上報(bào)的中斷指令,根據(jù)所述中斷指令喚醒系統(tǒng),根據(jù)所述計(jì)步器統(tǒng)計(jì)的步數(shù)生成第一計(jì)步器消息,并通過(guò)驅(qū)動(dòng)層將所述第一計(jì)步器消息進(jìn)行上報(bào),所述第一計(jì)步器消息對(duì)應(yīng)第一步數(shù);
檢測(cè)計(jì)步器上報(bào)的第二計(jì)步器消息,獲取所述計(jì)步器消息對(duì)應(yīng)的第二步數(shù);
在所述第二步數(shù)小于第一步數(shù)時(shí),判定所述第二步數(shù)發(fā)生溢出,計(jì)算所述第一步數(shù)與所述第二步數(shù)的步數(shù)和,將所述步數(shù)和上報(bào)。
可選的,在一個(gè)實(shí)施例中,所述判定所述第二步數(shù)發(fā)生溢出的步驟還包括:
判斷檢測(cè)到所述第一計(jì)步器消息和所述第二計(jì)步器消息之間是否發(fā)生過(guò)重啟,若否,則判定所述第二步數(shù)發(fā)生溢出。
可選的,在一個(gè)實(shí)施例中,所述判定所述第二步數(shù)發(fā)生溢出的步驟還包括:
判斷檢測(cè)到所述第一計(jì)步器消息和所述第二計(jì)步器消息之間是否發(fā)生過(guò)計(jì)步器重置,若否,則判定所述第二步數(shù)發(fā)生溢出。
可選的,在一個(gè)實(shí)施例中,所述判定所述第二步數(shù)發(fā)生溢出的步驟之前還包括:
獲取與所述第一計(jì)步器對(duì)應(yīng)的第一時(shí)間,獲取與所述第二計(jì)步器對(duì)應(yīng)的第二時(shí)間;
根據(jù)所述第一時(shí)間和所述第二時(shí)間計(jì)算所述時(shí)間間隔;
計(jì)算第二步數(shù)與所述時(shí)間間隔的比值,在所述比值大于或等于預(yù)設(shè)的變化率閾值時(shí),判定所述第二計(jì)步器消息為偽造消息并生成步數(shù)異常的提示消息,在所述比值小于所述變化率閾值時(shí),執(zhí)行所述判定所述第二步數(shù)發(fā)生溢出的步驟。
可選的,在一個(gè)實(shí)施例中,所述方法還包括:
若檢測(cè)到所述計(jì)步器通過(guò)驅(qū)動(dòng)層上報(bào)的計(jì)步器消息,獲取該計(jì)步器消息中包含的步數(shù),將該步數(shù)存儲(chǔ)至預(yù)設(shè)的存儲(chǔ)區(qū)域,將該步數(shù)上傳至預(yù)設(shè)的應(yīng)用服務(wù)器,所述應(yīng)用服務(wù)器用于將該步數(shù)累加到所述應(yīng)用服務(wù)器中統(tǒng)計(jì)的運(yùn)動(dòng)步數(shù)。
此外,為解決傳統(tǒng)技術(shù)中的因計(jì)步器的寄存器可存儲(chǔ)的數(shù)據(jù)的大小限制導(dǎo)致計(jì)步器中統(tǒng)計(jì)的數(shù)據(jù)產(chǎn)生的溢出從而導(dǎo)致的步數(shù)統(tǒng)計(jì)的準(zhǔn)確性不足的技術(shù)問(wèn)題,特提出了一種計(jì)步器消息的上報(bào)裝置。
一種計(jì)步器消息的上報(bào)裝置,包括:
中斷指令生成模塊,用于監(jiān)測(cè)計(jì)步器統(tǒng)計(jì)的步數(shù),在所述計(jì)步器統(tǒng)計(jì)的步數(shù)大于預(yù)設(shè)的步數(shù)閾值時(shí),生成中斷指令;
第一步數(shù)獲取模塊,用于檢測(cè)計(jì)步器上報(bào)的中斷指令,根據(jù)所述中斷指令喚醒系統(tǒng),根據(jù)所述計(jì)步器統(tǒng)計(jì)的步數(shù)生成第一計(jì)步器消息,并通過(guò)驅(qū)動(dòng)層將所述第一計(jì)步器消息進(jìn)行上報(bào),所述第一計(jì)步器消息對(duì)應(yīng)第一步數(shù);
第二步數(shù)獲取模塊,用于檢測(cè)計(jì)步器上報(bào)的第二計(jì)步器消息,獲取所述計(jì)步器消息對(duì)應(yīng)的第二步數(shù);
步數(shù)上報(bào)模塊,用于在所述第二步數(shù)小于第一步數(shù)時(shí),判定所述第二步數(shù)發(fā)生溢出,計(jì)算所述第一步數(shù)與所述第二步數(shù)的步數(shù)和,將所述步數(shù)和上報(bào)。
可選的,在一個(gè)實(shí)施例中,所述裝置還包括重啟確定模塊,用于判斷檢測(cè)到所述第一計(jì)步器消息和所述第二計(jì)步器消息之間是否發(fā)生過(guò)重啟,在發(fā)生重啟時(shí),調(diào)用所述步數(shù)上報(bào)模塊。
可選的,在一個(gè)實(shí)施例中,所述裝置還包括重置確定模塊,用于判斷檢測(cè)到所述第一計(jì)步器消息和所述第二計(jì)步器消息之間是否發(fā)生過(guò)計(jì)步器重置,在發(fā)生過(guò)計(jì)步器重置時(shí),調(diào)用所述步數(shù)上報(bào)模塊。
可選的,在一個(gè)實(shí)施例中,所述裝置還包括變化率確定模塊,用于獲取與所述第一計(jì)步器對(duì)應(yīng)的第一時(shí)間,獲取與所述第二計(jì)步器對(duì)應(yīng)的第二時(shí)間;根據(jù)所述第一時(shí)間和所述第二時(shí)間計(jì)算所述時(shí)間間隔;計(jì)算第二步數(shù)與所述時(shí)間間隔的比值,在所述比值大于或等于預(yù)設(shè)的變化率閾值時(shí),判定所述第二計(jì)步器消息為偽造消息并生成步數(shù)異常的提示消息,在所述比值小于所述變化率閾值時(shí),調(diào)用所述步數(shù)上報(bào)模塊。
可選的,在一個(gè)實(shí)施例中,所述裝置還包括步數(shù)統(tǒng)計(jì)模塊,用于在檢測(cè)到所述計(jì)步器通過(guò)驅(qū)動(dòng)層上報(bào)的計(jì)步器消息時(shí),獲取該計(jì)步器消息中包含的步數(shù),將該步數(shù)存儲(chǔ)至預(yù)設(shè)的存儲(chǔ)區(qū)域,將該步數(shù)上傳至預(yù)設(shè)的應(yīng)用服務(wù)器,所述應(yīng)用服務(wù)器用于將該步數(shù)累加到所述應(yīng)用服務(wù)器中統(tǒng)計(jì)的運(yùn)動(dòng)步數(shù)。
實(shí)施本發(fā)明實(shí)施例,將具有如下有益效果:
采用了上述計(jì)步器消息的上報(bào)方法和裝置之后,針對(duì)計(jì)步器中統(tǒng)計(jì)的步數(shù)進(jìn)行監(jiān)測(cè),在該步數(shù)達(dá)到預(yù)設(shè)的溢出門限值時(shí),生成中斷指令并喚醒系統(tǒng),然后將對(duì)應(yīng)的步數(shù)上報(bào)到應(yīng)用層,以使相應(yīng)的計(jì)步應(yīng)用獲取到與溢出門限值相關(guān)的步數(shù)統(tǒng)計(jì),然后在下一次計(jì)步器上報(bào)步數(shù)的情況下,若上報(bào)的步數(shù)小于前一次上報(bào)的步數(shù),則將本次上報(bào)的步數(shù)與上一次上報(bào)的步數(shù)的和作為最終上報(bào)的步數(shù)。也就是說(shuō),在計(jì)步器中統(tǒng)計(jì)的步數(shù)發(fā)生溢出之后,在后續(xù)的步數(shù)上報(bào)的步數(shù)基礎(chǔ)上,加上上一次因統(tǒng)計(jì)步數(shù)超過(guò)預(yù)設(shè)的溢出門限值時(shí)上報(bào)的步數(shù),將二者的和作為上報(bào)的最終結(jié)果,從而使得本次上報(bào)的步數(shù)中包含了因計(jì)步器溢出可能造成的數(shù)據(jù)丟失。相較于傳統(tǒng)技術(shù)中直接將當(dāng)前次的步數(shù)上報(bào)而不考慮步數(shù)溢出的影響的技術(shù)方案,采用本發(fā)明,能提高計(jì)步器上報(bào)的步數(shù)數(shù)據(jù)的數(shù)據(jù)統(tǒng)計(jì)的準(zhǔn)確性。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
其中:
圖1為一個(gè)實(shí)施例中一種計(jì)步器消息的上報(bào)方法的流程示意圖;
圖2為一個(gè)實(shí)施例中一種計(jì)步器消息的上報(bào)裝置的結(jié)構(gòu)示意圖;
圖3為一個(gè)實(shí)施例中運(yùn)行前述計(jì)步器消息的上報(bào)方法的計(jì)算機(jī)設(shè)備的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
為解決傳統(tǒng)技術(shù)中的因計(jì)步器的寄存器可存儲(chǔ)的數(shù)據(jù)的大小限制導(dǎo)致計(jì)步器中統(tǒng)計(jì)的數(shù)據(jù)產(chǎn)生的溢出從而導(dǎo)致的步數(shù)統(tǒng)計(jì)的準(zhǔn)確性不足的技術(shù)問(wèn)題,在本實(shí)施例中,特提出了一種計(jì)步器消息的上報(bào)方法,該方法的實(shí)現(xiàn)可依賴于計(jì)算機(jī)程序,該計(jì)算機(jī)程序可運(yùn)行于基于馮諾依曼體系的計(jì)算機(jī)系統(tǒng)之上,該計(jì)算機(jī)程序可以是計(jì)步器統(tǒng)計(jì)數(shù)據(jù)的處理程序或者微信運(yùn)動(dòng)、QQ運(yùn)程序動(dòng)等計(jì)步應(yīng)用對(duì)應(yīng)的步數(shù)統(tǒng)計(jì)的應(yīng)用。該計(jì)算機(jī)系統(tǒng)可以是運(yùn)行上述計(jì)算機(jī)程序的設(shè)置有計(jì)步器傳感器的例如智能手機(jī)、平板電腦、個(gè)人電腦等服務(wù)器或終端。
具體的,如圖1所示,上述計(jì)步器消息的上報(bào)方法包括如下步驟:
步驟S102:監(jiān)測(cè)計(jì)步器統(tǒng)計(jì)的步數(shù),在所述計(jì)步器統(tǒng)計(jì)的步數(shù)大于預(yù)設(shè)的步數(shù)閾值時(shí),生成中斷指令。
在本實(shí)施例中,計(jì)步器在檢測(cè)到步伐時(shí),將檢測(cè)到的步數(shù)更新在統(tǒng)計(jì)的步數(shù)中,也就是說(shuō),在計(jì)步器檢測(cè)到步伐的過(guò)程中,計(jì)步器中統(tǒng)計(jì)的步數(shù)會(huì)隨著步伐的累計(jì)不斷的增加。在本實(shí)施例中,因?yàn)橛?jì)步器對(duì)應(yīng)的存儲(chǔ)統(tǒng)計(jì)的步數(shù)的寄存器的大小限制,其存在一個(gè)可以存儲(chǔ)的步數(shù)的最大值,即為溢出門限值。在寄存器為16位的寄存器的情況下,對(duì)應(yīng)的溢出門限值為65535,則在統(tǒng)計(jì)的步數(shù)為65535之后,再次累積步數(shù)的情況下,寄存器中存儲(chǔ)的步數(shù)會(huì)從0重新開始累積。
在本實(shí)施例中,可以將預(yù)設(shè)的步數(shù)閾值設(shè)置為上述溢出門限值,也可以是與該溢出門限值接近的某一個(gè)值,例如,在溢出門限值為65535的情況下,可以將該步數(shù)閾值設(shè)置為65534。
在本實(shí)施例中,若檢測(cè)到計(jì)步器統(tǒng)計(jì)的步數(shù)大于或等于預(yù)設(shè)的步數(shù)閾值,則生成中斷指令,終端中相應(yīng)的處理器在檢測(cè)到該中斷指令之后針對(duì)該中斷指令進(jìn)行處理,例如,去獲取計(jì)步器中統(tǒng)計(jì)的步數(shù)或者發(fā)生指令使得計(jì)步器將統(tǒng)計(jì)的步數(shù)進(jìn)行上報(bào)或者根據(jù)中斷指令喚醒系統(tǒng)或喚醒相應(yīng)的應(yīng)用進(jìn)行相關(guān)的操作。
在本實(shí)施例中,在檢測(cè)到計(jì)步器上報(bào)的中斷指令之后,根據(jù)該中斷指令喚醒系統(tǒng),也即喚醒了與計(jì)步器對(duì)應(yīng)的進(jìn)程,例如,微信運(yùn)動(dòng)。
步驟S104:檢測(cè)計(jì)步器上報(bào)的中斷指令,根據(jù)所述中斷指令喚醒系統(tǒng),根據(jù)所述計(jì)步器統(tǒng)計(jì)的步數(shù)生成第一計(jì)步器消息,并通過(guò)驅(qū)動(dòng)層將所述第一計(jì)步器消息進(jìn)行上報(bào),所述第一計(jì)步器消息對(duì)應(yīng)第一步數(shù)。
在本實(shí)施例中,在計(jì)步器生成中斷指令并喚醒系統(tǒng)之后,會(huì)將在計(jì)步器中統(tǒng)計(jì)的步數(shù)進(jìn)行上報(bào),即根據(jù)計(jì)步器中統(tǒng)計(jì)的步數(shù)生成計(jì)步器消息,然后將該計(jì)步器消息通過(guò)驅(qū)動(dòng)層上報(bào)。
一般來(lái)講,計(jì)步器在檢測(cè)到步數(shù)之后,會(huì)經(jīng)由驅(qū)動(dòng)層上報(bào),一般來(lái)講,計(jì)步器上報(bào)步數(shù)的頻率可以是每一次檢測(cè)到步數(shù)更新之后均生成相應(yīng)的中斷指令,然后終端在檢測(cè)到中斷指令之后,獲取計(jì)步器上報(bào)的步數(shù),或者,為了節(jié)省終端的功耗,還可以在終端中設(shè)置一個(gè)定時(shí)器,定時(shí)上報(bào)計(jì)步器檢測(cè)到的步數(shù),與就是說(shuō),并不是計(jì)步器每檢測(cè)到步數(shù)更新都將新的步數(shù)進(jìn)行上報(bào),而是定時(shí)的向驅(qū)動(dòng)層發(fā)送相應(yīng)的步數(shù)信息的更新。還或者,在接收到獲取步數(shù)對(duì)應(yīng)的步數(shù)獲取指令之后,由計(jì)步器將相應(yīng)的步數(shù)包含在計(jì)步器消息中上報(bào)。具體實(shí)施例中,例如計(jì)步器、傳感器、觸摸屏等裝置獲取到的數(shù)據(jù)都是經(jīng)由驅(qū)動(dòng)層上報(bào)給框架層,然后上報(bào)到應(yīng)用層,從而使得在應(yīng)用層的相關(guān)的應(yīng)用獲取到相應(yīng)的計(jì)步器消息以及計(jì)步器統(tǒng)計(jì)的步數(shù)。
步驟S106:檢測(cè)計(jì)步器上報(bào)的第二計(jì)步器消息,獲取所述計(jì)步器消息對(duì)應(yīng)的第二步數(shù)。
在本實(shí)施例中,在計(jì)步器上報(bào)了第一計(jì)步器消息之后,在用戶輸入步數(shù)獲取指令或者其他檢測(cè)到其他觸發(fā)步數(shù)獲取指令的觸發(fā)事件之后,計(jì)步器會(huì)將計(jì)步器中統(tǒng)計(jì)的步數(shù)上報(bào),即將計(jì)步器中統(tǒng)計(jì)的步數(shù)包含在計(jì)步器消息中進(jìn)行上報(bào)。在本實(shí)施例中,將計(jì)步器中統(tǒng)計(jì)的步數(shù)超過(guò)預(yù)設(shè)的步數(shù)閾值并生成中斷指令然后上報(bào)第一計(jì)步器消息之后,檢測(cè)到的計(jì)步器消息稱之為第二計(jì)步器消息,也就是說(shuō),第二計(jì)步器消息是在檢測(cè)到第一計(jì)步器消息之后的下一次檢測(cè)到的計(jì)步器消息,在第二計(jì)步器消息中對(duì)應(yīng)的步數(shù)為第二步數(shù)。
步驟S108:在所述第二步數(shù)小于第一步數(shù)時(shí),判定所述第二步數(shù)發(fā)生溢出,計(jì)算所述第一步數(shù)與所述第二步數(shù)的步數(shù)和,將所述步數(shù)和上報(bào)。
一般來(lái)講,在具體實(shí)施例中,因?yàn)椴綌?shù)的不斷累積,后檢測(cè)到的計(jì)步器消息對(duì)應(yīng)的步數(shù)是大于在前檢測(cè)到的計(jì)步器消息對(duì)應(yīng)的步數(shù)的。但是,因?yàn)橛?jì)步器對(duì)應(yīng)的寄存器的存儲(chǔ)空間的大小限制,寄存器可存儲(chǔ)的步數(shù)存在一定的限制,即存在一個(gè)可存儲(chǔ)的步數(shù)的最大值,在本實(shí)施例中,將該值稱之為溢出門限值。因?yàn)樵诩拇嫫髦写鎯?chǔ)的步數(shù)達(dá)到上述溢出門限值的情況下,若計(jì)步器繼續(xù)將檢測(cè)到的步伐對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)到計(jì)步器中,寄存器中存儲(chǔ)的數(shù)據(jù)就會(huì)歸零,也就是說(shuō),在寄存器為16位的寄存器的情況下,對(duì)應(yīng)的溢出門限值為65535,則在統(tǒng)計(jì)的步數(shù)為65535之后,再次累積步數(shù)的情況下,寄存器中存儲(chǔ)的步數(shù)會(huì)從0重新開始累積。
也就是說(shuō),因?yàn)橐话銇?lái)講,微信運(yùn)動(dòng)等計(jì)步軟件會(huì)定時(shí)每天都進(jìn)行相應(yīng)的數(shù)據(jù)更新,即在計(jì)步軟件中步數(shù)的統(tǒng)計(jì)情況的更新是比較頻繁的,因此,相鄰兩次的計(jì)步器上報(bào)的計(jì)步器消息中對(duì)應(yīng)的步數(shù)的查找不大,并且,一般計(jì)步器對(duì)應(yīng)的寄存器對(duì)應(yīng)的溢出門限值都是一個(gè)較大的數(shù)值,因此,若計(jì)步器上報(bào)的計(jì)步器消息中對(duì)應(yīng)的步數(shù)小于上一次計(jì)步器上一次上報(bào)的計(jì)步器消息中對(duì)應(yīng)的步數(shù)小,說(shuō)明對(duì)應(yīng)的計(jì)步器上報(bào)的計(jì)步器消息中對(duì)應(yīng)的步數(shù)是異常的,這種異??赡苁且?yàn)樵谏洗紊蠄?bào)計(jì)步器消息中間存在溢出。
在本實(shí)施例中,若當(dāng)前次檢測(cè)到的第二計(jì)步器消息對(duì)應(yīng)的第二步數(shù)小于前一次檢測(cè)到的第一計(jì)步器消息對(duì)應(yīng)的第一步數(shù),則判定當(dāng)前次檢測(cè)到的第二計(jì)步器消息對(duì)應(yīng)的第二步數(shù)是發(fā)生溢出之后的步數(shù)。
因?yàn)樵诎l(fā)生溢出之前將超過(guò)了預(yù)設(shè)的步數(shù)閾值對(duì)應(yīng)的第一計(jì)步器消息已經(jīng)上報(bào),也就是說(shuō),前一次檢測(cè)到的計(jì)步器消息中對(duì)應(yīng)的步數(shù)即為溢出門限值,在此種情況下,再次檢測(cè)到的第二計(jì)步器消息對(duì)應(yīng)的第二步數(shù)是在上一次上報(bào)了計(jì)步器消息之后從0開始重新累計(jì)的,因此,在檢測(cè)到第一計(jì)步器消息和第二計(jì)步器消息之間,計(jì)步器檢測(cè)到的步伐對(duì)應(yīng)的步數(shù)的總和即為第二步數(shù)。因此,在本實(shí)施例中,若要計(jì)步器上報(bào)的步數(shù)不小于上一次上報(bào)的第一計(jì)步器消息中對(duì)應(yīng)的第一步數(shù),則需要將上一次上報(bào)的步數(shù)考慮在內(nèi),也就是說(shuō),上報(bào)的步數(shù)為第一步數(shù)與第二步數(shù)的步數(shù)和。
需要說(shuō)明的是,在本實(shí)施例中,若在兩次計(jì)步器消息的檢測(cè)之間,終端進(jìn)行了重啟,則對(duì)應(yīng)的計(jì)步器進(jìn)行了關(guān)閉操作并沒重新啟動(dòng),而計(jì)步器在被重啟的情況下,其在寄存器中存儲(chǔ)的數(shù)據(jù)都會(huì)被清零然后從0從新開始累計(jì)。因此,在一個(gè)可選的實(shí)施例中,在判斷計(jì)步器消息中對(duì)應(yīng)的步數(shù)是否發(fā)生溢出的過(guò)程中,還需要考慮終端是否被重啟過(guò)或者計(jì)步器是否被重啟過(guò)。
具體的,在一個(gè)實(shí)施例中,上述判定所述第二步數(shù)發(fā)生溢出的步驟之前還包括:判斷檢測(cè)到所述第一計(jì)步器消息和所述第二計(jì)步器消息之間是否發(fā)生過(guò)重啟,若否,則判定所述第二步數(shù)發(fā)生溢出。
在另一個(gè)實(shí)施例中,所述判定所述第二步數(shù)發(fā)生溢出的步驟還包括:判斷檢測(cè)到所述第一計(jì)步器消息和所述第二計(jì)步器消息之間是否發(fā)生過(guò)計(jì)步器重置,若否,則判定所述第二步數(shù)發(fā)生溢出。
也就是說(shuō),只有在終端或者計(jì)步器沒有被重啟或重置的情況下,在能將當(dāng)前次對(duì)應(yīng)的第二步數(shù)判定為發(fā)生溢出,反之,若終端或者計(jì)步器被重啟或重置過(guò)后,其對(duì)應(yīng)的數(shù)值即被歸零,這種歸零并不是因?yàn)橐绯鰧?dǎo)致的,因此不能被判定為發(fā)生溢出,在此種情況下,第二步數(shù)小于第一步數(shù)是正常的,微信運(yùn)動(dòng)等計(jì)步軟件直接將檢測(cè)到的計(jì)步器消息對(duì)應(yīng)的第二步數(shù)在相應(yīng)的應(yīng)用服務(wù)器中進(jìn)行更新。
進(jìn)一步的,在考慮計(jì)步器上報(bào)的計(jì)步器消息對(duì)應(yīng)的數(shù)據(jù)是否異常時(shí),還需要考慮數(shù)據(jù)的變化量與時(shí)間之間的關(guān)系,也就是說(shuō),需要考慮在單位時(shí)間之內(nèi)的步數(shù)變化是否是合理的。
具體的,在一個(gè)實(shí)施例中,上述判定所述第二步數(shù)發(fā)生溢出的步驟之前還包括:獲取與所述第一計(jì)步器對(duì)應(yīng)的第一時(shí)間,獲取與所述第二計(jì)步器對(duì)應(yīng)的第二時(shí)間;根據(jù)所述第一時(shí)間和所述第二時(shí)間計(jì)算所述時(shí)間間隔;計(jì)算第二步數(shù)與所述時(shí)間間隔的比值,在所述比值大于或等于預(yù)設(shè)的變化率閾值時(shí),判定所述第二計(jì)步器消息為偽造消息并生成步數(shù)異常的提示消息,在所述比值小于所述變化率閾值時(shí),執(zhí)行所述判定所述第二步數(shù)發(fā)生溢出的步驟。
也就是說(shuō),在計(jì)步器消息中不僅包含了相應(yīng)的統(tǒng)計(jì)的步數(shù),還包含了對(duì)應(yīng)的上報(bào)的時(shí)間,根據(jù)兩次檢測(cè)到的計(jì)步器消息包含的時(shí)間可以確定兩次檢測(cè)到的計(jì)步器消息的時(shí)間間隔。因?yàn)樵跈z測(cè)到第一計(jì)步器消息之后計(jì)步器因?yàn)橐绯龆粴w零,也就是說(shuō),第二步數(shù)即為檢測(cè)到的兩次計(jì)步器消息之間統(tǒng)計(jì)到的步數(shù),第二步數(shù)與上述時(shí)間間隔之間的比值即可反映單位時(shí)間內(nèi)步數(shù)的變化量。而這個(gè)變化量是不會(huì)超過(guò)一定的限制的,若超過(guò)了預(yù)設(shè)的變化值的極限值(即預(yù)設(shè)的變化率閾值),則說(shuō)明當(dāng)前檢測(cè)到的第二計(jì)步器消息中對(duì)應(yīng)的第二步數(shù)可能被篡改了,在此種情況下,生成計(jì)步器消息異常的提示消息用來(lái)提示用戶當(dāng)前的數(shù)據(jù)可能被篡改了,反之,則執(zhí)行判定第二步數(shù)是否發(fā)生溢出的相關(guān)操作。
進(jìn)一步的,在本實(shí)施例中,在應(yīng)用層的計(jì)步軟件在接收到計(jì)步器上報(bào)的計(jì)步器消息之后,會(huì)將計(jì)步器消息中對(duì)應(yīng)的步數(shù)更新在相應(yīng)的步數(shù)統(tǒng)計(jì)頁(yè)面或者存儲(chǔ)區(qū)域。具體的,在本實(shí)施例中,所述方法還包括:若檢測(cè)到所述計(jì)步器通過(guò)驅(qū)動(dòng)層上報(bào)的計(jì)步器消息,獲取該計(jì)步器消息中包含的步數(shù),將該步數(shù)存儲(chǔ)至預(yù)設(shè)的存儲(chǔ)區(qū)域,將該步數(shù)上傳至預(yù)設(shè)的應(yīng)用服務(wù)器,所述應(yīng)用服務(wù)器用于將該步數(shù)累加到所述應(yīng)用服務(wù)器中統(tǒng)計(jì)的運(yùn)動(dòng)步數(shù)。
也就是說(shuō),在計(jì)步軟件獲取到計(jì)步器消息中包含的步數(shù)之后,若當(dāng)前對(duì)應(yīng)的計(jì)步軟件中對(duì)應(yīng)的步數(shù)統(tǒng)計(jì)是不需要上傳到網(wǎng)絡(luò)上,則將該步數(shù)存儲(chǔ)至該計(jì)步軟件對(duì)應(yīng)的預(yù)設(shè)的存儲(chǔ)區(qū)域中,若當(dāng)前對(duì)應(yīng)的計(jì)步軟件對(duì)應(yīng)的步數(shù)統(tǒng)計(jì)是要上傳到對(duì)應(yīng)的應(yīng)用服務(wù)器,例如,微信運(yùn)動(dòng),則將從計(jì)步器消息中獲取的步數(shù)上傳至應(yīng)用服務(wù)器,應(yīng)用服務(wù)器在接收到上傳的步數(shù)之后,將該步數(shù)累加到應(yīng)用服務(wù)器中相應(yīng)的統(tǒng)計(jì)的運(yùn)動(dòng)步數(shù)中去。
此外,為解決傳統(tǒng)技術(shù)中的因計(jì)步器的寄存器可存儲(chǔ)的數(shù)據(jù)的大小限制導(dǎo)致計(jì)步器中統(tǒng)計(jì)的數(shù)據(jù)產(chǎn)生的溢出從而導(dǎo)致的步數(shù)統(tǒng)計(jì)的準(zhǔn)確性不足的技術(shù)問(wèn)題,在一個(gè)實(shí)施例中,如圖2所示,還提出了一種計(jì)步器消息的上報(bào)裝置,具體的,該計(jì)步器消息的上報(bào)裝置包括中斷指令生成模塊102、第一步數(shù)獲取模塊104、第二步數(shù)獲取模塊106、步數(shù)上報(bào)模塊108,其中:
中斷指令生成模塊102,用于監(jiān)測(cè)計(jì)步器統(tǒng)計(jì)的步數(shù),在所述計(jì)步器統(tǒng)計(jì)的步數(shù)大于預(yù)設(shè)的步數(shù)閾值時(shí),生成中斷指令;
第一步數(shù)獲取模塊104,用于檢測(cè)計(jì)步器上報(bào)的中斷指令,根據(jù)所述中斷指令喚醒系統(tǒng),根據(jù)所述計(jì)步器統(tǒng)計(jì)的步數(shù)生成第一計(jì)步器消息,并通過(guò)驅(qū)動(dòng)層將所述第一計(jì)步器消息進(jìn)行上報(bào),所述第一計(jì)步器消息對(duì)應(yīng)第一步數(shù);
第二步數(shù)獲取模塊106,用于檢測(cè)計(jì)步器上報(bào)的第二計(jì)步器消息,獲取所述計(jì)步器消息對(duì)應(yīng)的第二步數(shù);
步數(shù)上報(bào)模塊108,用于在所述第二步數(shù)小于第一步數(shù)時(shí),判定所述第二步數(shù)發(fā)生溢出,計(jì)算所述第一步數(shù)與所述第二步數(shù)的步數(shù)和,將所述步數(shù)和上報(bào)。
可選的,在一個(gè)實(shí)施例中,如圖2所示,上述裝置還包括重啟確定模塊110,用于判斷檢測(cè)到所述第一計(jì)步器消息和所述第二計(jì)步器消息之間是否發(fā)生過(guò)重啟,在發(fā)生重啟時(shí),調(diào)用所述步數(shù)上報(bào)模塊108。
可選的,在一個(gè)實(shí)施例中,如圖2所示,上述裝置還包括重置確定模塊112,用于判斷檢測(cè)到所述第一計(jì)步器消息和所述第二計(jì)步器消息之間是否發(fā)生過(guò)計(jì)步器重置,在發(fā)生過(guò)計(jì)步器重置時(shí),調(diào)用所述步數(shù)上報(bào)模塊108。
可選的,在一個(gè)實(shí)施例中,如圖2所示,上述裝置還包括變化率確定模塊114,用于獲取與所述第一計(jì)步器對(duì)應(yīng)的第一時(shí)間,獲取與所述第二計(jì)步器對(duì)應(yīng)的第二時(shí)間;根據(jù)所述第一時(shí)間和所述第二時(shí)間計(jì)算所述時(shí)間間隔;計(jì)算第二步數(shù)與所述時(shí)間間隔的比值,在所述比值大于或等于預(yù)設(shè)的變化率閾值時(shí),判定所述第二計(jì)步器消息為偽造消息并生成步數(shù)異常的提示消息,在所述比值小于所述變化率閾值時(shí),調(diào)用所述步數(shù)上報(bào)模塊108。
可選的,在一個(gè)實(shí)施例中,如圖2所示,上述裝置還包括步數(shù)統(tǒng)計(jì)模塊116,用于在檢測(cè)到所述計(jì)步器通過(guò)驅(qū)動(dòng)層上報(bào)的計(jì)步器消息時(shí),獲取該計(jì)步器消息中包含的步數(shù),將該步數(shù)存儲(chǔ)至預(yù)設(shè)的存儲(chǔ)區(qū)域,將該步數(shù)上傳至預(yù)設(shè)的應(yīng)用服務(wù)器,所述應(yīng)用服務(wù)器用于將該步數(shù)累加到所述應(yīng)用服務(wù)器中統(tǒng)計(jì)的運(yùn)動(dòng)步數(shù)。
實(shí)施本發(fā)明實(shí)施例,將具有如下有益效果:
采用了上述計(jì)步器消息的上報(bào)方法和裝置之后,針對(duì)計(jì)步器中統(tǒng)計(jì)的步數(shù)進(jìn)行監(jiān)測(cè),在該步數(shù)達(dá)到預(yù)設(shè)的溢出門限值時(shí),生成中斷指令并喚醒系統(tǒng),然后將對(duì)應(yīng)的步數(shù)上報(bào)到應(yīng)用層,以使相應(yīng)的計(jì)步應(yīng)用獲取到與溢出門限值相關(guān)的步數(shù)統(tǒng)計(jì),然后在下一次計(jì)步器上報(bào)步數(shù)的情況下,若上報(bào)的步數(shù)小于前一次上報(bào)的步數(shù),則將本次上報(bào)的步數(shù)與上一次上報(bào)的步數(shù)的和作為最終上報(bào)的步數(shù)。也就是說(shuō),在計(jì)步器中統(tǒng)計(jì)的步數(shù)發(fā)生溢出之后,在后續(xù)的步數(shù)上報(bào)的步數(shù)基礎(chǔ)上,加上上一次因統(tǒng)計(jì)步數(shù)超過(guò)預(yù)設(shè)的溢出門限值時(shí)上報(bào)的步數(shù),將二者的和作為上報(bào)的最終結(jié)果,從而使得本次上報(bào)的步數(shù)中包含了因計(jì)步器溢出可能造成的數(shù)據(jù)丟失。相較于傳統(tǒng)技術(shù)中直接將當(dāng)前次的步數(shù)上報(bào)而不考慮步數(shù)溢出的影響的技術(shù)方案,采用本發(fā)明,能提高計(jì)步器上報(bào)的步數(shù)數(shù)據(jù)的數(shù)據(jù)統(tǒng)計(jì)的準(zhǔn)確性。
在一個(gè)實(shí)施例中,如圖3所示,圖3展示了一種運(yùn)行上述計(jì)步器消息的上報(bào)方法的基于馮諾依曼體系的計(jì)算機(jī)系統(tǒng)的終端。該計(jì)算機(jī)系統(tǒng)可以是智能手機(jī)、平板電腦、掌上電腦、筆記本電腦或個(gè)人電腦等終端設(shè)備。具體的,可包括通過(guò)系統(tǒng)總線連接的外部輸入接口1001、處理器1002、存儲(chǔ)器1003和輸出接口1004。其中,外部輸入接口1001可選的可至少包括網(wǎng)絡(luò)接口10012。存儲(chǔ)器1003可包括外存儲(chǔ)器10032(例如硬盤、光盤或軟盤等)和內(nèi)存儲(chǔ)器10034。輸出接口1004可至少包括顯示屏10042等設(shè)備。
在本實(shí)施例中,本方法的運(yùn)行基于計(jì)算機(jī)程序,該計(jì)算機(jī)程序的程序文件存儲(chǔ)于前述基于馮諾依曼體系的計(jì)算機(jī)系統(tǒng)的外存儲(chǔ)器10032中,在運(yùn)行時(shí)被加載到內(nèi)存儲(chǔ)器10034中,然后被編譯為機(jī)器碼之后傳遞至處理器1002中執(zhí)行,從而使得基于馮諾依曼體系的計(jì)算機(jī)系統(tǒng)中形成邏輯上的中斷指令生成模塊102、第一步數(shù)獲取模塊104、第二步數(shù)獲取模塊106、步數(shù)上報(bào)模塊108、重啟確定模塊110、重置確定模塊112、變化率確定模塊114以及步數(shù)統(tǒng)計(jì)模塊116。且在上述計(jì)步器消息的上報(bào)方法執(zhí)行過(guò)程中,輸入的參數(shù)均通過(guò)外部輸入接口1001接收,并傳遞至存儲(chǔ)器1003中緩存,然后輸入到處理器1002中進(jìn)行處理,處理的結(jié)果數(shù)據(jù)或緩存于存儲(chǔ)器1003中進(jìn)行后續(xù)地處理,或被傳遞至輸出接口1004進(jìn)行輸出。
本發(fā)明實(shí)施例方法中的步驟可以根據(jù)實(shí)際需要進(jìn)行順序調(diào)整、合并和刪減。
本發(fā)明實(shí)施例終端中的單元可以根據(jù)實(shí)際需要進(jìn)行合并、劃分和刪減。本發(fā)明實(shí)施例提供的終端包括但不限于搭載或者其它操作系統(tǒng)的終端,諸如移動(dòng)電話。也可以是其它終端,諸如具有觸敏表面(例如,觸摸屏顯示器和/或觸控板)的膝上型計(jì)算機(jī)或平板電腦或臺(tái)式計(jì)算機(jī)。
在下面的討論中,介紹了一種包括顯示器和觸敏表面的終端。然而應(yīng)當(dāng)理解,終端可以包括一個(gè)或多個(gè)其他物理用戶接口設(shè)備,諸如物理鍵盤、鼠標(biāo)和/或操作桿。
終端通常支持多種應(yīng)用程序,諸如以下中的一種或多種:畫圖應(yīng)用程序、呈現(xiàn)應(yīng)用程序、文字處理應(yīng)用程序、網(wǎng)頁(yè)創(chuàng)建應(yīng)用程序、盤編輯應(yīng)用程序、電子表格應(yīng)用程序、游戲應(yīng)用程序、電話應(yīng)用程序、視頻會(huì)議應(yīng)用程序、電子郵件應(yīng)用程序、即時(shí)消息應(yīng)用程序、鍛煉支持應(yīng)用程序、相片管理應(yīng)用程序、數(shù)字相機(jī)應(yīng)用程序、數(shù)字視頻攝像機(jī)應(yīng)用程序、網(wǎng)絡(luò)瀏覽應(yīng)用程序、數(shù)字音樂播放器應(yīng)用程序、和/或數(shù)字視頻播放器應(yīng)用程序。
可在終端上執(zhí)行的各種應(yīng)用程序可使用至少一個(gè)共用的物理用戶接口設(shè)備,諸如觸敏表面。觸敏表面的一種或多種功能以及顯示在終端上的相應(yīng)信息可從一種應(yīng)用程序調(diào)整和/或變化至下一種應(yīng)用程序和/或在相應(yīng)應(yīng)用程序內(nèi)被調(diào)整和/或變化。這樣,終端的共用物理架構(gòu)(諸如觸敏表面)可利用對(duì)于用戶而言直觀清楚的用戶界面來(lái)支持各種應(yīng)用程序。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access Memory,RAM)等。
以上所揭露的僅為本發(fā)明較佳實(shí)施例而已,當(dāng)然不能以此來(lái)限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。