新四季網

在Android手機上實現WinCE/Android混合API的方法

2023-05-28 11:22:01 1

專利名稱:在Android手機上實現WinCE/Android混合API的方法
技術領域:
本發明涉及一種Android手機領域,尤其是一種在Android手機上實現WinCE/ Android混合API的方法,其顯著的特點是使程式設計師在開發Android應用軟體時在程序中既 可以調用WinCE的功能,又可以調用Android本身的功能。
背景技術:
以手機為代表的智能化移動終端設備既是計算機技術的一個重要發展方向,又是 一個競爭十分激烈的市場。自從谷歌公司和開放手機聯盟推出Android作業系統和基於 Android的手機以來,很快就在世界手機市場上佔有了不小的份額,各種Android手機層出 不窮,由中國移動開發並推出的OPhone也是基於Android的,也是一種Android手機。所謂Android作業系統,實際上是對Linux作業系統的一種改編和擴充,它的內核 基本上就是Linux的內核,但是在用戶空間卻專門針對手機和移動終端設備的特點作了大 幅的改進和增強,這些改動大都與編程模式和圖形界面、即圖形化用戶界面(GUI)有關。另一種常用於手機的作業系統是微軟的WinCE和麗、即Windows Mobile,這是在 微軟的Windows作業系統上發展起來的。基於WinCE/WM的手機也在市場上佔不小的份額, 並且開發出了數量不小的WinCE/WM應用軟體。如果能把這些應用軟體拿到Android手機 上運行,對於提高Android手機的市場佔有率顯然是有利的。通過把開源軟體Wine移植到Android手機上,把本應由Windows提供的支撐 嫁接到Linux上,並對其加以擴充、使其支持WinCE/WM,可以讓WinCE/WM應用軟體直接 在Android手機上運行、實際上是在Android手機的Linux內核上運行。這樣,原來熟悉 WinCE/WM軟體開發的人就可以按原來的模式、在原來的開發環境中、使用原來的開發工具、 像開發WinCE/WM軟體一樣地開發Android軟體,而且開發出來的軟體既是WinCE/WM軟體 又可以在Android手機上運行,這對於開發者也是很有利的。可是,這樣開發出來的軟體實質上仍是純粹的WinCE/WM軟體,其基礎是由WinCE/ WM承諾提供的各項功能。事實上,沒有一種應用軟體能事無巨細完全由自己提供所有的功 能,都是建立在別的軟體如作業系統、基礎平臺、中間件等等所提供的更為基本的功能的基 礎上。反過來,凡是承諾為別的軟體提供某些功能的軟體,則要定義、即明確說明自己能提 供一些什麼樣的功能,以及怎樣調用這些功能。這樣的定義稱為「應用程式編程界面」、即 API。另一方面,軟體的功能是由「函數」實現和提供的,這樣的軟體既然要為別的軟體提供 某些功能,就必須提供一個實際上實現了這些功能的函數集合,所以API的另一個意思就 是指這樣的一個函數集合。可見,上述為WinCE/WM平臺開發的應用軟體都是基於WinCE/WM 的API。而「正宗」的Android軟體,則是基於Android自己的API。移植了 Wine以後,這 兩種應用軟體雖然都能在Android上運行,實際上卻是井水不犯河水、互不相干。從原理上 說,WinCE/WM的API與Android的API在功能方面應該是等價的對應物,但是實際上只能 是大體上如此,二者還是有些區別,所以即使是針對Android手機而開發的WinCE/WM應用, 也不能充分利用Android的優勢。因為這些功能是在Android框架的內部運行,而WinCE/WM軟體雖然能在Android手機的Linux內核上面運行,卻是在Android框架的外部。更重 要的是,Android是個開放的系統,不斷有許多新的基本功能被創造出來並增添到Android 的API中,可是在為WinCE/WM編寫的程序中就不能調用這些功能了。可以想像,要是能為WinCE/WM應用的開發者提供一個「混合API 」,使他們在程序 中既能如常調用由WinCE/WM的API所提供的功能,又能調用由Android提供的一些特殊或 新穎的功能,這些開發者們就可以為Android開發出更多更好的應用軟體。舉例言之,對於 來自Google的Android,地圖功能是它的一個強項,如果開發的是「正宗」的Android應用, 在程序中調用與地圖有關的功能是比較容易的。但是,如果開發的是WinCE/WM模式的應 用,儘管目的也是在Android手機上運行,卻無法調用這些功能。由此可見,提供一個混合 API,使WinCE/WM模式的應用也可以在程序中調用Android所特有的功能,是很有意義的。但是,要提供這樣的API並非易事。

