本發(fā)明涉及檢測技術領域,尤其涉及一種應用操作監(jiān)測方法及裝置。
背景技術:
在android當中有時為了保證給用戶更好的用戶體驗,或者針對用戶習慣的特殊廣告的投送等,都需要知道用戶使用了哪些應用,其中,一種方式是前臺運行程序確定為用戶所使用的應用。
因此,在現(xiàn)有技術中,為了知道用戶使用了哪些應用,一種技術方案是:當一個App處于前臺的時候會處于RunningTask的這個棧的棧頂,通過取出RunningTask的棧頂?shù)娜蝿者M程,然后讀出其包名,但是在版本的系統(tǒng)只能獲取自身應用的棧,另一種技術方案是:通過RunningProcess,RunningProcess來獲取當前運行的進程棧列表,只要獲取當前棧頂就確定為前臺應用,當是應用中包含服務時,就算后臺運行服務也會在RunningProcess,RunningProcess獲取的進程棧列表中,甚至在棧頂,確定前臺應用有誤。上述兩種技術方案可以看出,現(xiàn)有技術所確定的用戶操作應用會不準確。
技術實現(xiàn)要素:
鑒于上述問題,本發(fā)明實施例通過提供一種應用操作監(jiān)測方法及裝置,以準確監(jiān)測用戶所操作的應用。
第一方面,本發(fā)明實施例提供了一種應用操作監(jiān)測方法,包括:
從運行進程目錄中獲取正在運行的M個進程的進程信息,所述進程信息包括進程類型信息和進程優(yōu)先級信息,M為正整數(shù);
根據(jù)所述M個進程的進程類型信息,識別出所述M個進程中的N個非系統(tǒng)應用進程,N為小于或等于M的正整數(shù);
根據(jù)所述N個非系統(tǒng)應用進程的進程優(yōu)先級信息,識別出所述N個非系統(tǒng)應用進程中的前臺運行應用進程。
優(yōu)選的,所述從運行進程目錄中獲取正在運行的M個進程的進程信息,包括:
在所述運行進程目錄的路徑下創(chuàng)建以所述運行進程目錄為傳入?yún)?shù)的文件對象;
獲取所述文件對象的目錄下的M個文件;
將所述M個文件的文件名對應確定為所述M個進程的唯一標識;
獲取所述M個進程的唯一標識的子目錄下信息為所述M個進程的進程信息。
優(yōu)選的,所述根據(jù)所述M個進程的進程類型信息,識別出所述M個進程中的N個非系統(tǒng)應用進程,包括:
從所述M個進程中排除所述進程類型信息符合如下任一種字段的進程,以得到所述N個非系統(tǒng)應用進程:
背景進程標識字段、非應用進程標識字段、系統(tǒng)應用標識碼段。
優(yōu)選的,所述從所述M個進程中排除所述進程類型信息符合如下任一種字段的進程,包括:
識別所述M個進程中的第m個進程的控制組群文件是否包含所述背景進程標識字段,m依次為1至M;
如果所述第m個進程的控制組群文件包含所述背景進程標識字段,排除所述第m個進程,否則識別所述第m個進程的控制組群文件是否包含所述非應用進程標識字段;
如果所述第m個進程的控制組群文件包含所述非應用進程標識字段,排除所述第m個進程,否則識別所述第m個進程的控制組群文件中的應用標識碼是否在預設碼段內(nèi);
如果所述第m個進程的控制組群文件中的應用標識碼在所述預設碼段內(nèi),排除所述第m個進程。
優(yōu)選的,所述根據(jù)所述N個非系統(tǒng)應用進程的進程優(yōu)先級信息,識別出所述N個非系統(tǒng)應用進程中的前臺運行應用進程,包括:
遍歷所述N個非系統(tǒng)應用進程的資源占用優(yōu)先級;
確定出所述N個非系統(tǒng)應用進程中資源占用優(yōu)先級最高的進程為所述前臺運行應用進程。
優(yōu)選的,在所述識別出所述N個非系統(tǒng)應用進程中的前臺運行應用進程之后,所述方法還包括:
按照預設周期輪詢所述前臺運行應用進程;
基于對所述前臺運行應用進程的輪詢次數(shù)確定所述前臺運行應用進程在前臺的停留時長。
第二方面,本發(fā)明實施例提供了一種應用操作監(jiān)測裝置,包括:
進程信息獲取模塊,用于從運行進程目錄中獲取正在運行的M個進程的進程信息,所述進程信息包括進程類型信息和進程優(yōu)先級信息,M為正整數(shù);
非系統(tǒng)應用進程識別模塊,用于根據(jù)所述M個進程的進程類型信息,識別出所述M個進程中的N個非系統(tǒng)應用進程,N為小于或等于M的正整數(shù);
前臺應用進程識別模塊,用于根據(jù)所述N個非系統(tǒng)應用進程的進程優(yōu)先級信息,識別出所述N個非系統(tǒng)應用進程中的前臺運行應用進程。
優(yōu)選的,所述進程信息獲取模塊,包括:
創(chuàng)建單元,用于在所述運行進程目錄的路徑下創(chuàng)建以所述運行進程目錄為傳入?yún)?shù)的文件對象;
文件獲取單元,用于獲取所述文件對象的目錄下的M個文件;
確定單元,用于將所述M個文件的文件名對應確定為所述M個進程的唯一標識;
進程信息獲取單元,用于獲取所述M個進程的唯一標識的子目錄下信息為所述M個進程的進程信息。
優(yōu)選的,所述非系統(tǒng)應用進程識別模塊,包括:
排除單元,用于從所述M個進程中排除所述進程類型信息符合如下任一種字段的進程,以得到所述N個非系統(tǒng)應用進程:
背景進程標識字段、非應用進程標識字段、系統(tǒng)應用標識碼段。
優(yōu)選的,所述排除單元,具體用于:
識別所述M個進程中的第m個進程的控制組群文件是否包含所述背景進程標識字段,m依次為1至M;
如果所述第m個進程的控制組群文件包含所述背景進程標識字段,排除所述第m個進程,否則識別所述第m個進程的控制組群文件是否包含所述非應用進程標識字段;
如果所述第m個進程的控制組群文件包含所述非應用進程標識字段,排除所述第m個進程,否則識別所述第m個進程的控制組群文件中的應用標識碼是否在預設碼段內(nèi);
如果所述第m個進程的控制組群文件中的應用標識碼在所述預設碼段內(nèi),排除所述第m個進程。
優(yōu)選的,所述前臺應用進程識別模塊,包括:
遍歷單元,用于遍歷所述N個非系統(tǒng)應用進程的資源占用優(yōu)先級;
前臺應用進程確定單元,用于確定出所述N個非系統(tǒng)應用進程中資源占用優(yōu)先級最高的進程為所述前臺運行應用進程。
優(yōu)選的,所述裝置還包括:
輪詢模塊,用于按照預設周期輪詢所述前臺運行應用進程;
停留時長確定模塊,用于基于對所述前臺運行應用進程的輪詢次數(shù)確定所述前臺運行應用進程在前臺的停留時長。
優(yōu)選的,所述裝置還包括:
判斷模塊,用戶判斷所述前臺運行應用進程在前臺的停留時長是否超過預設時長;
推送單元,用于如果所述前臺運行應用進程在前臺的停留時長超過所述預設時長,向用戶推送與所述前臺運行應用進程相關的可讀內(nèi)容。
本發(fā)明實施例中提供的一個或多個技術方案,至少具有如下技術效果或優(yōu)點:
通過從運行進程目錄中獲取正在運行進程的進程類型信息和進程優(yōu)先級信息,根據(jù)正在運行進程的進程類型信息識別出正在運行的非系統(tǒng)應用進程,根據(jù)正在運行的非系統(tǒng)應用進程的進程優(yōu)先級信息識別出前臺運行應用進程。從而通過運行進程目錄中能夠獲取到所有正在運行的進程,然后排除了會被誤判為前臺應用進程的進程,以保留的都為應用進程,再從應用進程的進程優(yōu)先級信息識別前臺運行應用進程,從而確保了識別前臺運行應用進程的準確性,進而以準確監(jiān)測用戶所操作的應用。
進一步的,確保了識別前臺運行應用進程的準確性有利于提高向用戶推送內(nèi)容的準確性。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的應用操作監(jiān)測方法的流程圖;
圖2為本發(fā)明實施例中識別非系統(tǒng)應用進程的流程圖;
圖3為本發(fā)明實施例中識別前臺運行應用進程的流程圖;
圖4為本發(fā)明實施例提供的應用操作監(jiān)測方法的功能模塊圖。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
參考圖1所示,本發(fā)明實施提供了一種應用操作監(jiān)測方法,應用于安裝有多個應用的電子設備,具體的,該電子設備可以為個人計算機、智能手機(具體可以為Android手機、IOS系統(tǒng)的手機)、PAD(平板電腦)。
參考圖1所示,本發(fā)明實施提供的應用操作監(jiān)測方法包括如下步驟:
S101、從運行進程目錄中獲取正在運行的M個進程的進程信息,進程信息包括進程類型信息和進程優(yōu)先級信息,M為正整數(shù);
S102、根據(jù)M個進程的進程類型信息,識別出M個進程中的N個非系統(tǒng)應用進程,N為小于或等于M的正整數(shù);
S103、根據(jù)N個非系統(tǒng)應用進程的進程優(yōu)先級信息,識別出N個非系統(tǒng)應用進程中的前臺運行應用進程。
需要說明的是,在本發(fā)明實施例中,針對不同的進程,所對應的進程類型信息為背景進程、非應用進程、系統(tǒng)應用進程、非系統(tǒng)應用進程中的一種。不同的進程所對應的進程優(yōu)先級信息與進程對資源占用量相關,具體為占用內(nèi)存資源越高,得分越高;cpu時間和存活時間越高,得分越低;得分越低,進程優(yōu)先級越高。
下面結合圖1,對本發(fā)明實施例提供的應用操作監(jiān)測方法每個步驟進行詳細描述:
首先,執(zhí)行S101:從運行進程目錄中獲取正在運行的M個進程的進程信息,進程信息包括進程類型信息和進程優(yōu)先級信息,M為正整數(shù)。
具體的,運行進程目錄下的各個文件夾以數(shù)字命名,命名的數(shù)字為進程的唯一標識。具體,進程的唯一標識可以為進程的PID(Process Identification,進程標識),文件夾下的文件包含該PID所標識進程的進程信息,從運行進程目錄下的文件夾中獲得當前正在運行進程的進程信息。
具體的,通過進程的唯一標識來獲取進程信息,具體實施過程為:在運行進程目錄的路徑下創(chuàng)建以運行進程目錄為傳入?yún)?shù)的文件對象;獲取文件對象的目錄下的M個文件;將M個文件的文件名對應確定為M個進程的唯一標識;獲取M個進程的唯一標識的子目錄下信息為M個進程的進程類型信息和進程優(yōu)先級信息。
以linux內(nèi)核的系統(tǒng)為例,運行進程目錄為/proc,首先通過/proc路徑創(chuàng)建一個File對象;然后,將運行進程目錄/proc作為File對象的參數(shù)傳入;接著,調(diào)用File對象的listFiles代碼,以獲取File對象的目錄下的M個文件;再接著,調(diào)用getName獲取M個文件的文件名,M個文件的文件名為M個進程的進程標識;最后,獲取M個進程的唯一標識的子目錄下信息為M個進程的進程類型信息和進程優(yōu)先級信息。
本領域技術人員根據(jù)對linux內(nèi)核的系統(tǒng)的舉例能夠知曉其他內(nèi)核的系統(tǒng)下如何獲取正在運行的M個進程的進程信息,因此也屬于本發(fā)明意欲保護的范圍。
在S101之后,接著執(zhí)行S102:根據(jù)M個進程的進程類型信息,識別出M個進程中的N個非系統(tǒng)應用進程,N為小于或等于M的正整數(shù)。
具體的,進程類型信息表征進程的類型,具體表征屬于背景進程、非應用進程、系統(tǒng)應用進程、非系統(tǒng)應用進程中的一種。
在本發(fā)明一實施例中,S102包括:從M個進程中排除進程類型信息符合如下任一種字段的進程,以得到N個非系統(tǒng)應用進程:背景進程標識字段、非應用進程標識字段、系統(tǒng)應用標識碼段。
在本發(fā)明實施例中,背景進程標識字段表征進程為背景進程,比如下載服務進程、更新服務進程。非應用進程標識字段表征進程不是app進程。系統(tǒng)應用標識碼段表征進程為系統(tǒng)應用進程,比如,工具應用進程。
具體的,通過運行進程目錄下的控制組群文件中的信息從M個進程中識別出N個非系統(tǒng)應用進程。
下面,給出以循環(huán)步驟依次對M個進程的控制組群文件中的信息進行識別,參考圖2,以依次識別M個進程是否為非系統(tǒng)應用進程:
S1021、識別M個進程中的第m個進程的控制組群文件是否包含背景進程標識字段,m依次為1至M;
S1022、如果第m個進程的控制組群文件包含背景進程標識字段,排除第m個進程,否則識別第m個進程的控制組群文件是否包含非應用進程標識字段;
S1023、如果第m個進程的控制組群文件包含非應用進程標識字段,排除第m個進程,否則識別第m個進程的控制組群文件中的應用標識碼是否在預設碼段內(nèi);
S1024、如果第m個進程的控制組群文件中的應用標識碼在預設碼段內(nèi),排除第m個進程。
下面以linux內(nèi)核的系統(tǒng)為例,針對第m個進程進行識別是否為前臺非系統(tǒng)應用進程的過程進行舉例說明:
步驟a、獲取運行進程目錄下第m個進程的控制組群文件cgroup。
步驟b、識別第m個進程的控制組群文件中第一行是否包含字段。bg_non_interactive,如果第一行包含字段:bg_non_interactive,表征第m個進程為背景進程,則排除第m個進程,否則執(zhí)行步驟c。
步驟c、在第m個進程的控制組群文件的第二行識別第m個進程的唯一標識別字符串。
步驟d、判斷第m個進程的唯一標識別字符串是否以指定字符串結尾,如果是,表征第m個進程為非應用進程,則排除第m個進程,否則執(zhí)行步驟e。
步驟e、讀取第m個進程的控制組群文件的第二行之后的數(shù)據(jù)以讀取到第m個進程的UID,判斷第m個進程的UID是否在1000~1038范圍內(nèi),如果是,表征第m個進程為系統(tǒng)應用進程,則排除第m個進程,否則,確定第m個進程為非系統(tǒng)應用進程。
在具體實施過程中,通過FileReader類創(chuàng)建一個用來處理讀文件操作的文件讀取對象,將創(chuàng)建的文件讀取對象作為參數(shù)創(chuàng)建一個BufferedReader對象,遍歷調(diào)用BufferedReader對象的readline方法讀到以UID字符串開頭所在一行中的數(shù)值。
在S102之后,接著執(zhí)行S103:根據(jù)N個非系統(tǒng)應用進程的進程優(yōu)先級信息,識別出N個非系統(tǒng)應用進程中的前臺運行應用進程。
在一實施例中,進程優(yōu)先級信息為資源占用優(yōu)先級,則S103的一種實施方式,參考圖3,包括:
S1031:遍歷N個非系統(tǒng)應用進程的資源占用優(yōu)先級;
S1032:確定出N個非系統(tǒng)應用進程中資源占用優(yōu)先級最高的進程為前臺運行應用進程。
下面,以linux內(nèi)核的系統(tǒng)為例,對遍歷N個非系統(tǒng)應用進程的資源占用優(yōu)先級的過程進行說明:
N個非系統(tǒng)應用進程中每個進程均分配有一個表明進程的資源占用優(yōu)先級的:oom_score_adj,字段oom_score_adj中的數(shù)值為基于內(nèi)存資源占用量、CPU時間和存活時間作權重調(diào)整的值,字段oom_score_adj中的數(shù)值越小,資源占用優(yōu)先級越高。
定義一個最小分數(shù)值變量-lowestOomScore,作為臨時最小分數(shù)值的存儲,對N個非系統(tǒng)應用進程進行遍歷:當?shù)趎個非系統(tǒng)應用進程的oom_score_adj字段中的數(shù)值小于lowestOomScore時,將第n個非系統(tǒng)應用進程的字段o om_score_adj中的數(shù)值賦值給lowestOomScore,n依次為1至n。遍歷結束時,lowestOomScore的值為當前最小的值,當前最小的值所對應的非系統(tǒng)應用進程為前臺運行應用進程,返回當前最小的值所對應的非系統(tǒng)應用進程的包名。具體的,進程的包名存放在運行進程目錄下的cmdline文件中,通過FileReader代碼讀取。
本發(fā)明實施例提供的技術方案還包括:在識別出N個非系統(tǒng)應用進程中的前臺運行應用進程之后,通過循環(huán)讀取前臺運行應用進程確定用戶操作前臺運行應用進程的時長。在一具體實施例中,如下步驟實現(xiàn):在識別出N個非系統(tǒng)應用進程中的前臺運行應用進程之后,按照預設周期輪詢前臺運行應用進程;基于對前臺運行應用進程的輪詢次數(shù)確定前臺運行應用進程在前臺的停留時長。
在具體實施過程中,通過后臺開啟一個服務組件來運行按照預設周期輪詢前臺運行應用進程的監(jiān)測邏輯,從而不干擾用戶的行為操作。將按照預設周期輪詢前臺運行應用進程的檢測代碼放到異步線程中執(zhí)行。
當?shù)谝淮螘r輪詢時,先記錄前臺運行應用進程的包名,通過System.currentTimeMillis()函數(shù)獲得第一次輪詢時的時間毫秒數(shù),比如,第一次輪詢時的時間毫秒數(shù)定義一個變量startTime,之后不停的輪詢,每次輪詢時,比較本次輪詢時的前臺運行應用進程的包名是否與上一次輪詢時前臺運行應用進程的包名是否相同,如果相同,表征用戶在操作同一應用進程,反之則表明切換了前臺應用,則記錄本次輪詢時的時間毫秒數(shù),本次輪詢的時間毫秒數(shù)可以定義為變量changeTime,本次輪詢的時間毫秒數(shù)與第一次輪詢時的時間毫秒數(shù)之差為前臺運行應用進程在前臺的停留時長。
進一步的,為計算下一個切換至前臺的應用進程在前臺的停留時長,本次輪詢時前臺運行應用進程時的包名與上一次輪詢前臺運行應用進程的包名不相同時,將本次論詢時的時間毫秒數(shù)作為下一個切換至前臺運行的應用進程第一次輪詢時的時間毫秒數(shù)。
在具體實施過程中,預設周期可以根據(jù)需要設置為1秒、0.9毫秒、0.8毫秒、0.7毫秒、0.6毫秒、0.5毫秒、0.4毫秒。
通過本實施例能夠監(jiān)測到各個切換至前臺運行的非系統(tǒng)應用進程在前臺的停留時長。
進一步的,在本發(fā)明實施例中,在基于對前臺運行應用進程的輪詢次數(shù)確定前臺運行應用進程在前臺的停留時長之后,還包括:判斷前臺運行應用進程在前臺的停留時長是否超過預設時長;如果前臺運行應用進程在前臺的停留時長超過預設時長,向用戶推送與前臺運行應用進程相關的可讀內(nèi)容。
預設時長根據(jù)實際需求進行設置,比如,可以設置為5分鐘,6分鐘,7分鐘、8分鐘、10分鐘等等。
具體的,比如,前臺運行應用進程為直播視頻應用進程,推送的可讀內(nèi)容為直播間信息或者直播間鏈接。比如,前臺運行應用進程為購物應用進程,推送的可讀內(nèi)容為商品信息。
基于同一發(fā)明構思,本發(fā)明實施例提供了一種應用操作監(jiān)測裝置,參考圖4所示,包括如下功能模塊:
進程信息獲取模塊201,用于從運行進程目錄中獲取正在運行的M個進程的進程信息,所述進程信息包括進程類型信息和進程優(yōu)先級信息,M為正整數(shù);
非系統(tǒng)應用進程識別模塊202,用于根據(jù)所述M個進程的進程類型信息,識別出所述M個進程中的N個非系統(tǒng)應用進程,N為小于或等于M的正整數(shù);
前臺應用進程識別模塊203,用于根據(jù)所述N個非系統(tǒng)應用進程的進程優(yōu)先級信息,識別出所述N個非系統(tǒng)應用進程中的前臺運行應用進程。
優(yōu)選的,所述進程信息獲取模塊201,包括:
創(chuàng)建單元,用于在所述運行進程目錄的路徑下創(chuàng)建以所述運行進程目錄為傳入?yún)?shù)的文件對象;
文件獲取單元,用于獲取所述文件對象的目錄下的M個文件;
確定單元,用于將所述M個文件的文件名對應確定為所述M個進程的唯一標識;
進程信息獲取單元,用于獲取所述M個進程的唯一標識的子目錄下信息為所述M個進程的進程信息。
優(yōu)選的,所述非系統(tǒng)應用進程識別模塊202,包括:
排除單元,用于從所述M個進程中排除所述進程類型信息符合如下任一種字段的進程,以得到所述N個非系統(tǒng)應用進程:
背景進程標識字段、非應用進程標識字段、系統(tǒng)應用標識碼段。
優(yōu)選的,所述排除單元,具體用于:
識別所述M個進程中的第m個進程的控制組群文件是否包含所述背景進程標識字段,m依次為1至M;
如果所述第m個進程的控制組群文件包含所述背景進程標識字段,排除所述第m個進程,否則識別所述第m個進程的控制組群文件是否包含所述非應用進程標識字段;
如果所述第m個進程的控制組群文件包含所述非應用進程標識字段,排除所述第m個進程,否則識別所述第m個進程的控制組群文件中的應用標識碼是否在預設碼段內(nèi);
如果所述第m個進程的控制組群文件中的應用標識碼在所述預設碼段內(nèi),排除所述第m個進程。
優(yōu)選的,所述前臺應用進程識別模塊203,包括:
遍歷單元,用于遍歷所述N個非系統(tǒng)應用進程的資源占用優(yōu)先級;
前臺應用進程確定單元,用于確定出所述N個非系統(tǒng)應用進程中資源占用優(yōu)先級最高的進程為所述前臺運行應用進程。
優(yōu)選的,所述裝置還包括:
輪詢模塊,用于按照預設周期輪詢所述前臺運行應用進程;
停留時長確定模塊,用于基于對所述前臺運行應用進程的輪詢次數(shù)確定所述前臺運行應用進程在前臺的停留時長。
述前臺運行應用進程在前臺的停留時長。
優(yōu)選的,所述裝置還包括:
判斷模塊,用戶判斷所述前臺運行應用進程在前臺的停留時長是否超過預設時長;
推送單元,用于如果所述前臺運行應用進程在前臺的停留時長超過所述預設時長,向用戶推送與所述前臺運行應用進程相關的可讀內(nèi)容。
應用操作監(jiān)測裝置實施例為實施應用操作監(jiān)測方法的裝置,本領域技術人員能夠基于前述應用操作監(jiān)測方法實施例知曉應用操作監(jiān)測裝置實施例的細節(jié)及變形,為了說明書的簡潔,本文不再贅述。
通過上述本發(fā)明提供的一個或多個實施例,至少具有如下技術效果或優(yōu)點:
通過從運行進程目錄中獲取正在運行進程的進程類型信息和進程優(yōu)先級信息,根據(jù)正在運行進程的進程類型信息識別出正在運行的非系統(tǒng)應用進程,根據(jù)正在運行的非系統(tǒng)應用進程的進程優(yōu)先級信息識別出前臺運行應用進程。從而通過運行進程目錄中能夠獲取到所有正在運行的進程,然后排除了會被誤判為前臺應用進程的進程,以保留的都為應用進程,再從應用進程的進程優(yōu)先級信息識別前臺運行應用進程,從而確保了識別前臺運行應用進程的準確性,進而以準確監(jiān)測用戶所操作的應用。
進一步的,確保了識別前臺運行應用進程的準確性有利于提高向用戶推送內(nèi)容的準確性。
在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設備固有相關。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的各描述,構造這類系統(tǒng)所要求的結構是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發(fā)明的單獨實施例。
本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的智能攝像系統(tǒng)以及網(wǎng)絡攝像頭中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者系統(tǒng)程序(如計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是,上述各實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應該將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或者步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干系統(tǒng)的單元權利要求中,這些系統(tǒng)中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。