999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的Android應用GUI的開發

2013-01-16 09:20:38何浩李滔
電子設計工程 2013年9期
關鍵詞:按鈕界面程序

何浩,李滔

(西北工業大學 電子信息學院,陜西 西安 710129)

經過多年的發展,第三代數字通信(3G)技術獲得了廣泛的接受,它為移動終端用戶帶來了更快的數據傳輸速率?,F在移動終端已不再僅是通訊網絡的終端,還將成為互聯網的終端。因此,移動終端的應用軟件和需要的服務將會有很大的發展空間。Google為此于2007年11月推出了一個專為移動設備設計的軟件平臺——Android。

Android是一套真正意義上的開放性移動設備綜合平臺,它包括操作系統、中間件和一些關鍵的平臺應用。Android最大特點在于它是一個開放的體系架構,具有非常好的開發和調試環境,而且還支持各種可擴展的用戶體驗,Android里面具有非常豐富的圖形系統,對多媒體的支持功能和非常強大的瀏覽器[1-3]。2011年第一季度,Android在全球的市場份額首次超過塞班系統,躍居全球第一。 2012年11月數據,Android占據全球智能手機操作系統市場76%的份額,中國市場占有率為90%。

伴隨著Android用戶的迅猛增長,手機應用創新進入了“爆發期”,Android電子市場能夠持續保持強勁增長速度已經創造了新的奇跡,應用程序和游戲數量的增長速度已經超出了預期。官方最近給出的數字顯示,2012年1月,Android電子市場中的活躍應用已超過40萬,這距離突破30萬應用僅僅用了4個月時間。

然而,Android應用的開發開始時只支持Java語言,現在幾乎所有的應用都是使用Java語言開發的,但是對于Android應用開發的愛好者來說,這并不是個好消息,因為并不是所有人都喜歡或者熟悉Java。而且雖然Java在開發Android應用發面的確功能強大,但是也正因如此,它在完成某些簡單任務時顯得過于繁冗復雜,不夠靈巧。Google及時的認識到這對Android發展的不利。于是發起了SL4A(Scripting Layer for Android)項目,它的目標就是可以用各種腳本語言開發 android程序,目前支持 Python、Beanshell、JRuby、Lua、Perl、PHP 和 Rhino等。 有了 SL4A 的支持,我們就可以用Python來開發Android應用了。

1 基于Python的Android應用的開發

Python是一種開放源代碼的腳本編程語言,這種腳本語言特別強調開發速度和代碼的清晰程度。它可以用來開發各種程序,從簡單的腳本任務到復雜的、面向對象的應用程序都有大顯身手的地方。Python還被當作一種入門程序員最適合掌握的優秀語言,因為它免費、面向對象、擴展性強同時執行嚴格的編碼標準[4-6]。

SL4A的全稱為Scripting Layer for Android,它實現了本地腳本和原生態Android程序的內部消息通信,所以任何本地腳本語言,只要實現了這套兼容的JSON RPC通信接口,就可以呼叫SL4A的RPC Server端程序[7]。

圖1 SL4A總體架構Fig.1 General framework

從圖1可以看出,SL4A總體包括Client和Server兩部分來實現通信和整體架構的獨立性,Client端負責解析本地腳本,這樣只要本地腳本實現了兼容的接口,就可以方便實現腳本語言的擴展,而Server端則封裝了Android原生態程序的設計,即使在Android底層API發生變化的時候,Client端也基本不會受到影響,Client把腳本中解析出來的函數調用通過RPC通信,遠程呼叫Server端代理接口,然后由Server調用原生態的Android API(Android Facade架構)來完成具體的功能,在調用結束后,Server端將執行結果反饋給Client端。這樣就實現了用Python對Android應用的開發。

2 開發工具

我們可以直接在Android官網上下載到全套的應用開發包,下載地址為 http://developer.android.com/sdk/index.html,其中包括必要的 Android SDK組件和已安裝好ADT(Android Developer Tools)插件的Eclipse IDE。Eclipse是著名的跨平臺的自由集成開發環境。最初主要用來Java語言開發,但通過安裝相應的插件也可使其作為C++、Python、PHP等其他語言的開發工具。Eclipse的本身只是一個框架平臺,但是眾多插件的支持,使得Eclipse擁有較佳的靈活性。許多軟件開發商以Eclipse為框架開發自己的IDE。

為了能在Eclipse中用Python語言做Android應用的開發,除了安裝ADT插件外還需要Pydev插件。在Eclipse中安裝Pydev插件時,點擊菜單欄中的幫助按鈕,在打開的下拉式菜單中選擇Install New Software選項。此時會彈出一個新的對話框,點擊Add按鈕,然后在新對話框中的Name欄輸入插件的名字,在Location欄輸入插件的下載地址,Eclipse的Pydev在線下載安裝地址為:http://Pydev.org/updates,完成后點擊OK,選擇所要安裝的插件包,點擊Next,等待下載安裝完成。當安裝完成后,Eclipse需要重新啟動。重啟之后,就可以在Eclipse中用Python做Android應用開發了。

