一種信息交互的方法及裝置的制造方法
【專利摘要】本發明提供了一種信息交互的方法及裝置,其中,該方法包括:通過Android系統的HAL層注冊第一監聽器;通過所述Android系統的APP層注冊第二監聽器;通過所述第一監聽器和所述第二監聽器完成所述HAL層與所述APP層之間的信息交互。通過本發明解決了Android系統的APP層需要通過framework層才能實現與HAL層之間的數據傳輸,導致不便于傳輸大數據的問題,進而通過自定義結構數據的雙向傳輸,實現了APP層和HAL層之間的直接通信,簡化了該兩層之間的通信步驟,提高了通信效率。
【專利說明】
_種信息交互的方法及裝置
技術領域
[0001]本發明涉及互聯網技術領域,具體地涉及一種信息交互的方法及裝置。【背景技術】
[0002]隨著科學技術的發展,智能手機已融入人們的生活,成為大家不可或缺的伴侶,它不僅扮演著通訊角色,同時還是很好的娛樂分享設備。[〇〇〇3] 現有技術中,由于Android系統的APP層是由java語言編寫的,framework層和HAL 層是用C#語言編寫,所以APP層與framework層之間的進程的通信方式需要采用谷歌的 binder技術。然而binder技術已有的接口 setparameter、onErorr不能對大數據塊進行傳輸,因此,若想傳輸大數據塊,需要添加新的接口。
[0004]但是添加新的接口會帶來如下的問題:1、復雜的接口的編譯問題;2、binder由于版本問題或升級問題之后,所有添加的新的接口不復存在,在版本升級之后需要重新添加一次接口,費時費力。
[0005]針對現有技術中,Android系統的APP層需要通過framework層才能實現與HAL層之間的數據傳輸,導致不便于傳輸大數據的問題,還未提出有效的解決方案。
【發明內容】
[0006]本發明提供了一種信息交互的方法及裝置,以至少解決現有技術中安卓系統的 APP層需要通過framework層才能實現與HAL層之間的數據傳輸,導致不便于傳輸大數據的問題。
[0007]根據本發明的一個方面,提供了一種信息交互的方法,通過Android系統的HAL層注冊第一監聽器;通過所述Android系統的APP層注冊第二監聽器;通過所述第一監聽器和所述第二監聽器完成所述HAL層與所述APP層之間的信息交互。
[0008]可選地,通過Android系統的HAL層注冊第一監聽器包括:通過所述HAL層創建通訊服務端;將所述第一監聽器注冊至所述通訊服務端;或者,通過所述Android系統的APP層注冊第二監聽器包括:通過所述APP層創建通訊客戶端;將所述第二監聽器注冊至所述通訊客戶端。
[0009]可選地,通過所述第一監聽器和所述第二監聽器完成所述HAL層與所述APP層之間的信息交互之前包括:建立所述通訊服務端和所述通訊客戶端之間的連接。
[0010]可選地,建立所述通訊服務端和所述通訊客戶端之間的連接包括:通過所述通訊客戶端將所述通訊客戶端的句柄發送至所述通訊服務端;通過所述通訊服務端將所述句柄注冊至預定的通訊客戶端句柄列表中,并生成第一反饋信息;通過所述通訊客戶端從所述通訊服務端接收到所述第一反饋信息,建立所述通訊服務端和所述通訊客戶端之間的連接。
[0011]可選地,通過所述第一監聽器和所述第二監聽器完成所述HAL層與所述APP層之間的信息交互之后包括:通過所述通訊客戶端發送端口消息至所述通訊服務端;依據所述端口消息,通過所述通訊服務端將所述句柄在所述通訊客戶端句柄列表中刪除,并生成第二反饋信息;通過所述通訊客戶端從所述通訊服務端接收到所述第二反饋信息,斷開所述通訊服務端和所述通訊客戶端之間的連接。
[0012]根據本發明的另一個方面,還提供了一種信息交互的裝置,包括:第一注冊模塊, 用于通過Android系統的HAL層注冊第一監聽器;第二注冊模塊,用于通過所述Android系統的APP層注冊第二監聽器;信息交互模塊,用于通過所述第一監聽器和所述第二監聽器完成所述HAL層與所述APP層之間的信息交互。[〇〇13] 可選地,所述第一注冊模塊包括:第一創建單元,用于通過所述HAL層創建通訊服務端;第一注冊單元,用于將所述第一監聽器注冊至所述通訊服務端;或者,第二注冊模塊包括:第二創建單元,用于通過所述APP層創建通訊客戶端;第二注冊單元,用于將所述第二監聽器注冊至所述通訊客戶端。
[0014]可選地,所述裝置還包括:建立模塊,用于通過所述第一監聽器和所述第二監聽器完成所述HAL層與所述APP層之間的信息交互之前,建立所述通訊服務端和所述通訊客戶端之間的連接。
[0015]可選地,所述建立模塊包括:發送單元,用于通過所述通訊客戶端將所述通訊客戶端的句柄發送至所述通訊服務端;注冊單元,用于通過所述通訊服務端將所述句柄注冊至預定的通訊客戶端句柄列表中,并生成第一反饋信息;建立單元,用于通過所述通訊客戶端從所述通訊服務端接收到所述第一反饋信息,建立所述通訊服務端和所述通訊客戶端之間的連接。
[0016]可選地,所述裝置還包括:發送模塊,用于通過所述第一監聽器和所述第二監聽器完成所述HAL層與所述APP層之間的信息交互之后,通過所述通訊客戶端發送端口消息至所述通訊服務端;刪除模塊,用于依據所述端口消息,通過所述通訊服務端將所述句柄在所述通訊客戶端句柄列表中刪除,并生成第二反饋信息;斷開模塊,用于通過所述通訊客戶端從所述通訊服務端接收到所述第二反饋信息,斷開所述通訊服務端和所述通訊客戶端之間的連接。[0〇17] 通過本發明,通過Android系統的HAL層注冊第一監聽器;通過所述Android系統的 APP層注冊第二監聽器;通過所述第一監聽器和所述第二監聽器完成所述HAL層與所述APP 層之間的信息交互,解決了 Android系統的APP層需要通過framework層才能實現與HAL層之間的數據傳輸,導致不便于傳輸大數據的問題,進而通過自定義結構數據的雙向傳輸,實現了 APP層和HAL層之間的直接通信,簡化了該兩層之間的通信步驟,提高了通信效率。【附圖說明】
[0018]為了更清楚地說明本發明【具體實施方式】或現有技術中的技術方案,下面將對【具體實施方式】或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施方式,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0019]圖1是根據本發明實施例的信息交互的方法的流程圖;
[0020]圖2是根據本發明實施例的APP層和HAL層進行通訊的示意圖;[〇〇21]圖3是根據本發明實施例的信息交互的裝置的一個結構框圖;
[0022]圖4是根據本發明實施例的第二注冊模塊的一個結構框圖;[〇〇23]圖5是根據本發明實施例的第二注冊模塊的另一個結構框圖;
[0024]圖6是根據本發明實施例的信息交互的裝置的另一個結構框圖;
[0025]圖7是根據本發明實施例的建立模塊的結構框圖;
[0026]圖8是根據本發明實施例的信息交互的裝置的再一個結構框圖。【具體實施方式】
[0027]下面將結合附圖對本發明的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0028]在本發明的描述中,需要說明的是,術語“第一”、“第二”、“第三”僅用于描述目的, 而不能理解為指示或暗示相對重要性。[〇〇29]此外,下面所描述的本發明不同實施方式中所涉及的技術特征只要彼此之間未構成沖突就可以相互結合。
[0030] 實施例1[〇〇31]在本實施例中提供了一種信息交互的方法,圖1是根據本發明實施例的信息交互的方法的流程圖,如圖1所示,該流程包括如下步驟:[〇〇32] 步驟S11,通過Android系統的HAL層注冊第一監聽器;[〇〇33] 步驟S12,通過Android系統的APP層注冊第二監聽器;[〇〇34] 步驟S13,通過第一監聽器和第二監聽器完成HAL層與APP層之間的信息交互。[0〇35] 通過上述步驟,通過Android系統的HAL層注冊第一監聽器;通過所述Android系統的APP層注冊第二監聽器;通過所述第一監聽器和所述第二監聽器完成所述HAL層與所述 APP層之間的信息交互,相比于現有技術中,APP層只能通過framework層與HAL層進行通信, 解決了Android系統的APP層需要通過framework層才能實現與HAL層之間的數據傳輸,導致不便于傳輸大數據的問題,進而通過自定義結構數據的雙向傳輸,實現了 APP層和HAL層之間的直接通信,簡化了該兩層之間的通信步驟,提高了通信效率。[0〇36] frameworks層,是谷歌發布的軟件架構,基于其發布的共享內存通信方案,定義和發布了對APP層和HAL層的固定接口,通過上述步驟基于谷歌發布的共享內存通信方案,實現簡單跨進程通信功能,直接聯通APP層和HAL層聯通后,可以隨意定義自己需要的接口進行快速通訊。[〇〇37] 上述步驟S11涉及到通過Android系統的HAL層注冊第一監聽器,在一個可選實施例中,通過HAL層創建通訊服務端,將第一監聽器注冊至通訊服務端,例如在一個具體的可選實施例中,HAL層創建通訊服務端,注冊其句柄到系統服務,注冊監聽器到通訊服務端中。 在另一個可選實施例中,通過APP層創建通訊客戶端,將第二監聽器注冊至通訊客戶端。其中,通訊服務端和通訊客戶端的作用是跨進程通訊。這兩者分別編譯在兩個進程的程序中, 分別實現注冊或者搜索同一個系統服務名。搜索成功后的通訊客戶端就可取得通訊服務器實例句柄開始通訊了。[〇〇38] 在一個可選實施例中,通過第一監聽器和第二監聽器完成HAL層與APP層之間的信息交互之前,建立通訊服務端和通訊客戶端之間的連接,進而可以通過第一監聽器和第二監聽器完成HAL層與APP層之間的信息交互。
[0039] 可以通過多種方式建立通訊服務端和通訊客戶端之間的連接,下面對此進行舉例說明。在一個可選實施例中,通訊客戶端問詢系統服務,嘗試取得服務端實例句柄,通過通訊客戶端將通訊客戶端的句柄發送至通訊服務端,通過通訊服務端將該句柄注冊至預定的通訊客戶端句柄列表中,并生成第一反饋信息,通過通訊客戶端從通訊服務端接收到第一反饋信息,建立通訊服務端和通訊客戶端之間的連接。[0〇4〇] 在HAL層與APP層之間的通訊過程中,在一個可選實施例中,APP層發送消息給通訊客戶端,通訊客戶端發送該消息給通訊服務端,通訊服務端收到請求后,查詢其句柄在客戶列表內后,調用HAL層注冊過的監聽器,進行消息處理,HAL層的監聽器消息處理完成,返回處理結果,通訊服務端將此結果轉發給通訊客戶端,通訊客戶端收到結果消息,調用APP層注冊過的監聽器,APP層監聽器得到結果信息。[〇〇41] 為了節省資源,通過第一監聽器和第二監聽器完成HAL層與APP層之間的信息交互之后,通過通訊客戶端發送端口消息至通訊服務端,依據端口消息,通過通訊服務端將該句柄在該通訊客戶端句柄列表中刪除,并生成第二反饋信息,通過通訊客戶端從通訊服務端接收到第二反饋信息,斷開通訊服務端和通訊客戶端之間的連接,從而節省了資源。[〇〇42]圖2是根據本發明實施例的APP層和HAL層進行通訊的示意圖,下面結合圖2進行說明。[0〇43 ]1 ? APP層端:倉丨健java類,聲明nat i ve調用及回調方法;[0〇44]2.HAL層:倉丨」建C Jni文件,實現1中的java native方法;
[0045] 3.HAL層:創建基于Android binder技術的Server/Client兩個C++類(base on BBinder),實現跨進程通信(通過Android的IServiceManager注冊機制);[〇〇46]4.HAL層:步驟2中的C Jni文件方法中,創建步驟3中Client類的實例,并調用其連接請求和通訊方法;[〇〇47]5.HAL層:在hal實例創建時,同步創建步驟3中Server端實例,并注冊監聽器到Server端實例中;[0〇48]6.HAL層:當步驟3中Server端,監聽到Client端的連接請求則建立連接;監聽到Client端通訊消息后,調用相應監聽器,實現與HAL層實例的相互通訊;
[0049]7.將步驟2中的C Jni文件和步驟3中的Client類,單獨編譯為動態庫,推送到系統 lib文件夾中,這樣多個應用,不同的HAL層均可創建和調用它的類實例,實現了多端通訊。
[0050]實施例2[〇〇51]在本實施例中還提供了一種信息交互的裝置,該裝置用于實現上述實施例及優選實施方式,已經進行過說明的不再贅述。如以下所使用的,術語“模塊”可以實現預定功能的軟件和/或硬件的組合。盡管以下實施例所描述的裝置較佳地以軟件來實現,但是硬件,或者軟件和硬件的組合的實現也是可能并被構想的。[〇〇52]圖3是根據本發明實施例的信息交互的裝置的一個結構框圖。[〇〇53]如圖3所示,該信息交互的裝置包括:第一注冊模塊31、第二注冊模塊32和信息交互模塊33。[〇〇54] 第一注冊模塊31,用于通過Android系統的HAL層注冊第一監聽器;第二注冊模塊 32,用于通過該Android系統的APP層注冊第二監聽器;信息交互模塊33,用于通過該第一監聽器和該第二監聽器完成該HAL層與該APP層之間的信息交互。[〇〇55] 通過上述裝置,第一注冊模塊31通過Android系統的HAL層注冊第一監聽器;第二注冊模塊32通過所述Android系統的APP層注冊第二監聽器;信息交互模塊33通過所述第一監聽器和所述第二監聽器完成所述HAL層與所述APP層之間的信息交互,相比于現有技術中,APP層只能通過framework層與HAL層進行通信,解決了Android系統的APP層需要通過 framework層才能實現與HAL層之間的數據傳輸,導致不便于傳輸大數據的問題,進而實現了 APP層和HAL層之間的直接通信,簡化了該兩層之間的通信步驟,提高了通信效率。
[0056]圖4是根據本發明實施例的第二注冊模塊的一個結構框圖。[〇〇57] 如圖4所示,第一注冊模塊31包括:第一創建單元311,用于通過HAL層創建通訊服務端;第一注冊單元312,用于將第一監聽器注冊至通訊服務端。[〇〇58]圖5是根據本發明實施例的第二注冊模塊的另一個結構框圖。
[0059]如圖5所示,第二注冊模塊32包括:第二創建單元321,用于通過APP層創建通訊客戶端;第二注冊單元322,用于將第二監聽器注冊至通訊客戶端。
[0060]圖6是根據本發明實施例的信息交互的裝置的另一個結構框圖。
[0061]如圖6所示,該信息交互的裝置還包括:建立模塊61,用于通過第一監聽器和第二監聽器完成該HAL層與該APP層之間的信息交互之前,建立通訊服務端和通訊客戶端之間的連接。
[0062]圖7是根據本發明實施例的建立模塊的結構框圖。
[0063]如圖7所示,建立模塊61包括:發送單元611,用于通過通訊客戶端將通訊客戶端的句柄發送至該通訊服務端;注冊單元612,用于通過通訊服務端將該句柄注冊至預定的通訊客戶端句柄列表中,并生成第一反饋信息;建立單元613,用于通過通訊客戶端從通訊服務端接收到第一反饋信息,建立通訊服務端和通訊客戶端之間的連接。
[0064]圖8是根據本發明實施例的信息交互的裝置的再一個結構框圖。[〇〇65]如圖8所示,信息交互的裝置還包括:發送模塊81,用于通過第一監聽器和第二監聽器完成該HAL層與該APP層之間的信息交互之后,通過通訊客戶端發送端口消息至該通訊服務端;刪除模塊82,用于依據端口消息,通過通訊服務端將該句柄在該通訊客戶端句柄列表中刪除,并生成第二反饋信息;斷開模塊83,用于通過通訊客戶端從通訊服務端接收到該第二反饋信息,斷開通訊服務端和通訊客戶端之間的連接。
[0066]上述各個模塊的更進一步的功能描述與上述對應實施例相同,在此不再贅述。 [〇〇67]綜上所述,通過本發明提供的一種信息交互的方法及裝置,通過Android系統的 HAL層注冊第一監聽器;通過所述Android系統的APP層注冊第二監聽器;通過所述第一監聽器和所述第二監聽器完成所述HAL層與所述APP層之間的信息交互,解決了 Android系統的 APP層需要通過framework層才能實現與HAL層之間的數據傳輸,導致不便于傳輸大數據的問題,進而實現了 APP層和HAL層之間的直接通信,簡化了該兩層之間的通信步驟,提高了通信效率。
[0068]本領域內的技術人員應明白,本發明的實施例可提供為方法、系統、或計算機程序產品。因此,本發明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。
[0069]本發明是參照根據本發明實施例的方法、設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0070]這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0071]這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0072]顯然,上述實施例僅僅是為清楚地說明所作的舉例,而并非對實施方式的限定。對于所屬領域的普通技術人員來說,在上述說明的基礎上還可以做出其它不同形式的變化或變動。這里無需也無法對所有的實施方式予以窮舉。而由此所引伸出的顯而易見的變化或變動仍處于本發明創造的保護范圍之中。
【主權項】
1.一種信息交互的方法,包括:通過Android系統的HAL層注冊第一監聽器;通過所述Android系統的APP層注冊第二監聽器;通過所述第一監聽器和所述第二監聽器完成所述HAL層與所述APP層之間的信息交互。2.根據權利要求1所述的方法,通過Android系統的HAL層注冊第一監聽器包括:通過所 述HAL層創建通訊服務端;將所述第一監聽器注冊至所述通訊服務端;或者,通過所述Android系統的APP層注冊第二監聽器包括:通過所述APP層創建通訊客戶端; 將所述第二監聽器注冊至所述通訊客戶端。3.根據權利要求2所述的方法,通過所述第一監聽器和所述第二監聽器完成所述HAL層 與所述APP層之間的信息交互之前包括:建立所述通訊服務端和所述通訊客戶端之間的連接。4.根據權利要求3所述的方法,建立所述通訊服務端和所述通訊客戶端之間的連接包 括:通過所述通訊客戶端將所述通訊客戶端的句柄發送至所述通訊服務端;通過所述通訊服務端將所述句柄注冊至預定的通訊客戶端句柄列表中,并生成第一反 饋信息;通過所述通訊客戶端從所述通訊服務端接收到所述第一反饋信息,建立所述通訊服務 端和所述通訊客戶端之間的連接。5.根據權利要求4所述的方法,通過所述第一監聽器和所述第二監聽器完成所述HAL層 與所述APP層之間的信息交互之后包括:通過所述通訊客戶端發送端口消息至所述通訊服務端;依據所述端口消息,通過所述通訊服務端將所述句柄在所述通訊客戶端句柄列表中刪 除,并生成第二反饋信息;通過所述通訊客戶端從所述通訊服務端接收到所述第二反饋信息,斷開所述通訊服務 端和所述通訊客戶端之間的連接。6.—種信息交互的裝置,包括:第一注冊模塊,用于通過Android系統的HAL層注冊第一監聽器;第二注冊模塊,用于通過所述Android系統的APP層注冊第二監聽器;信息交互模塊,用于通過所述第一監聽器和所述第二監聽器完成所述HAL層與所述APP 層之間的信息交互。7.根據權利要求6所述的裝置,所述第一注冊模塊包括:第一創建單元,用于通過所述 HAL層創建通訊服務端;第一注冊單元,用于將所述第一監聽器注冊至所述通訊服務端;或 者,第二注冊模塊包括:第二創建單元,用于通過所述APP層創建通訊客戶端;第二注冊單 元,用于將所述第二監聽器注冊至所述通訊客戶端。8.根據權利要求7所述的裝置,所述裝置還包括:建立模塊,用于通過所述第一監聽器和所述第二監聽器完成所述HAL層與所述APP層之 間的信息交互之前,建立所述通訊服務端和所述通訊客戶端之間的連接。9.根據權利要求8所述的裝置,所述建立模塊包括:發送單元,用于通過所述通訊客戶端將所述通訊客戶端的句柄發送至所述通訊服務 端;注冊單元,用于通過所述通訊服務端將所述句柄注冊至預定的通訊客戶端句柄列表 中,并生成第一反饋信息;建立單元,用于通過所述通訊客戶端從所述通訊服務端接收到所述第一反饋信息,建 立所述通訊服務端和所述通訊客戶端之間的連接。10.根據權利要求5所述的裝置,所述裝置還包括:發送模塊,用于通過所述第一監聽器和所述第二監聽器完成所述HAL層與所述APP層之 間的信息交互之后,通過所述通訊客戶端發送端口消息至所述通訊服務端;刪除模塊,用于依據所述端口消息,通過所述通訊服務端將所述句柄在所述通訊客戶 端句柄列表中刪除,并生成第二反饋信息;斷開模塊,用于通過所述通訊客戶端從所述通訊服務端接收到所述第二反饋信息,斷 開所述通訊服務端和所述通訊客戶端之間的連接。
【文檔編號】H04L29/08GK106027365SQ201610282590
【公開日】2016年10月12日
【申請日】2016年4月29日
【發明人】索金鵬
【申請人】樂視控股(北京)有限公司, 樂視移動智能信息技術(北京)有限公司