本公開涉及計算機技術領域,尤其涉及一種多媒體資源解碼播放方法及裝置。
背景技術:
隨著終端設備的不斷普及,對高質量的多媒體資源(例如高清、超清、1080P視頻)的播放需求越來越多,多媒體資源的播放體驗越來越受到重視。同時,為了減少高質量視頻傳輸帶寬,新一代視頻壓縮標準H.265也會更加普及。因此,終端設備的解碼效率將會是決定播放體驗的重要因素。
在相關技術中,在終端設備中播放多媒體資源主要有硬解和軟解兩種方案,例如,在采用安卓系統的終端設備中,一種方案是使用安卓系統播放器提供的Java層API(應用程序編程接口)進行硬解播放;另一種方案是在本地(Native)層使用開源多媒體庫進行軟解播放。然而,硬解播放支持的封裝格式有限,只支持3GPP、MPEG-4、MPEG-TS等封裝格式,可定制程度低;軟解播放可以支持多種格式,但是在面對高分辨率視頻時,由于使用軟件解碼,CPU使用率較高,機器容易發(fā)燙,耗電量巨大。
技術實現要素:
有鑒于此,本公開提出了一種多媒體資源解碼播放方法及裝置,在兼容各種格式的同時,降低CPU使用率并減少功耗。
根據本公開的第一方面,提供了一種多媒體資源解碼播放方法,包括:利用多媒體資源處理程序,對多媒體資源文件進行解封裝和解復用,獲取待解碼的第一資源數據、待解碼的第二資源數據、和解碼參數;利用多媒體資源處理程序對所述第二資源數據進行解碼,獲得解碼后的第二資源數據;基于所述解碼參數,利用硬解碼器對所述第一資源數據進行解碼,獲得解碼后的第一資源數據;對所述解碼后的第一資源數據與解碼后的第二資源數據進行同步;播放所述解碼后的第一資源數據及所述解碼后的第二資源數據。
對于上述方法,在一種可能的實現方式中,獲取待解碼的第一資源數據、待解碼的第二資源數據、和解碼參數,包括:將所述第一資源數據從Native層復制到Java層的字節(jié)緩存空間中。
對于上述方法,在一種可能的實現方式中,獲取待解碼的第一資源數據、待解碼的第二資源數據、和解碼參數,包括:獲取硬解碼器的輸入緩存空間,并采用公平鎖對所述輸入緩存空間加鎖;將所述字節(jié)緩存空間中的所述第一資源數據存儲到已加鎖的所述輸入緩存空間中。
對于上述方法,在一種可能的實現方式中,基于所述解碼參數,利用硬解碼器對所述第一資源數據進行解碼,獲得解碼后的第一資源數據,包括:獲取硬解碼器的輸出緩存空間,并采用公平鎖對所述輸出緩存空間加鎖;通過硬解碼器對已加鎖的所述輸入緩存空間中的所述第一資源數據進行解碼,獲得解碼后的第一資源數據;將解碼后的第一資源數據存儲到已加鎖的所述輸出緩存空間中。
對于上述方法,在一種可能的實現方式中,所述多媒體資源處理程序包括FFmpeg。
對于上述方法,在一種可能的實現方式中,所述硬解碼器包括解碼器MediaCodec。
對于上述方法,在一種可能的實現方式中,所述第一資源數據為視頻數據,所述第二資源數據為音頻數據。
根據本公開的第二方面,提供了一種多媒體資源解碼播放裝置,包括:
待解碼數據獲取模塊,用于利用多媒體資源處理程序,對多媒體資源文件進行解封裝和解復用,獲取待解碼的第一資源數據、待解碼的第二資源數據、和解碼參數;
第二資源數據解碼模塊,用于利用多媒體資源處理程序對所述第二資源數據進行解碼,獲得解碼后的第二資源數據;
第一資源數據解碼模塊,用于基于所述解碼參數,利用硬解碼器對所述第一資源數據進行解碼,獲得解碼后的第一資源數據;
數據同步模塊,用于對所述解碼后的第一資源數據與解碼后的第二資源數據進行同步;
播放模塊,用于播放所述解碼后的第一資源數據及所述解碼后的第二資源數據。
對于上述裝置,在一種可能的實現方式中,所述待解碼數據獲取模塊包括:
數據復制子模塊,用于將所述第一資源數據從Native層復制到Java層的字節(jié)緩存空間中。
對于上述裝置,在一種可能的實現方式中,所述待解碼數據獲取模塊包括:
輸入緩存獲取及加鎖子模塊,用于獲取硬解碼器的輸入緩存空間,并采用公平鎖對所述輸入緩存空間加鎖;
數據輸入緩存子模塊,用于將所述字節(jié)緩存空間中的所述第一資源數據存儲到已加鎖的所述輸入緩存空間中。
對于上述裝置,在一種可能的實現方式中,所述第一資源數據解碼模塊包括:
輸出緩存獲取及加鎖子模塊,用于獲取硬解碼器的輸出緩存空間,并采用公平鎖對所述輸出緩存空間加鎖;
硬解碼子模塊,用于通過硬解碼器對已加鎖的所述輸入緩存空間中的所述第一資源數據進行解碼,獲得解碼后的第一資源數據;
數據輸出緩存子模塊,用于將解碼后的第一資源數據存儲到已加鎖的所述輸出緩存空間中。
對于上述裝置,在一種可能的實現方式中,所述多媒體資源處理程序包括FFmpeg。
對于上述裝置,在一種可能的實現方式中,所述硬解碼器包括解碼器MediaCodec。
對于上述裝置,在一種可能的實現方式中,所述第一資源數據為視頻數據,所述第二資源數據為音頻數據。
根據本公開的第三方面,提供了一種多媒體資源解碼播放裝置,包括:處理器;用于存儲處理器可執(zhí)行指令的存儲器;
其中,所述處理器被配置為:利用多媒體資源處理程序,對多媒體資源文件進行解封裝和解復用,獲取待解碼的第一資源數據、待解碼的第二資源數據、和解碼參數;利用多媒體資源處理程序對所述第二資源數據進行解碼,獲得解碼后的第二資源數據;基于所述解碼參數,利用硬解碼器對所述第一資源數據進行解碼,獲得解碼后的第一資源數據;對所述解碼后的第一資源數據與解碼后的第二資源數據進行同步;播放所述解碼后的第一資源數據及所述解碼后的第二資源數據。
根據本公開的第四方面,提供了一種非易失性計算機可讀存儲介質,當所述存儲介質中的指令由終端和/或服務器的處理器執(zhí)行時,使得終端和/或服務器能夠執(zhí)行一種多媒體資源解碼播放方法,所述方法包括:利用多媒體資源處理程序,對多媒體資源文件進行解封裝和解復用,獲取待解碼的第一資源數據、待解碼的第二資源數據、和解碼參數;利用多媒體資源處理程序對所述第二資源數據進行解碼,獲得解碼后的第二資源數據;基于所述解碼參數,利用硬解碼器對所述第一資源數據進行解碼,獲得解碼后的第一資源數據;對所述解碼后的第一資源數據與解碼后的第二資源數據進行同步;播放所述解碼后的第一資源數據及所述解碼后的第二資源數據。
根據本公開實施例的多媒體資源解碼播放方法及裝置,能夠利用多媒體資源處理程序對多媒體資源文件進行解封裝和解復用,利用硬解碼器對第一資源數據進行解碼,并在數據同步后進行播放,能夠兼容各種封裝格式,降低CPU使用率并減少功耗,提升用戶體驗。
根據下面參考附圖對示例性實施例的詳細說明,本公開的其它特征及方面將變得清楚。
附圖說明
包含在說明書中并且構成說明書的一部分的附圖與說明書一起示出了本公開的示例性實施例、特征和方面,并且用于解釋本公開的原理。
圖1是根據一示例性實施例示出的一種多媒體資源解碼播放方法的流程圖。
圖2是根據一示例性實施例示出的一種多媒體資源解碼播放方法的流程圖。
圖3是根據一示例性實施例示出的一種多媒體資源解碼播放方法的流程圖。
圖4是根據一示例性實施例示出的一種多媒體資源解碼播放方法的步驟13的流程圖。
圖5是根據一示例性實施例示出的一種多媒體資源解碼播放裝置的框圖。
圖6是根據一示例性實施例示出的一種多媒體資源解碼播放裝置的框圖。
圖7是根據一示例性實施例示出的一種多媒體資源解碼播放裝置的框圖。
具體實施方式
以下將參考附圖詳細說明本公開的各種示例性實施例、特征和方面。附圖中相同的附圖標記表示功能相同或相似的元件。盡管在附圖中示出了實施例的各種方面,但是除非特別指出,不必按比例繪制附圖。
在這里專用的詞“示例性”意為“用作例子、實施例或說明性”。這里作為“示例性”所說明的任何實施例不必解釋為優(yōu)于或好于其它實施例。
另外,為了更好的說明本公開,在下文的具體實施方式中給出了眾多的具體細節(jié)。本領域技術人員應當理解,沒有某些具體細節(jié),本公開同樣可以實施。在一些實例中,對于本領域技術人員熟知的方法、手段、元件和電路未作詳細描述,以便于凸顯本公開的主旨。
實施例1
圖1是根據一示例性實施例示出的一種多媒體資源解碼播放方法的流程圖。該方法可應用于終端設備(例如智能手機)或服務器中。如圖1所示,根據本公開實施例的多媒體資源解碼播放方法包括:
步驟S11,利用多媒體資源處理程序,對多媒體資源文件進行解封裝和解復用,獲取待解碼的第一資源數據、待解碼的第二資源數據、和解碼參數;
步驟S12,利用多媒體資源處理程序對所述第二資源數據進行解碼,獲得解碼后的第二資源數據;
步驟S13,基于所述解碼參數,利用硬解碼器對所述第一資源數據進行解碼,獲得解碼后的第一資源數據;
步驟S14,對所述解碼后的第一資源數據與解碼后的第二資源數據進行同步;
步驟S15,播放所述解碼后的第一資源數據及所述解碼后的第二資源數據。
根據本公開的實施例能夠利用多媒體資源處理程序對多媒體資源文件進行解封裝和解復用,利用硬解碼器對第一資源數據進行解碼,并在數據同步后進行播放,能夠兼容各種封裝格式,降低CPU使用率并減少功耗,提升用戶體驗。
舉例來說,對于多媒體資源文件,可以采用多媒體資源處理程序進行解封裝和解復用,該解封裝和解復用的過程為軟件方式,可以實現各種封裝格式的多媒體資源文件的解封裝和解復用。經過解封裝和解復用,可以獲得待解碼的第一資源數據、待解碼的第二資源數據以及解碼參數。對于待解碼的第二資源數據,可以采用多媒體資源處理程序進行解碼,獲得解碼后的第二資源數據;對于待解碼的第一資源數據,可以采用硬解碼器進行解碼,獲得解碼后的第一資源數據。
在一種可能的實現方式中,所述多媒體資源文件可以例如為視頻文件,所述多媒體資源處理程序可以例如為FFmpeg,經解封裝和解復用后,所獲取的待解碼的第一資源數據可以為視頻數據,待解碼的第二資源數據可以為音頻數據。
這種方式考慮到視頻數據解碼運算量較大,采用硬解碼器對視頻數據進行解碼,將CPU的部分解碼工作轉到了GPU,使CPU使用率大大降低,降低CPU功耗,可使APP使用更加流暢,避免了CPU使用率過高導致的手機發(fā)熱、掉電過快等問題,同時,這種方式考慮到音頻數據解碼運算量較小,采用軟解碼的方式解碼音頻數據,一方面平衡CPU和硬件碼器的處理量,另一方面可以使軟、硬解碼并行進行,進一步提高處理效率。通過這種方式,提高了終端的解碼能力,使得終端能夠播放更高清晰度的視頻,滿足了用戶播放高清晰度視頻的需求。
在一種可能的實現方式中,在終端設備采用安卓系統時,所述硬解碼器可以為安卓解碼器MediaCodec。其中,所述解碼參數可以包括硬解碼器進行解碼所需要的參數,例如信息參數SPS/PPS、渲染需要的畫布Surface、包含時間信息的時間戳等,信息參數SPS/PPS可以通過FFmpeg的外部API結構體AVCodecContext數據結構中的附加信息(extradata)獲取。
在一種可能的實現方式中,可以在Java層啟動解碼器MediaCodec(硬解碼器)并開始解碼線程。在本地層的解復用(Demux)線程中,可以調用解碼器MediaCodec,獲取輸入緩存空間(InputBuffer),如果獲取失敗,則需要重新獲取。在獲取到輸入緩存空間后,可以將待解碼的第一資源數據復制到該輸入緩存空間中。在Java層將該輸入緩存空間放入解碼器MediaCodec的輸入緩存空間隊列中,由解碼器MediaCodec進行解碼。同時,將包含時間信息的時間戳也放入該輸入緩存空間,為之后的同步處理做準備。
在一種可能的實現方式中,在Java層的解碼線程中,可以獲取輸出緩存空間(OutputBuffer),如果獲取失敗,則需要重新獲取。在獲取到輸出緩存空間后,可以將解碼器MediaCodec解碼后的第一資源數據放入該輸出緩存空間中,并且可以釋放存儲有待解碼的第一資源數據的輸入緩存空間。其中,在第一資源數據為視頻數據時,解碼后的第一資源數據可以為視頻幀。
在一種可能的實現方式中,可以將解碼后的第一資源數據(例如視頻幀)的時間戳與解碼后的第二資源數據(例如音頻數據)的時間戳進行對比,實現解碼后的第一資源數據與解碼后的第二資源數據之間的同步。并且,可以由本地層決定是否渲染解碼后的第一資源數據(例如視頻幀),在需要渲染時,對解碼后的第一資源數據進行渲染,否則,不進行渲染。然后,播放所述解碼后的第一資源數據及所述解碼后的第二資源數據,并且可以釋放存儲有解碼后的的第一資源數據的輸出緩存空間。
圖2是根據一示例性實施例示出的一種多媒體資源解碼播放方法的流程圖。如圖2所示,在一種可能的實現方式中,步驟S11包括:
在步驟S111中,將所述第一資源數據從Native層復制到Java層的字節(jié)緩存空間中。
舉例來說,在本地層的解復用(Demux)線程中,經解復用后,待解碼的第一資源數據存儲于本地層中,而獲取到的輸入緩存空間(InputBuffer)位于Java層,因此,需要將Native層的數據傳遞到Java層。使用傳統的數據傳遞操作會導致數據多復制一次。在本公開的實施例中,可以直接將Native層的數據(第一資源數據)復制到Java層創(chuàng)建的字節(jié)緩存空間(ByteBuffer)中,再將字節(jié)緩存空間中的第一資源數據存儲到輸入緩存空間中。由于ByteBuffer使用了系統內存而非JVM中的內存,因而避免了數據在JVM層和Native層傳遞過程中的復制。
通過這種方式,可以減少第一資源數據傳遞過程中的復制次數,提高數據傳遞效率。
圖3是根據一示例性實施例示出的一種多媒體資源解碼播放方法的流程圖。如圖3所示,在一種可能的實現方式中,步驟S11包括:
在步驟S112中,獲取硬解碼器的輸入緩存空間,并采用公平鎖對所述輸入緩存空間加鎖;
在步驟S113中,將所述字節(jié)緩存空間中的所述第一資源數據存儲到已加鎖的所述輸入緩存空間中。
舉例來說,在對解碼器Mediacodec內部的緩存空間進行操作時,例如在解復用(Demux)線程獲取輸入緩存空間的操作、在解碼線程獲取輸出緩存空間的操作,以及在播放器查找(seek)時對Mediacodec進行沖刷(flush)的操作等,需要對解碼器內部的緩存空間進行加鎖,從而避免緩存空間中的數據不一致所導致的各種錯誤。在解碼過程中獲取輸入緩存空間和獲取輸入緩存空間的操作會頻繁執(zhí)行,如果使用傳統的非公平鎖(例如采用synchronized關鍵字進行加鎖),則獲取緩存空間的操作以及沖刷操作都有可能會得不到及時的響應,從而導致沖刷操作滯后或一段時間無法獲得緩存空間。
在一種可能的實現方式中,在獲取硬解碼器的輸入緩存空間時,采用公平鎖(例如ReentrantLock提供的公平鎖)對所述輸入緩存空間加鎖。公平鎖具有隊列先進先出的特性,保證了沖刷操作能夠及時響應,同時保證了獲取輸入緩存空間和獲取輸出緩存空間操作執(zhí)行頻率一致,不會出現因鎖競爭而導致某個操作無法及時執(zhí)行的問題。在對輸入緩存空間加鎖后,可以將字節(jié)緩存空間中的第一資源數據存儲到已加鎖的所述輸入緩存空間中,以進行解碼。本公開對公平鎖的具體類型不進行限制,可以采用本領域常用的各種公平鎖。
通過這種方式,采用公平鎖對輸入緩存空間加鎖,能夠避免緩存空間中出現錯誤,并且保證獲取輸入緩存空間和獲取輸出緩存空間操作執(zhí)行頻率一致,提高了解碼效率。
圖4是根據一示例性實施例示出的一種多媒體資源解碼播放方法的步驟13的流程圖。如圖4所示,在一種可能的實現方式中,步驟S13包括:
在步驟S131中,獲取硬解碼器的輸出緩存空間,并采用公平鎖對所述輸出緩存空間加鎖;
在步驟S132中,通過硬解碼器對已加鎖的所述輸入緩存空間中的所述第一資源數據進行解碼,獲得解碼后的第一資源數據;
在步驟S133中,將解碼后的第一資源數據存儲到已加鎖的所述輸出緩存空間中。
舉例來說,在解碼線程中,可以獲取解碼器Mediacodec的輸出緩存空間,并采用公平鎖(例如ReentrantLock提供的公平鎖)對所述輸出緩存空間加鎖。在獲取到輸出緩存空間后,通過硬解碼器對已加鎖的輸入緩存空間中的第一資源數據進行解碼,獲得解碼后的第一資源數據(例如視頻幀),并且將解碼后的第一資源數據存儲到已加鎖的所述輸出緩存空間中。
通過這種方式,采用公平鎖對輸出緩存空間加鎖,能夠避免緩存空間中出現錯誤,并且保證獲取輸入緩存空間和獲取輸出緩存空間操作執(zhí)行頻率一致,使得獲取輸入、輸出緩存空間的操作能夠有序交替進行,不會出現某個操作長時間沒有獲得鎖而無法執(zhí)行的情況,避免了鎖競爭,提高了解碼效率。
實施例2
圖5是根據一示例性實施例示出的一種多媒體資源解碼播放的框圖。如圖5所示,該多媒體資源解碼播放裝置包括:待解碼數據獲取模塊51、第二資源數據解碼模塊52、第一資源數據解碼模塊53、數據同步模塊54以及播放模塊55。
待解碼數據獲取模塊51,用于利用多媒體資源處理程序,對多媒體資源文件進行解封裝和解復用,獲取待解碼的第一資源數據、待解碼的第二資源數據、和解碼參數;
第二資源數據解碼模塊52,用于利用多媒體資源處理程序對所述第二資源數據進行解碼,獲得解碼后的第二資源數據;
第一資源數據解碼模塊53,用于基于所述解碼參數,利用硬解碼器對所述第一資源數據進行解碼,獲得解碼后的第一資源數據;
數據同步模塊54,用于對所述解碼后的第一資源數據與解碼后的第二資源數據進行同步;
播放模塊55,用于播放所述解碼后的第一資源數據及所述解碼后的第二資源數據。
圖6是根據一示例性實施例示出的一種多媒體資源解碼播放的框圖。如圖6所示,在一種可能的實現方式中,所述待解碼數據獲取模塊51包括:
數據復制子模塊511,用于將所述第一資源數據從Native層復制到Java層的字節(jié)緩存空間中。
如圖6所示,在一種可能的實現方式中,所述待解碼數據獲取模塊51包括:
輸入緩存獲取及加鎖子模塊512,用于獲取硬解碼器的輸入緩存空間,并采用公平鎖對所述輸入緩存空間加鎖;
數據輸入緩存子模塊513,用于將所述字節(jié)緩存空間中的所述第一資源數據存儲到已加鎖的所述輸入緩存空間中。
如圖6所示,在一種可能的實現方式中,所述第一資源數據解碼模塊53包括:
輸出緩存獲取及加鎖子模塊531,用于獲取硬解碼器的輸出緩存空間,并采用公平鎖對所述輸出緩存空間加鎖;
硬解碼子模塊532,用于通過硬解碼器對已加鎖的所述輸入緩存空間中的所述第一資源數據進行解碼,獲得解碼后的第一資源數據;
數據輸出緩存子模塊533,用于將解碼后的第一資源數據存儲到已加鎖的所述輸出緩存空間中。
在一種可能的實現方式中,所述多媒體資源處理程序包括FFmpeg。
在一種可能的實現方式中,所述硬解碼器包括解碼器MediaCodec。
在一種可能的實現方式中,所述第一資源數據為視頻數據,所述第二資源數據為音頻數據。
根據本公開的實施例能夠利用多媒體資源處理程序對多媒體資源文件進行解封裝和解復用,利用硬解碼器對第一資源數據進行解碼,并在數據同步后進行播放,能夠兼容各種封裝格式,降低CPU使用率并減少功耗,提升用戶體驗。
實施例3
圖7是根據一示例性實施例示出的一種多媒體資源解碼播放裝置800的框圖。例如,裝置800可以是移動電話,計算機,數字廣播終端,消息收發(fā)設備,游戲控制臺,平板設備,醫(yī)療設備,健身設備,個人數字助理等。
參照圖7,裝置800可以包括以下一個或多個組件:處理組件802,存儲器804,電源組件806,多媒體組件808,音頻組件810,輸入/輸出(I/O)的接口812,傳感器組件814,以及通信組件816。
處理組件802通??刂蒲b置800的整體操作,諸如與顯示,電話呼叫,數據通信,相機操作和記錄操作相關聯的操作。處理組件802可以包括一個或多個處理器820來執(zhí)行指令,以完成上述的方法的全部或部分步驟。此外,處理組件802可以包括一個或多個模塊,便于處理組件802和其他組件之間的交互。例如,處理組件802可以包括多媒體模塊,以方便多媒體組件808和處理組件802之間的交互。
存儲器804被配置為存儲各種類型的數據以支持在裝置800的操作。這些數據的示例包括用于在裝置800上操作的任何應用程序或方法的指令,聯系人數據,電話簿數據,消息,圖片,視頻等。存儲器804可以由任何類型的易失性或非易失性存儲設備或者它們的組合實現,如靜態(tài)隨機存取存儲器(SRAM),電可擦除可編程只讀存儲器(EEPROM),可擦除可編程只讀存儲器(EPROM),可編程只讀存儲器(PROM),只讀存儲器(ROM),磁存儲器,快閃存儲器,磁盤或光盤。
電源組件806為裝置800的各種組件提供電力。電源組件806可以包括電源管理系統,一個或多個電源,及其他與為裝置800生成、管理和分配電力相關聯的組件。
多媒體組件808包括在所述裝置800和用戶之間的提供一個輸出接口的屏幕。在一些實施例中,屏幕可以包括液晶顯示器(LCD)和觸摸面板(TP)。如果屏幕包括觸摸面板,屏幕可以被實現為觸摸屏,以接收來自用戶的輸入信號。觸摸面板包括一個或多個觸摸傳感器以感測觸摸、滑動和觸摸面板上的手勢。所述觸摸傳感器可以不僅感測觸摸或滑動動作的邊界,而且還檢測與所述觸摸或滑動操作相關的持續(xù)時間和壓力。在一些實施例中,多媒體組件808包括一個前置攝像頭和/或后置攝像頭。當裝置800處于操作模式,如拍攝模式或視頻模式時,前置攝像頭和/或后置攝像頭可以接收外部的多媒體數據。每個前置攝像頭和后置攝像頭可以是一個固定的光學透鏡系統或具有焦距和光學變焦能力。
音頻組件810被配置為輸出和/或輸入音頻信號。例如,音頻組件810包括一個麥克風(MIC),當裝置800處于操作模式,如呼叫模式、記錄模式和語音識別模式時,麥克風被配置為接收外部音頻信號。所接收的音頻信號可以被進一步存儲在存儲器804或經由通信組件816發(fā)送。在一些實施例中,音頻組件810還包括一個揚聲器,用于輸出音頻信號。
I/O接口812為處理組件802和外圍接口模塊之間提供接口,上述外圍接口模塊可以是鍵盤,點擊輪,按鈕等。這些按鈕可包括但不限于:主頁按鈕、音量按鈕、啟動按鈕和鎖定按鈕。
傳感器組件814包括一個或多個傳感器,用于為裝置800提供各個方面的狀態(tài)評估。例如,傳感器組件814可以檢測到裝置800的打開/關閉狀態(tài),組件的相對定位,例如所述組件為裝置800的顯示器和小鍵盤,傳感器組件814還可以檢測裝置800或裝置800一個組件的位置改變,用戶與裝置800接觸的存在或不存在,裝置800方位或加速/減速和裝置800的溫度變化。傳感器組件814可以包括接近傳感器,被配置用來在沒有任何的物理接觸時檢測附近物體的存在。傳感器組件814還可以包括光傳感器,如CMOS或CCD圖像傳感器,用于在成像應用中使用。在一些實施例中,該傳感器組件814還可以包括加速度傳感器,陀螺儀傳感器,磁傳感器,壓力傳感器或溫度傳感器。
通信組件816被配置為便于裝置800和其他設備之間有線或無線方式的通信。裝置800可以接入基于通信標準的無線網絡,如WiFi,2G或3G,或它們的組合。在一個示例性實施例中,通信組件816經由廣播信道接收來自外部廣播管理系統的廣播信號或廣播相關信息。在一個示例性實施例中,所述通信組件816還包括近場通信(NFC)模塊,以促進短程通信。例如,在NFC模塊可基于射頻識別(RFID)技術,紅外數據協會(IrDA)技術,超寬帶(UWB)技術,藍牙(BT)技術和其他技術來實現。
在示例性實施例中,裝置800可以被一個或多個應用專用集成電路(ASIC)、數字信號處理器(DSP)、數字信號處理設備(DSPD)、可編程邏輯器件(PLD)、現場可編程門陣列(FPGA)、控制器、微控制器、微處理器或其他電子元件實現,用于執(zhí)行上述方法。
在示例性實施例中,還提供了一種包括指令的非易失性計算機可讀存儲介質,例如包括指令的存儲器804,上述指令可由裝置800的處理器820執(zhí)行以完成上述方法。
本公開可以是系統、方法和/或計算機程序產品。計算機程序產品可以包括計算機可讀存儲介質,其上載有用于使處理器實現本公開的各個方面的計算機可讀程序指令。
計算機可讀存儲介質可以是可以保持和存儲由指令執(zhí)行設備使用的指令的有形設備。計算機可讀存儲介質例如可以是――但不限于――電存儲設備、磁存儲設備、光存儲設備、電磁存儲設備、半導體存儲設備或者上述的任意合適的組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括:便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、靜態(tài)隨機存取存儲器(SRAM)、便攜式壓縮盤只讀存儲器(CD-ROM)、數字多功能盤(DVD)、記憶棒、軟盤、機械編碼設備、例如其上存儲有指令的打孔卡或凹槽內凸起結構、以及上述的任意合適的組合。這里所使用的計算機可讀存儲介質不被解釋為瞬時信號本身,諸如無線電波或者其他自由傳播的電磁波、通過波導或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸的電信號。
這里所描述的計算機可讀程序指令可以從計算機可讀存儲介質下載到各個計算/處理設備,或者通過網絡、例如因特網、局域網、廣域網和/或無線網下載到外部計算機或外部存儲設備。網絡可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機、網關計算機和/或邊緣服務器。每個計算/處理設備中的網絡適配卡或者網絡接口從網絡接收計算機可讀程序指令,并轉發(fā)該計算機可讀程序指令,以供存儲在各個計算/處理設備中的計算機可讀存儲介質中。
用于執(zhí)行本公開操作的計算機程序指令可以是匯編指令、指令集架構(ISA)指令、機器指令、機器相關指令、微代碼、固件指令、狀態(tài)設置數據、或者以一種或多種編程語言的任意組合編寫的源代碼或目標代碼,所述編程語言包括面向對象的編程語言—諸如Smalltalk、C++等,以及常規(guī)的過程式編程語言—諸如“C”語言或類似的編程語言。計算機可讀程序指令可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網絡—包括局域網(LAN)或廣域網(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網服務提供商來通過因特網連接)。在一些實施例中,通過利用計算機可讀程序指令的狀態(tài)信息來個性化定制電子電路,例如可編程邏輯電路、現場可編程門陣列(FPGA)或可編程邏輯陣列(PLA),該電子電路可以執(zhí)行計算機可讀程序指令,從而實現本公開的各個方面。
這里參照根據本公開實施例的方法、裝置(系統)和計算機程序產品的流程圖和/或框圖描述了本公開的各個方面。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機可讀程序指令實現。
這些計算機可讀程序指令可以提供給通用計算機、專用計算機或其它可編程數據處理裝置的處理器,從而生產出一種機器,使得這些指令在通過計算機或其它可編程數據處理裝置的處理器執(zhí)行時,產生了實現流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。也可以把這些計算機可讀程序指令存儲在計算機可讀存儲介質中,這些指令使得計算機、可編程數據處理裝置和/或其他設備以特定方式工作,從而,存儲有指令的計算機可讀介質則包括一個制造品,其包括實現流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的各個方面的指令。
也可以把計算機可讀程序指令加載到計算機、其它可編程數據處理裝置、或其它設備上,使得在計算機、其它可編程數據處理裝置或其它設備上執(zhí)行一系列操作步驟,以產生計算機實現的過程,從而使得在計算機、其它可編程數據處理裝置、或其它設備上執(zhí)行的指令實現流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作。
附圖中的流程圖和框圖顯示了根據本公開的多個實施例的系統、方法和計算機程序產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個或多個用于實現規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實現中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框實際上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統來實現,或者可以用專用硬件與計算機指令的組合來實現。
以上已經描述了本公開的各實施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本技術領域的普通技術人員來說許多修改和變更都是顯而易見的。本文中所用術語的選擇,旨在最好地解釋各實施例的原理、實際應用或對市場中的技術的技術改進,或者使本技術領域的其它普通技術人員能理解本文披露的各實施例。