本發明涉及電視技術領域,尤其涉及智能電視信源切換方法及裝置。
背景技術:
隨著智能設備技術的發展,運行在智能電視系統中的應用也越來越多樣化。由于不同應用的需要,智能電視設置有很多信源,比如HDMI(高清晰度多媒體信號)、VGA(視頻圖形陣列)、DVI(數字視頻接口)、ATV(射頻模擬電視信號)、DTV(數字電視信號)、XBOX游戲機等等,這些信源通過采用不同的輸入通道,滿足了不同應用的信源使用需求。
然而,智能電視的多信源也使得需要切換信源的場景增多,由于應用切換信源的操作是在智能電視搭載的系統的生命周期內執行,當多個應用之間相互切換時,會導致系統的生命周期錯亂,由此可能會導致切換信源的時序錯亂,最終切換到到信源并非是用戶真正想要切換到的信源。
技術實現要素:
本發明的主要目的在于提出一種智能電視信源切換方法及裝置,旨在解決多個應用相互切換信源時導致的信源切換錯亂的技術問題。
為實現上述目的,本發明提供一種智能電視信源切換方法,所述方法包括如下步驟:
接收應用的權限申請請求,根據所述權限申請請求從預設的權限管理資源池中為所述應用分配一個權限ID;
接收所述應用的信源切換請求,所述信源切換請求攜帶分配的所述權限ID;
判斷所述信源切換請求中的所述權限ID當前是否具備信源切換權限;
若是,則執行所述應用的信源切換,并限制所述權限管理資源池中除所述權限ID之外的所有ID的信源切換權限。
可選地,所述接收應用的權限申請請求,根據所述權限申請請求從預設的權限管理資源池中為所述應用分配一個權限ID的步驟之前,還包括:
設置權限管理資源池,所述權限管理資源池用于存儲若干ID和每個ID當前所處的狀態。
可選地,所述判斷所述信源切換請求中的所述權限ID當前是否具備信源切換權限的步驟包括:
判斷當前所述權限資源存儲池中是否存在所述權限ID;
若是,則判斷所述權限ID當前是否處于預設狀態;
若是,則判定所述權限ID當前具備信源切換權限。
可選地,所述執行所述應用的信源切換,并限制所述權限管理資源池中除所述權限ID之外的所有ID的信源切換權限的步驟之前,還包括:
判斷所述權限ID是否與預設的全局變量中的ID相同,所述全局變量用于存儲當前具備信源切換權限的ID;
若是,則執行步驟:執行所述應用的信源切換,并限制所述權限管理資源池中除所述權限ID之外的所有ID的信源切換權限。
可選地,所述信源切換請求包括搶占式信源切換請求和非搶占式信源切換請求。
此外,為實現上述目的,本發明還提供一種智能電視信源切換裝置,所述裝置包括:
分配模塊,用于接收應用的權限申請請求,根據所述權限申請請求從預設的權限管理資源池中為所述應用分配一個權限ID;
接收模塊,用于接收所述應用的信源切換請求,所述信源切換請求攜帶分配的所述權限ID;
第一判斷模塊,用于判斷所述信源切換請求中的所述權限ID當前是否具備信源切換權限;
執行模塊,用于若所述信源切換請求中的所述權限ID當前具備信源切換權限,則執行所述應用的信源切換,并限制所述權限管理資源池中除所述權限ID之外的所有ID的信源切換權限。
可選地,所述裝置還包括:
設置模塊,用于設置權限管理資源池,所述權限管理資源池用于存儲若干ID和每個ID當前所處的狀態。
可選地,所述第一判斷模塊還用于:
判斷當前所述權限資源存儲池中是否存在所述權限ID;
若是,則判斷所述權限ID當前是否處于預設狀態;
若是,則判定所述權限ID當前具備信源切換權限。
可選地,所述裝置還包括:
第二判斷模塊,用于判斷所述權限ID是否與預設的全局變量中的ID相同,所述全局變量用于存儲當前具備信源切換權限的ID;
所述執行模塊還用于在所述權限ID與預設的全局變量中的ID相同時,執行所述應用的信源切換,并限制所述權限管理資源池中除所述權限ID之外的所有ID的信源切換權限。
可選地,所述信源切換請求包括搶占式信源切換請求和非搶占式信源切換請求。
本發明接收應用的權限申請請求,根據所述權限申請請求從預設的權限管理資源池中為所述應用分配一個權限ID;接收所述應用的信源切換請求,所述信源切換請求攜帶分配的所述權限ID;判斷所述信源切換請求中的所述權限ID當前是否具備信源切換權限;若是,則執行所述應用的信源切換,并限制所述權限管理資源池中除所述權限ID之外的所有ID的信源切換權限。本發明通過為信源切換提供一種權限控制機制,當某一應用請求切換信源時,必須通過權限申請才可以完成,當某一應用獲取執行權限后,其他應用就失去了執行權限,從而保證了始終只有一個應用有執行權限,從而解決了多個應用相互切換信源時導致的信源切換錯亂的技術問題。
附圖說明
圖1為本發明智能電視信源切換方法第一實施例的流程示意圖;
圖2為本發明智能電視信源切換方法第二實施例的流程示意圖;
圖3為本發明權限資源管理池的設計場景示意圖;
圖4為本發明對應用進行權限控制的設計場景示意圖;
圖5為本發明智能電視信源切換方法第三實施例的流程示意圖;
圖6為本發明判斷應用是否具備執行信源切換權限的流程示意圖;
圖7為本發明判斷應用是否具備執行信源切換權限的另一流程示意圖;
圖8為本發明應用調用不同切信源接口進行權限申請的流程示意圖;
圖9為本發明應用A和應用B信源切換的應用場景示意圖;
圖10為本發明智能電視信源切換裝置第一實施例的功能模塊示意圖;
圖11為本發明智能電視信源切換裝置第二實施例的功能模塊示意圖;
圖12為本發明智能電視信源切換裝置第三實施例的功能模塊示意圖。
本發明目的的實現、功能特點及優點將結合實施例,參照附圖做進一步說明。
具體實施方式
應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
本發明提供一種智能電視信源切換方法。
參照圖1,圖1為本發明智能電視信源切換方法第一實施例的流程示意圖。所述方法包括如下步驟:
步驟S10,接收應用的權限申請請求,根據所述權限申請請求從預設的權限管理資源池中為所述應用分配一個權限ID;
在智能電視系統安裝了多個應用的情形下,智能電視會根據不同應用的需要來對當前播放信源進行切換,比如智能電視當前處于數字電視信源播放模式,用戶通過某個網絡視頻應用點播網絡視頻,則智能電視需要切換至HDMI多媒體信源播放模式以播放網絡視頻。具體地,智能電視可以接收用戶的遙控指令來切換信源,也可以預先設置信源切換規則,比如在預設應用啟動后自動切換至該應用對應的信源,具體實施中可進行靈活設置。
與現有技術不同之處在于,本發明執行信源切換的應用必須具備向系統申請的權限,并且只有當申請的權限符合預設條件時,該應用才能執行信源切換。具體地,應用可以在某一時刻基于用戶觸發的權限申請指令向系統進行權限申請,也可以在啟動后自動向系統進行權限申請,也可以在應用程序運行的某一時刻自動向系統進行權限申請,總之,本發明對應用進行權限申請的具體場景和時刻不作限定。
在應用申請權限時,智能電視接收該應用的權限申請請求,并從預設的權限管理資源池中為該應用分配一個權限ID(此ID是唯一存在的),其中,權限資源管理池中存儲了若干ID,且每個ID都有其對應的狀態。需要說明的是,智能電視分配ID時可以是隨機分配,也可以是順序分配,且為保證ID與應用之間的一一對應關系,一個ID只能分配給一個應用。
步驟S20,接收所述應用的信源切換請求,所述信源切換請求攜帶分配的所述權限ID;
在應用獲取到系統分配的權限ID后,智能電視接收某一時刻該應用發起信源切換請求,該信源切換請求攜帶之前分配給應用的權限ID,此時智能電視可根據該權限ID判斷信源切換請求是由哪一個應用發起的。
步驟S30,判斷所述信源切換請求中的所述權限ID當前是否具備信源切換權限;
具體地,智能電視可查找權限資源存儲池,進而獲取權限資源存儲池中該權限ID當前的狀態,通過該權限ID當前的狀態來判斷該權限ID當前是否具備信源切換權限。比如,對于一個ID其狀態可分為為Request(請求)、Active(活動)、Release(釋放)三種,若該權限ID當前為Release狀態,則可判定其不具備信源切換權限。
步驟S40,若所述信源切換請求中的所述權限ID當前具備信源切換權限,則執行所述應用的信源切換,并限制所述權限管理資源池中除所述權限ID之外的所有ID的信源切換權限。
若所述權限ID當前具備信源切換權限,則應用執行信源切換,同時限制權限管理資源池中其他ID的信源切換權限。比如,當某一ID有權限切換信源時,智能電視會將權限管理資源池中其他ID的權限都取消,且其他ID對應的狀態也會變為Release,從而保證了當前只有唯一一個ID具有執行權限。
若所述權限ID當前不具備信源切換權限,則智能電視將不會執行信源切換,此時智能電視可以向應用返回無權限信息。
在本實施例中,智能電視接收應用的權限申請請求,根據所述權限申請請求從預設的權限管理資源池中為所述應用分配一個權限ID;接收所述應用的信源切換請求,所述信源切換請求攜帶分配的所述權限ID;判斷所述信源切換請求中的所述權限ID當前是否具備信源切換權限;若是,則執行所述應用的信源切換,并限制所述權限管理資源池中除所述權限ID之外的所有ID的信源切換權限。本實施例通過為信源切換提供一種權限控制機制,當某一應用請求切換信源時,必須通過權限申請才可以完成,當某一應用獲取執行權限后,其他應用就失去了執行權限,從而保證了始終只有一個應用有執行權限,從而解決了多個應用相互切換信源時導致的信源切換錯亂的技術問題。
進一步地,參照圖2,圖2為本發明智能電視信源切換方法第二實施例的流程示意圖。基于上述圖1所示的實施例,所述步驟S10之前,還可以包括:
步驟S50,設置權限管理資源池,所述權限管理資源池用于存儲若干ID和每個ID當前所處的狀態。
為滿足多應用的權限控制需求,智能電視可以預先設置一個權限管理資源池,用來存放所有權限申請控制信息。參照圖3,圖3為本發明權限資源管理池的設計場景示意圖,權限資源管理池id_pool中存儲了若干ID和每個ID當前所處的狀態,如圖中id_1/status_1,id_2/status_2,…,id_n/status_n,…。同時參照圖4,圖4為本發明對應用進行權限控制的設計場景示意圖。Control_Client(權限控制)包含id/status兩個變量,分別用來記錄id以及id對應的狀態,其中id為整形變量(int(1,2,…,n)),狀態status又分為Request/Active/Release三種。
在設置好權限管理資源池后,可將權限管理資源池中的變量進行初始化處理。具體地,可首先將各id初始化為非法值(如-1),status狀態初始化為EN_CONTROL_CLIENT_RELEASE。當有應用調用request時,系統會從id_pool中分配一個id給應用,同時修改此id的狀態status為EN_CONTROL_CLIENT_REQUEST。
進一步地,所述步驟S30可以包括:
步驟S31,判斷當前所述權限資源存儲池中是否存在所述權限ID;
步驟S32,若當前所述權限資源存儲池中存在所述權限ID,則判斷所述權限ID當前是否處于預設狀態;
步驟S33,若所述權限ID當前處于預設狀態,則判定所述權限ID當前具備信源切換權限。
由于在權限資源存儲池在分配給應用一個權限ID后,該權限資源存儲池中的變量可能由于用戶的其他操作發生更改,比如增加或刪除id變量或者id變量的狀態發生改變,因此,智能電視需要首先判斷當前權限資源存儲池中是否存在應用的權限ID,若存在,則再判斷所述權限ID當前是否處于預設狀態,比如預設狀態可以為EN_CONTROL_CLIENT_REQUEST或EN_CONTROL_CLIENT_ACTIVE,若所述權限ID當前的狀態為這兩種狀態中的其中一種,則判定所述權限ID當前具備信源切換權限;反之,若權限資源存儲池當前不存在所述權限ID或所述權限ID當前的狀態為EN_CONTROL_CLIENT_RELEASE,則判定所述權限ID當前不具備信源切換權限。之后,智能電視將權限資源存儲池中其他id及其狀態更新為初始值,以保證當前只有唯一一個id具備信源切換權限,并執行對應應用的信源切換。
本實施例中,通過設置權限資源存儲池來記錄各id及其狀態,能夠滿足多應用的權限控制需求,同時通過判斷信源切換請求中的權限ID當前是否具備信源切換權限,可以對應用的權限ID進行進一步確認,保證只有在權限ID當前具備信源切換權限的條件下再執行信源切換,增強了信源切換的準確性。
進一步地,參照圖5,圖5為本發明智能電視信源切換方法第三實施例的流程示意圖。基于上述的實施例,所述步驟S40之前,還可以包括:
步驟S60,判斷所述權限ID是否與預設的全局變量中的ID相同,所述全局變量用于存儲當前具備信源切換權限的ID;
若所述權限ID與預設的全局變量中的ID相同,則執行步驟S40:執行所述應用的信源切換,并限制所述權限管理資源池中除所述權限ID之外的所有ID的信源切換權限。
在本實施例中,智能電視除了設置權限控制變量id和status外,還設置了一個全局變量,記為Active_id(初始化為-1),用于存儲當前具備信源切換權限的ID。
參照圖6,圖6為本發明判斷應用是否具備執行信源切換權限的流程示意圖。在一實施例中,在初始狀態下,權限資源資源池中id_A/id_B…/id_X=-1,某一時刻應用A調用request時,系統會從id_pool中分配一個整形id_A給應用,同時修改id_A的status為EN_CONTROL_CLIENT_REQUEST,之后,當應用A調用切信源接口(setinputsource())并發出信源切換請求時,系統會根據id_A在id_pool中查找此id是否存在,并且其狀態status是否為EN_CONTROL_CLIENT_REQUEST或EN_CONTROL_CLIENT_ACTIVE,若存在且status正確,則將id_A的status修改為EN_CONTROL_CLIENT_ACTIVE,并將全局變量Active_id更新為id_A,同時也會將id_pool中其它id及status更新為初始值,而之后Active_id的值可能會由于其他應用的搶占而發生變化,因而在執行切信源的動作之前智能電視需要進一步判斷id_A和Active_id是否相同,若相同則執行切信源的動作,若不同或是id_pool中不存在id_A亦或是id_A的status錯誤,則均返回無權限,不進行應用A的信源切換。
參照圖7,圖7為本發明判斷應用是否具備執行信源切換權限的另一流程示意圖。在另一實施例中,某一時刻應用A具有系統分配的id_A,此時應用A若調用release,同樣地,系統會根據id_A在id_pool中查找此id是否存在,并且其狀態status是否為EN_CONTROL_CLIENT_REQUEST或EN_CONTROL_CLIENT_ACTIVE,若存在且status正確,則再判斷id_A和Active_id是否相同,若相同就將Active_id更新為初始值(-1),不一致則只將id_A及其status更新為初始值。
本實施例通過設置一個全局變量,能夠實時記錄當前具有信源切換權限的id值,通過對應用的權限ID進行進一步確認,保證了只有在權限ID當前具備信源切換權限且與全局變量相等時才執行信源切換,進一步增強了信源切換的準確性。
進一步地,基于上述的實施例,本發明智能電視信源切換方法中應用的信源切換請求包括搶占式信源切換請求和非搶占式信源切換請求。
參照圖8,圖8為本發明應用調用不同切信源接口進行權限申請的流程示意圖。對應用來說切信源接口可以分為兩種:搶占式切信源接口和非搶占式切信源接口,其中,搶占式切信源接口是指調用返回無權限時,會自動重新申請權限并執行切信源動作,非搶占式切信源接口是指調用返回無權限時,不會自動重新申請權限。
本發明可以預先設置應用在執行OnResume(重新激活)時調用搶占式的切信源接口,在執行OnRelease(釋放)時調用非搶占式的切信源接口。
以應用A和應用B進行舉例說明。參照圖9,圖9為本發明應用A和應用B信源切換的應用場景示意圖。在某一時刻Active A執行OnResume切信源,之后再執行OnRelease切信源,而在執行OnRelease切信源之前出現了Active B的OnResume切信源的請求,若采用現有技術,則系統在執行Active B的OnResume切信源后會馬上將Active B的切信源OnRelease,這將導致最終信源切換錯誤。通過本發明的權限控制機制,某一時刻Active B執行OnResume調用搶占式的切信源接口,會自動申請權限,切換信源的執行權限就被Active B取得,之后Active A執行OnRelease再調用非搶占式的切信源接口時會因為沒有權限而不被執行,這樣就可以有效解決因系統生命周期錯亂導致的信源切換錯誤問題,同時也可以兼容正常的信源切換需求。
本發明還提供一種智能電視信源切換裝置。
參照圖10,圖10為本發明智能電視信源切換裝置第一實施例的功能模塊示意圖。所述裝置包括:
分配模塊10,用于接收應用的權限申請請求,根據所述權限申請請求從預設的權限管理資源池中為所述應用分配一個權限ID;
在智能電視系統安裝了多個應用的情形下,智能電視會根據不同應用的需要來對當前播放信源進行切換,比如智能電視當前處于數字電視信源播放模式,用戶通過某個網絡視頻應用點播網絡視頻,則智能電視需要切換至HDMI多媒體信源播放模式以播放網絡視頻。具體地,智能電視可以接收用戶的遙控指令來切換信源,也可以預先設置信源切換規則,比如在預設應用啟動后自動切換至該應用對應的信源,具體實施中可進行靈活設置。
與現有技術不同之處在于,本發明執行信源切換的應用必須具備向系統申請的權限,并且只有當申請的權限符合預設條件時,該應用才能執行信源切換。具體地,應用可以在某一時刻基于用戶觸發的權限申請指令向系統進行權限申請,也可以在啟動后自動向系統進行權限申請,也可以在應用程序運行的某一時刻自動向系統進行權限申請,總之,本發明對應用進行權限申請的具體場景和時刻不作限定。
在應用申請權限時,分配模塊10接收該應用的權限申請請求,并從預設的權限管理資源池中為該應用分配一個權限ID(此ID是唯一存在的),其中,權限資源管理池中存儲了若干ID,且每個ID都有其對應的狀態。需要說明的是,分配模塊10分配ID時可以是隨機分配,也可以是順序分配,且為保證ID與應用之間的一一對應關系,一個ID只能分配給一個應用。
接收模塊20,用于接收所述應用的信源切換請求,所述信源切換請求攜帶分配的所述權限ID;
在應用獲取到系統分配的權限ID后,接收模塊20接收某一時刻該應用發起信源切換請求,該信源切換請求攜帶之前分配給應用的權限ID,此時智能電視可根據該權限ID判斷信源切換請求是由哪一個應用發起的。
第一判斷模塊30,用于判斷所述信源切換請求中的所述權限ID當前是否具備信源切換權限;
具體地,第一判斷模塊30可查找權限資源存儲池,進而獲取權限資源存儲池中該權限ID當前的狀態,通過該權限ID當前的狀態來判斷該權限ID當前是否具備信源切換權限。比如,對于一個ID其狀態可分為為Request(請求)、Active(活動)、Release(釋放)三種,若該權限ID當前為Release狀態,則可判定其不具備信源切換權限。
執行模塊40,用于若所述信源切換請求中的所述權限ID當前具備信源切換權限,則執行所述應用的信源切換,并限制所述權限管理資源池中除所述權限ID之外的所有ID的信源切換權限。
若所述權限ID當前具備信源切換權限,則執行模塊40執行應用的信源切換,同時限制權限管理資源池中其他ID的信源切換權限。比如,當某一ID有權限切換信源時,執行模塊40會將權限管理資源池中其他ID的權限都取消,且其他ID對應的狀態也會變為Release,從而保證了當前只有唯一一個ID具有執行權限。
若所述權限ID當前不具備信源切換權限,則執行模塊40將不會執行信源切換,此時執行模塊40可以向應用返回無權限信息。
在本實施例中,分配模塊10接收應用的權限申請請求,根據所述權限申請請求從預設的權限管理資源池中為所述應用分配一個權限ID;接收模塊20接收所述應用的信源切換請求,所述信源切換請求攜帶分配的所述權限ID;第一判斷模塊30判斷所述信源切換請求中的所述權限ID當前是否具備信源切換權限;若是,則執行模塊40執行所述應用的信源切換,并限制所述權限管理資源池中除所述權限ID之外的所有ID的信源切換權限。本實施例通過為信源切換提供一種權限控制機制,當某一應用請求切換信源時,必須通過權限申請才可以完成,當某一應用獲取執行權限后,其他應用就失去了執行權限,從而保證了始終只有一個應用有執行權限,從而解決了多個應用相互切換信源時導致的信源切換錯亂的技術問題。
進一步地,參照圖11,圖11為本發明智能電視信源切換裝置第二實施例的功能模塊示意圖。基于上述圖10所示的實施例,所述裝置還可以包括:
設置模塊50,用于設置權限管理資源池,所述權限管理資源池用于存儲若干ID和每個ID當前所處的狀態。
為滿足多應用的權限控制需求,設置模塊50可以預先設置一個權限管理資源池,用來存放所有權限申請控制信息。參照圖3,圖3為本發明權限資源管理池的設計場景示意圖,權限資源管理池id_pool中存儲了若干ID和每個ID當前所處的狀態,如圖中id_1/status_1,id_2/status_2,…,id_n/status_n,…。同時參照圖4,圖4為本發明對應用進行權限控制的設計場景示意圖。Control_Client(權限控制)包含id/status兩個變量,分別用來記錄id以及id對應的狀態,其中id為整形變量(int(1,2,…,n)),狀態status又分為Request/Active/Release三種。
在設置好權限管理資源池后,可將權限管理資源池中的變量進行初始化處理。具體地,可首先將各id初始化為非法值(如-1),status狀態初始化為EN_CONTROL_CLIENT_RELEASE。當有應用調用request時,系統會從id_pool中分配一個id給應用,同時修改此id的狀態status為EN_CONTROL_CLIENT_REQUEST。
進一步地,所述第一判斷模塊30還用于:判斷當前所述權限資源存儲池中是否存在所述權限ID;若是,則判斷所述權限ID當前是否處于預設狀態;若是,則判定所述權限ID當前具備信源切換權限。
由于在權限資源存儲池在分配給應用一個權限ID后,該權限資源存儲池中的變量可能由于用戶的其他操作發生更改,比如增加或刪除id變量或者id變量的狀態發生改變,因此,第一判斷模塊30需要首先判斷當前權限資源存儲池中是否存在應用的權限ID,若存在,則再判斷所述權限ID當前是否處于預設狀態,比如預設狀態可以為EN_CONTROL_CLIENT_REQUEST或EN_CONTROL_CLIENT_ACTIVE,若所述權限ID當前的狀態為這兩種狀態中的其中一種,則判定所述權限ID當前具備信源切換權限;反之,若權限資源存儲池當前不存在所述權限ID或所述權限ID當前的狀態為EN_CONTROL_CLIENT_RELEASE,則第一判斷模塊30判定所述權限ID當前不具備信源切換權限。之后,執行模塊40將權限資源存儲池中其他id及其狀態更新為初始值,以保證當前只有唯一一個id具備信源切換權限,并執行對應應用的信源切換。
本實施例中,通過設置權限資源存儲池來記錄各id及其狀態,能夠滿足多應用的權限控制需求,同時通過判斷信源切換請求中的權限ID當前是否具備信源切換權限,可以對應用的權限ID進行進一步確認,保證只有在權限ID當前具備信源切換權限的條件下再執行信源切換,增強了信源切換的準確性。
進一步地,參照圖12,圖12為本發明智能電視信源切換裝置第三實施例的功能模塊示意圖。基于上述的實施例,所述裝置還可以包括:
第二判斷模塊60,用于判斷所述權限ID是否與預設的全局變量中的ID相同,所述全局變量用于存儲當前具備信源切換權限的ID;
所述執行模塊40還用于在所述權限ID與預設的全局變量中的ID相同時,執行所述應用的信源切換,并限制所述權限管理資源池中除所述權限ID之外的所有ID的信源切換權限。
在本實施例中,智能電視除了設置權限控制變量id和status外,還設置了一個全局變量,記為Active_id(初始化為-1),用于存儲當前具備信源切換權限的ID。
參照圖6,圖6為本發明判斷應用是否具備執行信源切換權限的流程示意圖。在一實施例中,在初始狀態下,權限資源資源池中id_A/id_B…/id_X=-1,某一時刻應用A調用request時,分配模塊10會從id_pool中分配一個整形id_A給應用,同時修改id_A的status為EN_CONTROL_CLIENT_REQUEST,之后,應用A調用切信源接口(setinputsource())并發出信源切換請求,第一判斷模塊30會根據id_A在id_pool中查找此id是否存在,并且其狀態status是否為EN_CONTROL_CLIENT_REQUEST或EN_CONTROL_CLIENT_ACTIVE,若存在且status正確,則將id_A的status修改為EN_CONTROL_CLIENT_ACTIVE,并將全局變量Active_id更新為id_A,同時也會將id_pool中其它id及status更新為初始值,而之后Active_id的值可能會由于其他應用的搶占而發生變化,因而在執行切信源的動作之前第二判斷模塊60需要進一步判斷id_A和Active_id是否相同,若相同則執行模塊40執行切信源的動作,若不同或是id_pool中不存在id_A亦或是id_A的status錯誤,則均返回無權限,不進行應用A的信源切換。
參照圖7,圖7為本發明判斷應用是否具備執行信源切換權限的另一流程示意圖。在另一實施例中,某一時刻應用A具有系統分配的id_A,此時應用A若調用release,同樣地,第一判斷模塊30會根據id_A在id_pool中查找此id是否存在,并且其狀態status是否為EN_CONTROL_CLIENT_REQUEST或EN_CONTROL_CLIENT_ACTIVE,若存在且status正確,則第二判斷模塊60再判斷id_A和Active_id是否相同,若相同就將Active_id更新為初始值(-1),不一致則只將id_A及其status更新為初始值。
本實施例通過設置一個全局變量,能夠實時記錄當前具有信源切換權限的id值,通過對應用的權限ID進行進一步確認,保證了只有在權限ID當前具備信源切換權限且與全局變量相等時才執行信源切換,進一步增強了信源切換的準確性。
進一步地,基于上述的實施例,本發明智能電視信源切換裝置中應用的信源切換請求包括搶占式信源切換請求和非搶占式信源切換請求。
參照圖8,圖8為本發明應用調用不同切信源接口進行權限申請的流程示意圖。對應用來說切信源接口可以分為兩種:搶占式切信源接口和非搶占式切信源接口,其中,搶占式切信源接口是指調用返回無權限時,會自動重新申請權限并執行切信源動作,非搶占式切信源接口是指調用返回無權限時,不會自動重新申請權限。
本發明可以預先設置應用在執行OnResume(重新激活)時調用搶占式的切信源接口,在執行OnRelease(釋放)時調用非搶占式的切信源接口。
以應用A和應用B進行舉例說明。參照圖8,圖8為本發明應用A和應用B信源切換的應用場景示意圖。在某一時刻Active A執行OnResume切信源,之后再執行OnRelease切信源,而在執行OnRelease切信源之前出現了Active B的OnResume切信源的請求,若采用現有技術,則系統在執行Active B的OnResume切信源后會馬上將Active B的切信源OnRelease,這將導致最終信源切換錯誤。通過本發明的權限控制機制,某一時刻Active B執行OnResume調用搶占式的切信源接口,會自動申請權限,切換信源的執行權限就被Active B取得,之后Active A執行OnRelease再調用非搶占式的切信源接口時會因為沒有權限而不被執行,這樣就可以有效解決因系統生命周期錯亂導致的信源切換錯誤問題,同時也可以兼容正常的信源切換需求。
以上僅為本發明的優選實施例,并非因此限制本發明的專利范圍,凡是利用本發明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發明的專利保護范圍內。