3 使用Python實現Android應用的GUI開發

GUI(Graphical User Interface)即圖形用戶接口,是人機交互最基本的工具,任何一款手機應用或是電腦軟件都無法擺脫GUI的開發。在使用Python的探索開發過程中,我們發現有兩種最基本的方式通過SL4A實現與用戶的交互。第一種方法,直接調用Android API來生成對話框,如警告對話框。這是最簡單、最直接的向用戶傳遞信息并接受用戶反饋的方法。第二種方法是使用HTML或者JavaScript來建立用戶界面(UI),Python在后臺做其他處理。

3.1 使用Python開發對話框類型的GUI

3.1.1 對話框

SL4A中包含一個UI facade用來訪問Android API中可調用的基本對話框。通過代碼來調用這些對話框非常的簡單。我們所需做的只是設置我們所想顯示的按鈕,項目和題目的內容,然后調用ShowDialog就行了。同時,我們可以通過調用dialogGetResponse來查看用戶的行為。

如果我們想給用戶顯示一條簡短的消息,可以使用makeToast API功能,程序運行后,會顯示如圖2所示的對話框。 它有一個標題 (Hello! ), 有一段提示 (What is your name?),并且getInput方法會提供一個默認的單行輸入欄和一個OK按鈕。

圖2 帶標題、提示行、輸入框和OK按鈕的對話框Fig.2 Input dialog box with title, prompt, input box, and Ok button

當用戶輸入名字并點擊OK后,getInput功能將返回一個元組格式的result對象。在這個例子中,返回的內容為:Result(id=0, result=u’Kentucky Rose’, error=None)

每個result都有一個唯一的ID使其可被追蹤,在這個例子中ID為0。元組的第二個元素就是用戶在輸入欄所輸入的文本內容。每個元組同時還包含一個error元素,用來將可能遇到的各種錯誤信息反饋給調用者。在這個例子中,我們看到error=None,也就是說沒有錯誤。當OK鍵按下后我們就可以看到會彈出一個對話框顯示用戶所輸入的內容,該對話框會持續一小段時間后自動消失。

3.1.2 選項菜單

大部分Android應用都有一個選擇菜單,可以讓用戶設定一些參數或者應用功能的其他選擇。SL4A通過調用addOptionsMenuItem來實現選擇菜單項的創建,包括選擇菜單按鈕的創建,按鈕名稱的定義,按鈕圖標的選擇等。調出菜單項的時候必須有一個系統界面,我們可以調用webViewShow方便的建立一個空白的系統界面。運行程序后按下設備的菜單鍵就會彈出如圖3所示的菜單項。

圖3 菜單項實例Fig.3 Example options menu

當按下Sensible后會得到以下result:

{u ‘data’:u ‘I bet.’, u ‘name’:u ‘sensible’, u‘time’:1301074971174000L}

需注意這個result事實上是一個event的輸出,它包含了3個已命名項,分別為:data、name和time。接下來需要做的就是完成用戶按下每一個菜單選項后所實現的具體功能了。

3.1.3 通過dialogCreateAlert實現文件列表

在Android應用中,我們經常會需要給用戶一個文件列表,比如在閱讀器中添加本地圖書,或者管理本設備SD卡中的文件的時候。SL4A為我們提供了dialogCreateAlert的方法,可以輕松實現這個界面,運行程序后所出現的界面如圖4所示,界面的頂部標題中顯示的是用戶所打開文件夾的路徑。

圖4 簡單的文件選擇對話框Fig.4 Simple file chooser dialog box

3.2 通過HTML建立Python GUI

在這種方法下,最基本的做法就是使用HTML或者JavaScript來建立用戶見面,Python在后臺做進程處理工作。Python也可以建立HTML文件不使用任何用戶界面來顯示一些基本信息。

3.2.1 通過HTML顯示基本信息

應用中經常會遇到需要給用戶簡單的顯示大塊信息的時候,這時候可能是一個列表或者一個文本對話框,這兩種方法用HTML實現都非常簡單。我們可以用程序生成一個HTML文件然后通過調用webViewShow API來啟動它。

在下面我做了個簡單的程序,它將獲取電池狀態,并生成包含所有電池信息的HTML文件,然后通過調用webViewShow API來啟動這個HTML文件。運行此程序后將在/sdcard/sl4a/scripts路徑下產生一個名為battstats.html的文件。其顯示結果如圖5所示。

圖5 使用簡單的HTML文件顯示電池狀態Fig.5 Use of a simple HTML file to display battery status

3.2.2 HTML和JavaScript的應用

當我們想給顯示信息中加入一些交互元素的時候,就需要引入JavaScript了。SL4A提供了Python和web page的通信方法,并且events和JavaScript代碼也可以加入到web page中,但是在做API調用之前我們必須先在JavaScript代碼中用 var droid=new Android()來定義Android對象。

