国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      在Android手機(jī)上實(shí)現(xiàn)WinCE/Android混合API的方法

      文檔序號:6341288閱讀:605來源:國知局
      專利名稱:在Android手機(jī)上實(shí)現(xiàn)WinCE/Android混合API的方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種Android手機(jī)領(lǐng)域,尤其是一種在Android手機(jī)上實(shí)現(xiàn)WinCE/ Android混合API的方法,其顯著的特點(diǎn)是使程序員在開發(fā)Android應(yīng)用軟件時在程序中既 可以調(diào)用WinCE的功能,又可以調(diào)用Android本身的功能。
      背景技術(shù)
      以手機(jī)為代表的智能化移動終端設(shè)備既是計(jì)算機(jī)技術(shù)的一個重要發(fā)展方向,又是 一個競爭十分激烈的市場。自從谷歌公司和開放手機(jī)聯(lián)盟推出Android操作系統(tǒng)和基于 Android的手機(jī)以來,很快就在世界手機(jī)市場上占有了不小的份額,各種Android手機(jī)層出 不窮,由中國移動開發(fā)并推出的OPhone也是基于Android的,也是一種Android手機(jī)。所謂Android操作系統(tǒng),實(shí)際上是對Linux操作系統(tǒng)的一種改編和擴(kuò)充,它的內(nèi)核 基本上就是Linux的內(nèi)核,但是在用戶空間卻專門針對手機(jī)和移動終端設(shè)備的特點(diǎn)作了大 幅的改進(jìn)和增強(qiáng),這些改動大都與編程模式和圖形界面、即圖形化用戶界面(GUI)有關(guān)。另一種常用于手機(jī)的操作系統(tǒng)是微軟的WinCE和麗、即Windows Mobile,這是在 微軟的Windows操作系統(tǒng)上發(fā)展起來的。基于WinCE/WM的手機(jī)也在市場上占不小的份額, 并且開發(fā)出了數(shù)量不小的WinCE/WM應(yīng)用軟件。如果能把這些應(yīng)用軟件拿到Android手機(jī) 上運(yùn)行,對于提高Android手機(jī)的市場占有率顯然是有利的。通過把開源軟件Wine移植到Android手機(jī)上,把本應(yīng)由Windows提供的支撐 嫁接到Linux上,并對其加以擴(kuò)充、使其支持WinCE/WM,可以讓W(xué)inCE/WM應(yīng)用軟件直接 在Android手機(jī)上運(yùn)行、實(shí)際上是在Android手機(jī)的Linux內(nèi)核上運(yùn)行。這樣,原來熟悉 WinCE/WM軟件開發(fā)的人就可以按原來的模式、在原來的開發(fā)環(huán)境中、使用原來的開發(fā)工具、 像開發(fā)WinCE/WM軟件一樣地開發(fā)Android軟件,而且開發(fā)出來的軟件既是WinCE/WM軟件 又可以在Android手機(jī)上運(yùn)行,這對于開發(fā)者也是很有利的。可是,這樣開發(fā)出來的軟件實(shí)質(zhì)上仍是純粹的WinCE/WM軟件,其基礎(chǔ)是由WinCE/ WM承諾提供的各項(xiàng)功能。事實(shí)上,沒有一種應(yīng)用軟件能事無巨細(xì)完全由自己提供所有的功 能,都是建立在別的軟件如操作系統(tǒng)、基礎(chǔ)平臺、中間件等等所提供的更為基本的功能的基 礎(chǔ)上。反過來,凡是承諾為別的軟件提供某些功能的軟件,則要定義、即明確說明自己能提 供一些什么樣的功能,以及怎樣調(diào)用這些功能。這樣的定義稱為“應(yīng)用程序編程界面”、即 API。另一方面,軟件的功能是由“函數(shù)”實(shí)現(xiàn)和提供的,這樣的軟件既然要為別的軟件提供 某些功能,就必須提供一個實(shí)際上實(shí)現(xiàn)了這些功能的函數(shù)集合,所以API的另一個意思就 是指這樣的一個函數(shù)集合??梢姡鲜鰹閃inCE/WM平臺開發(fā)的應(yīng)用軟件都是基于WinCE/WM 的API。而“正宗”的Android軟件,則是基于Android自己的API。移植了 Wine以后,這 兩種應(yīng)用軟件雖然都能在Android上運(yùn)行,實(shí)際上卻是井水不犯河水、互不相干。從原理上 說,WinCE/WM的API與Android的API在功能方面應(yīng)該是等價的對應(yīng)物,但是實(shí)際上只能 是大體上如此,二者還是有些區(qū)別,所以即使是針對Android手機(jī)而開發(fā)的WinCE/WM應(yīng)用, 也不能充分利用Android的優(yōu)勢。因?yàn)檫@些功能是在Android框架的內(nèi)部運(yùn)行,而WinCE/WM軟件雖然能在Android手機(jī)的Linux內(nèi)核上面運(yùn)行,卻是在Android框架的外部。更重 要的是,Android是個開放的系統(tǒng),不斷有許多新的基本功能被創(chuàng)造出來并增添到Android 的API中,可是在為WinCE/WM編寫的程序中就不能調(diào)用這些功能了??梢韵胂?,要是能為WinCE/WM應(yīng)用的開發(fā)者提供一個“混合API ”,使他們在程序 中既能如常調(diào)用由WinCE/WM的API所提供的功能,又能調(diào)用由Android提供的一些特殊或 新穎的功能,這些開發(fā)者們就可以為Android開發(fā)出更多更好的應(yīng)用軟件。舉例言之,對于 來自Google的Android,地圖功能是它的一個強(qiáng)項(xiàng),如果開發(fā)的是“正宗”的Android應(yīng)用, 在程序中調(diào)用與地圖有關(guān)的功能是比較容易的。但是,如果開發(fā)的是WinCE/WM模式的應(yīng) 用,盡管目的也是在Android手機(jī)上運(yùn)行,卻無法調(diào)用這些功能。由此可見,提供一個混合 API,使WinCE/WM模式的應(yīng)用也可以在程序中調(diào)用Android所特有的功能,是很有意義的。但是,要提供這樣的API并非易事。

      發(fā)明內(nèi)容
      為解決提供混合API的問題,本發(fā)明提供了 一種在Android手機(jī)上實(shí)現(xiàn)WinCE/ Android混合API的方法,是一種采用代理機(jī)制的方法,在Android系統(tǒng)中為運(yùn)行于 Android外部的WinCE/WM應(yīng)用提供一個作為Android進(jìn)程的代理進(jìn)程,并為其提供一個虛 擬的API中介層,將應(yīng)用程序?qū)ndroid API函數(shù)的調(diào)用轉(zhuǎn)化成操作請求并發(fā)送給代理進(jìn) 程,由代理進(jìn)程調(diào)用相應(yīng)的Android功能并將結(jié)果發(fā)回給應(yīng)用進(jìn)程。本發(fā)明解決其技術(shù)問題采用的技術(shù)方案本發(fā)明所述的這種在Android手機(jī)上實(shí) 現(xiàn)WinCE/WM和Android混合API的方法,要點(diǎn)為 每當(dāng)要在Android手機(jī)上啟動一個WinCE/WM應(yīng)用時,就在Android系統(tǒng)中為其 創(chuàng)建一個代理進(jìn)程AppProxy,這個進(jìn)程與實(shí)際的應(yīng)用進(jìn)程“同生共死”,有著相同的生存期。 實(shí)際的應(yīng)用進(jìn)程和代理進(jìn)程都跟TinyX服務(wù)進(jìn)程有socket連接。 在Android外部為WinCE/WM應(yīng)用提供一個虛擬的Android API中介模塊,由這 個中介模塊提供與Android功能相對應(yīng)的API函數(shù)。這個中介模塊與原有的Wine模塊合 在一起既提供WinCE/WM的API,也提供Android的API,所以稱為“混合API ”。 每當(dāng)WinCE/WM應(yīng)用程序調(diào)用由API中介層模塊提供的Android API函數(shù)時,中 介層模塊將其轉(zhuǎn)化成操作請求,并將其發(fā)送給TinyX服務(wù)進(jìn)程?!?TinyX服務(wù)進(jìn)程將操作請求轉(zhuǎn)發(fā)給代理進(jìn)程。 代理進(jìn)程根據(jù)操作請求在Android框架內(nèi)部調(diào)用相應(yīng)的Android功能,并將運(yùn) 行結(jié)果經(jīng)由TinyX服務(wù)進(jìn)程發(fā)回給Android外部的應(yīng)用進(jìn)程。 應(yīng)用進(jìn)程從對Android API函數(shù)的調(diào)用中返回。這里的操作請求和運(yùn)行結(jié)果之所以要由TinyX服務(wù)進(jìn)程轉(zhuǎn)發(fā),是因?yàn)閼?yīng)用進(jìn)程本 來就與TinyX服務(wù)進(jìn)程有socket連接,而代理進(jìn)程要與TinyX服務(wù)進(jìn)程建立socket連接 又很方便。在Linux平臺上,TinyX或X服務(wù)進(jìn)程是為Linux應(yīng)用統(tǒng)一提供圖形顯示和人 機(jī)交互輸入的服務(wù)進(jìn)程。不過,TinyX服務(wù)進(jìn)程這一個環(huán)節(jié)也可以跳過,改成由應(yīng)用進(jìn)程和 代理進(jìn)程直接建立socket連接并直接通信。這樣,雖然WinCE/WM應(yīng)用是在Android框架的外部運(yùn)行,但是對Android所提供 功能的調(diào)用卻是由代理進(jìn)程在Android框架的內(nèi)部完成的。相比之下,應(yīng)用程序?qū)inCE/麗API函數(shù)的調(diào)用則與Android無關(guān)。從程序設(shè)計(jì)的角度看,WinCE/WM應(yīng)用可以利用的 API是個混合API。本發(fā)明有益的效果是使程序員們可以為WinCE/WM模式應(yīng)用的開發(fā)提供一個混 合API,使這些應(yīng)用可以在程序中調(diào)用由Android提供的功能。本發(fā)明直接的目的是為在 Android手機(jī)上運(yùn)行的WinCE/WM應(yīng)用提供混合API、即由WinCE/WM API和Android API 混合構(gòu)成的API ;但是實(shí)際上也可以用來為在Android手機(jī)上運(yùn)行的Linux應(yīng)用提供混合 API、即由 Linux API 和 Android API 混合構(gòu)成的 API。


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