發明內容
為解決提供混合API的問題,本發明提供了 一種在Android手機上實現WinCE/ Android混合API的方法,是一種採用代理機制的方法,在Android系統中為運行於 Android外部的WinCE/WM應用提供一個作為Android進程的代理進程,並為其提供一個虛 擬的API中介層,將應用程式對Android API函數的調用轉化成操作請求並發送給代理進 程,由代理進程調用相應的Android功能並將結果發回給應用進程。本發明解決其技術問題採用的技術方案本發明所述的這種在Android手機上實 現WinCE/WM和Android混合API的方法,要點為 每當要在Android手機上啟動一個WinCE/WM應用時,就在Android系統中為其 創建一個代理進程AppProxy,這個進程與實際的應用進程「同生共死」,有著相同的生存期。 實際的應用進程和代理進程都跟TinyX服務進程有socket連接。 在Android外部為WinCE/WM應用提供一個虛擬的Android API中介模塊,由這 個中介模塊提供與Android功能相對應的API函數。這個中介模塊與原有的Wine模塊合 在一起既提供WinCE/WM的API,也提供Android的API,所以稱為「混合API 」。 每當WinCE/WM應用程式調用由API中介層模塊提供的Android API函數時,中 介層模塊將其轉化成操作請求,並將其發送給TinyX服務進程。· TinyX服務進程將操作請求轉發給代理進程。 代理進程根據操作請求在Android框架內部調用相應的Android功能,並將運 行結果經由TinyX服務進程發回給Android外部的應用進程。 應用進程從對Android API函數的調用中返回。這裡的操作請求和運行結果之所以要由TinyX服務進程轉發,是因為應用進程本 來就與TinyX服務進程有socket連接,而代理進程要與TinyX服務進程建立socket連接 又很方便。在Linux平臺上,TinyX或X服務進程是為Linux應用統一提供圖形顯示和人 機交互輸入的服務進程。不過,TinyX服務進程這一個環節也可以跳過,改成由應用進程和 代理進程直接建立socket連接並直接通信。這樣,雖然WinCE/WM應用是在Android框架的外部運行,但是對Android所提供 功能的調用卻是由代理進程在Android框架的內部完成的。相比之下,應用程式對WinCE/麗API函數的調用則與Android無關。從程序設計的角度看,WinCE/WM應用可以利用的 API是個混合API。本發明有益的效果是使程式設計師們可以為WinCE/WM模式應用的開發提供一個混 合API,使這些應用可以在程序中調用由Android提供的功能。本發明直接的目的是為在 Android手機上運行的WinCE/WM應用提供混合API、即由WinCE/WM API和Android API 混合構成的API ;但是實際上也可以用來為在Android手機上運行的Linux應用提供混合 API、即由 Linux API 和 Android API 混合構成的 API。