下面我嘗試做了一個較復雜的設置界面,它包含多個輸入框和多種輸入形式。用戶可以通過這個界面對設備的相關設置進行調整,包括屏幕亮度,媒體音量,鈴聲音量和WIFI模式等。首先我們需要用HTML制作一個界面。界面完成后我們遇到的首要問題就是如何將用戶設置的各項參數傳遞給Python,讓Python來做出相應的后臺處理。誠如前面所說,這個任務將交給JavaScript來完成,完成提取參數的關鍵工作是由document.getElementById()實現的。當設置參數成功傳遞給Python后,Python將根據用戶的具體設置對手機各硬件設備進行相應的調整。Python部分的核心代碼如下:

droid=android.Android()

droid.webViewShow(‘file:///sdcard/sl4a/scripts/settings.html’)

while True:

result=droid.waitForEvent('save').result

data=urlparse.parse_qs(result['data'][1:])

droid.toggleAirplaneMode('airplane'in data)

droid.toggleWifiState('wifi'in data)

droid.setScreenBrightness('screen'in data and 255 or 0)

運行程序的顯示結果如圖6所示。

圖6 設置界面Fig.6 My setting interface

4 結束語

Python是一門年輕、開源、充滿活力的腳本編程語言。在SL4A的支持下,Python可輕松實現Android平臺下應用的UI設計。它既可以通過調用Android的各種對話框實現與用戶的交互,也可以通過與HTML和JavaScript的配合來實現簡潔大方的框架式交互界面。隨著SL4A項目的影響越來越大,將有更多的Python愛好者嘗試并研究用Python來編寫Android應用,Python語言將會在Android應用開發中大有作為。

[1]鄭萌,趙常松.Android應用開發與典型案例[M].北京:電子工業出版社,2012.

[2]Mark L.Murphy.BeginningAndroid 2[M].United States of America:Apress,2010.

[3]Meier R.Professional Android Application Develop[M].WROX PR/PEER INFORMATION INC,2009.

[4]Steven Bird,Edward Loper,Ewan Klein.Natural language processing with Python [M].United States of America:O’Reilly Media,2009.

[5]Paul Barry.Head First Python[M].United States of America:O’Reilly,2011.

[6]Beazley D M.Python essential reference[M].Fourth Edition.Beijing:Post and Telecom Press,2011.

[7]Paul Ferrill.Pro android python with SL4A[M].United States of America:Apress,2011.

猜你喜歡
按鈕界面程序
這些按鈕能隨便按嗎?
當你面前有個按鈕
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
人機交互界面發展趨勢研究
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
主站蜘蛛池模板: 亚洲国产高清精品线久久| 在线观看无码av五月花| 日韩精品一区二区三区中文无码| 亚洲国产亚洲综合在线尤物| 男女男精品视频| 久久中文电影| 欧美高清日韩| 午夜久久影院| 国产精品亚洲五月天高清| 久热re国产手机在线观看| 四虎影视永久在线精品| 国产成a人片在线播放| 精品无码日韩国产不卡av| 欧美中文字幕无线码视频| 国产精品福利社| 国产免费观看av大片的网站| 手机成人午夜在线视频| 日本一区二区三区精品视频| 国产呦精品一区二区三区网站| 欧美日本在线一区二区三区| 四虎影视库国产精品一区| 一级毛片基地| 中文字幕天无码久久精品视频免费| 亚洲精品第1页| 一级一毛片a级毛片| 婷婷五月在线| 久久综合亚洲鲁鲁九月天| 久久精品国产精品青草app| 欧美不卡二区| 日韩成人午夜| 91麻豆国产视频| 在线观看欧美精品二区| 日本日韩欧美| 人妻熟妇日韩AV在线播放| 思思99热精品在线| 国产va在线观看| 国产精品原创不卡在线| 亚洲国产天堂久久九九九| 免费又黄又爽又猛大片午夜| 五月婷婷导航| 国产成人综合久久精品下载| 免费三A级毛片视频| 97精品久久久大香线焦| 国产精品免费电影| 永久免费AⅤ无码网站在线观看| 国产主播一区二区三区| 视频二区亚洲精品| 潮喷在线无码白浆| 日本不卡在线播放| 中文字幕乱码二三区免费| 高清久久精品亚洲日韩Av| 色老二精品视频在线观看| 日韩欧美国产三级| 国产精品蜜芽在线观看| 国产男女XX00免费观看| 亚洲天堂2014| 久久国产av麻豆| 女人18毛片久久| 国产精品九九视频| 日韩欧美国产另类| 国产毛片片精品天天看视频| 亚洲人成人无码www| 亚洲欧美另类专区| 国产乱人伦精品一区二区| 国产呦精品一区二区三区下载| 四虎精品国产AV二区| 综合久久久久久久综合网| 国产成人高精品免费视频| 亚洲香蕉久久| 精品国产99久久| www.狠狠| 欧美黄色a| 91亚洲免费| 色婷婷综合在线| 亚洲视频一区在线| 久草青青在线视频| 中文字幕人妻无码系列第三区| 久久九九热视频| 国产欧美中文字幕| 国产黄在线免费观看| 无码丝袜人妻| 2022精品国偷自产免费观看|