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

基于Python的Android應用GUI的開發

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

何浩,李滔

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

經過多年的發展,第三代數字通信(3G)技術獲得了廣泛的接受,它為移動終端用戶帶來了更快的數據傳輸速率。現在移動終端已不再僅是通訊網絡的終端,還將成為互聯網的終端。因此,移動終端的應用軟件和需要的服務將會有很大的發展空間。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
主站蜘蛛池模板: 亚洲综合婷婷激情| 国产精品va免费视频| 免费毛片视频| 成年人国产网站| 九色91在线视频| 亚洲精品成人福利在线电影| 国产va欧美va在线观看| 国产亚洲精品91| 免费在线看黄网址| 激情综合网激情综合| 婷婷综合在线观看丁香| 亚洲日韩AV无码一区二区三区人| 免费A级毛片无码无遮挡| 国产欧美日韩精品第二区| 欧美亚洲综合免费精品高清在线观看| 国产成人精彩在线视频50| 亚洲日韩国产精品综合在线观看| 午夜精品福利影院| 亚洲天堂区| 国产在线精品网址你懂的| 国产成人精品一区二区| 日本免费a视频| 日本三级欧美三级| 国产制服丝袜91在线| 青青极品在线| 国产麻豆福利av在线播放| 亚洲欧美日韩精品专区| 国产精品亚洲欧美日韩久久| 日韩一区二区三免费高清| 国产在线高清一级毛片| 亚洲日韩精品无码专区| 在线不卡免费视频| 午夜一区二区三区| 国产精品开放后亚洲| 99视频有精品视频免费观看| 免费毛片视频| 女人天堂av免费| 91福利片| 亚洲午夜18| 囯产av无码片毛片一级| 国产精品yjizz视频网一二区| 亚洲精品自产拍在线观看APP| 色综合久久久久8天国| 欧美精品在线免费| 国产美女叼嘿视频免费看| 中文字幕无线码一区| 国产成人综合日韩精品无码不卡| 欧美日韩专区| a毛片免费看| 欧美成人午夜在线全部免费| 国产三级毛片| 国产女同自拍视频| 激情亚洲天堂| 毛片网站观看| 婷婷亚洲天堂| 成年人福利视频| 亚洲无码电影| 福利在线免费视频| a级毛片一区二区免费视频| 国产精品亚洲片在线va| 精品国产电影久久九九| 日韩成人在线网站| 精品国产成人高清在线| 找国产毛片看| 91青青草视频在线观看的| 亚洲一区二区三区麻豆| 在线亚洲精品自拍| 婷婷伊人久久| 一级一级一片免费| 色婷婷亚洲十月十月色天| 午夜视频免费试看| 午夜日韩久久影院| 99视频在线观看免费| 日韩无码黄色网站| 中文国产成人久久精品小说| 四虎影院国产| 粗大猛烈进出高潮视频无码| 在线视频精品一区| 热久久这里是精品6免费观看| 一本久道久久综合多人| 久久精品午夜视频| 手机精品视频在线观看免费|