圖1是按本發明所述方法提供混合API之前的系統示意圖;圖2是按本發明所述方法提供混合API之後的系統示意圖;圖3是AppProxy的程序流程圖。
具體實施例方式下面結合附圖和實施例對本發明作進一步說明圖1中的豎直虛線將系統分成兩半,右邊是Android系統及其應用,左邊是Linux 本身的應用,二者共用同一個Linux內核。圖中的右邊有兩個Android進程,它們都通過 Android的API調用由Android提供的各種基本功能,而Android則又通過Linux內核的 API (稱為「系統調用」)調用由內核提供的更基本的功能。相比之下,左邊是Linux本身的 應用,圖中的Wine模塊把本來只能在WinCE/WM上運行的應用轉化成Linux應用,或者說 WinCE/麗應用+Wine = Linux應用。但是,儘管如此,WinCE/WM應用與Wine之間的界面卻 仍舊是WinCE/WM的API。這樣,那怕Android的API提供了很好的功能,在WinCE/麗應用 裡面也無法加以調用。圖2中在Android這一邊多了一個應用代理進程AppProxy,這個代理進程相當於 一個Android應用,它可以調用Android的API所提供的任何一種功能。而在Linux這一 邊,則多了一個中介模塊。這個中介模塊在Linux這一邊提供一個虛擬的Android API。之 所以說虛擬,是因為這個模塊並不真的在Linux這一邊對這些功能實際上加以實現,而是 通過Socket連接向Android這一邊的代理進程AppProxy發出操作請求,由AppProxy在 Android的框架中予以實現。這樣,由中介模塊提供的API,加上由Wine模塊提供的API,合 在一起就構成了一個混合API。實際上,由中介模塊提供的API不必是完整的Android API,而只需是後者的一個 子集,因為AndroidAPI所提供的大部分功能在WinCE/WM API中都有,需要由中介模塊提供 的只是Android API中一些比較有特色的功能。圖3中,當用戶要啟動一個帶圖形界面的Linux應用時,實際啟動的是AppProxy, 原本用來啟動Linux應用所需的命令行則作為(對於AppProxy的)命令行參數傳給 AppProxy。啟動之後,AppProxy就進入一個循環,在循環中等待來自WinCE/WM應用的請求, 一旦有請求到來就加以解析和執行,並將結果發回給WinCE/WM應用,然後就進入下一輪循 環。在本方法的具體實施中,WinCE/WM應用進程與代理進程AppProxy之間的通信都經過TinyX服務進程的中轉。這是因為,現在的Linux平臺都是帶圖形化人機互動界面 (⑶I)的,一般的Linux應用(除Android外)在運行時都得與提供人機互動界面的TinyX 服務進程打交道。這些Linux應用進程在啟動時就自動與TinyX服務進程建立Socket連 接。而代理進程AppProxy,也很容易跟TinyX服務進程建立起Socket連接,因為後者本來 就是個服務進程,本來就在等待別的進程跟它建立連接。所以,本方法的具體實施涉及對 TinyX即X的原始碼的修改,X是開源軟體,其原始碼可從有關網站獲取。假定Android的API中定義了一個功能,是播放一段背景音樂,我們想讓WinCE/ 麗應用中可以調用這個功能。Android的框架採用Java語言,一個功能稱為一個「方法 (Method) 」,這個方法的名稱是start_music,在API中的定義是public boolean start_music(String[]filename, int volume);這個「方法」有兩個參數,第一個是音頻文件的文件名,第二個是播放的音量。我 們的目的是將Android API中的這個功能作為混合API中的一個函數提供給WinCE/WM應下面分五個方面說明本方法的一個實施例。注意同一個方法可以有多種不同的實 施,這裡所提供的只是其中之一。1、作為應用代理的可執行程序AppProxy為在Android框架中執行來自WinCE/麗應用和中介模塊的Android API函數操 作請求,需要在Android這一邊創建一個代理進程,由這個代理進程在Android這一邊調用 Android API所提供的各種函數。在Android系統中,一個應用進程稱為一個Activity,是一個Java語言中的「類 (Class) 」,將這種類擴展成一個自定義的類,就是一個Android應用,最後在Android的顯 示屏上就會有一個圖標,點擊這個圖標就會執行這個類中的「方法(Method),,onCreate 。 所以,onCreateO就相當於C程序中的main。下面給出有關的偽代碼
public class RunAppActivity extends Activity {
......//這個自定義類中擴充出來的其它方法
private JniMethod raJniMethod = new JniMethod; //需要用到 JNI
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedlnstanceState) { //相當於C程序中的main super.onCreate(savedlnstanceState);
JniMethod.startApp(StartAppName.getBytes); //啟動執行 Linux 那一邊的 App
權利要求
1. 一種在Android手機上實現WinCE/WM和Android混合API的方法,其特徵是1. 1)每當要在Android手機上啟動一個WinCE/WM應用時,就在Android系統中為其創 建一個代理進程,代理進程與實際的應用進程有相同的生存期,兩個進程都跟TinyX服務 進程有socket連接;1. 2)在Android外部為WinCE/WM應用提供一個虛擬的Android API中介模塊,由這個 中介模塊提供與Android功能相對應的API ;這個中介模塊與原有的Wine模塊合在一起既 提供WinCE/WM的API,也提供Android的API,稱為「混合API,,;1. 3)每當WinCE/WM應用程式調用由中介模塊提供的Android API函數時,中介模塊將 其轉化成操作請求,並將其發送給TinyX服務進程;1. 4) TinyX服務進程將操作請求轉發給代理進程;1.5)代理進程根據操作請求在Android框架內部調用相應的Android功能,並將運行 結果經由TinyX服務進程發回給Android外部的應用進程。
2.根據權利要求1所述的在Android手機上實現WinCE/WM和Android混合API的方 法,其特徵是該方法用於X視窗圖形界面與Android相整合。
3.根據權利要求1所述的在Android手機上實現WinCE/WM和Android混合API的方 法,其特徵是應用進程和代理進程之間直接建立socket連接並直接通信,不經TinyX服務 進程轉發。
全文摘要
本發明涉及一種在Android手機上實現WinCE/WM和Android混合API的方法,在Android系統中為運行於Android外部的WinCE/WM應用提供一個作為Android進程的代理進程,並為其提供一個虛擬的API中介層,將應用程式對Android API函數的調用轉化成操作請求並發送給代理進程,由代理進程調用相應的Android功能並將結果發回給應用進程。本發明有益的效果是使程式設計師們可以為WinCE/WM模式應用的開發提供一個混合API,使這些應用可以在程序中調用由Android提供的功能。
文檔編號G06F9/44GK102123196SQ201010622298
公開日2011年7月13日 申請日期2010年12月29日 優先權日2010年12月29日
發明者毛德操, 王承志, 金濤 申請人:浙大網新科技股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