當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]從G1上市到現(xiàn)在,市面上已經(jīng)出現(xiàn)了至少30款A(yù)ndroid手機(jī)。為什么至今依然有一些用戶在抱怨Android不好用,在相關(guān)的開發(fā)中,什么才是真正值得關(guān)注的,開發(fā)的核心是什么?為什么

從G1上市到現(xiàn)在,市面上已經(jīng)出現(xiàn)了至少30款A(yù)ndroid手機(jī)。為什么至今依然有一些用戶在抱怨Android不好用,在相關(guān)的開發(fā)中,什么才是真正值得關(guān)注的,開發(fā)的核心是什么?為什么移動(dòng)應(yīng)用需要格外關(guān)注用戶體驗(yàn)?本文將對這些問題盡可能的作出解答。

Android一詞的本義指“機(jī)器人”,同時(shí)也是Google于2007年11月5日宣布的基于Linux的開源手機(jī)操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用程序組成,是首個(gè)真正為移動(dòng)終端打造的開放并且完整的移動(dòng)平臺。2008年9月22日,美國運(yùn)營商T-Mobile USA在紐約正式發(fā)布第一款Google手機(jī),即T-Mobile G1,從那個(gè)時(shí)候起,Android的時(shí)代就真正的來臨了。

從Android 1.0至今經(jīng)歷了多次的版本更新,其中重要的變更是1.5、2.0和2.2。而其他的版本更新相對而言并不是那么重要。另外,由于每次更新都會(huì)多少改動(dòng)包括 Dalvik 在內(nèi)的底層模塊,同時(shí)牽扯到 SDK,導(dǎo)致了一些程序需要跟著 Android 版本進(jìn)行變動(dòng)。對于相對較為保守的開發(fā)人員而言,快速的版本更新將給他們帶來越來越大的限制。在這種情況下,Android 開源的意義就顯得不是那么大了。

無論如何,由于Android與Google服務(wù)的緊密捆綁,這款操作系統(tǒng)擁有了得天獨(dú)厚的優(yōu)勢。通過Google強(qiáng)有力的支持,很多事情在Android上都會(huì)變得很簡單。另外需要特別提出的是,Android是一款基于互聯(lián)網(wǎng)的操作系統(tǒng),在可以連接上互聯(lián)網(wǎng)的情況下,一款A(yù)ndroid手機(jī)可以發(fā)揮出比其他手機(jī)更多的能力。而在沒有網(wǎng)絡(luò)的情況下,Android手機(jī)并不比其他的手機(jī)出色,尤其是娛樂性相對于iPhone可以說是遜色不少。

作為開發(fā)人員,應(yīng)當(dāng)在學(xué)習(xí)并深入了解Android之后,在自己的軟件中,將Android的優(yōu)勢發(fā)揮出來,同時(shí)通過一些手段去彌補(bǔ)Android 本身的缺陷或不足。下面來看一下Android擁有的特點(diǎn)吧:

與硬件交互非常方便,包括攝像頭、GPS 等,都可以簡單的操作。

擁有自己的運(yùn)行時(shí)和虛擬機(jī),優(yōu)秀的內(nèi)存管理能力。

提供豐富的界面控件供開發(fā)者使用,允許可視化開發(fā),并保證Android平臺下的應(yīng)用程序界面一致。

提供輕量級的進(jìn)程間通信機(jī)制。

支持無界面的后臺服務(wù)類應(yīng)用程序。

支持高效、快速的數(shù)據(jù)存取方式。

在這些特性的支持下,試圖在Android下開發(fā)一個(gè)應(yīng)用不會(huì)太過困難。事實(shí)上,一個(gè)稍有 Java經(jīng)驗(yàn)的開發(fā)人員,都可以快速的上手進(jìn)行 Android的開發(fā)。而開發(fā)的核心,一直以來也是圍繞著Android手機(jī)幾個(gè)大的特點(diǎn)來進(jìn)行的,其中就包括了觸摸屏、攝像頭、GPS模塊、互聯(lián)網(wǎng)功能、語音輸入、Google賬戶等。需要說的是,如果一位 J2ME 工程師想轉(zhuǎn)行做Android,那么他將付出的代價(jià)比J2SE或J2EE工程師要大得多。畢竟Android所支持的是基本完整的J2SE的子集,反過來再看J2ME就會(huì)覺得它的功能太弱了。

除了Java外,還有許多語言支持Android 的開發(fā),比較為人所熟知的有Scala,而作為 Android本身的底層語言,C/C++的作用也完全不可忽視。而目前的開源社區(qū)內(nèi),已經(jīng)有一些牛人在嘗試讓更多的語言可以開發(fā)Android應(yīng)用。比較有代表性的可能是Koushik Dutta,他已經(jīng)解決了在Mono平臺下,讓Dalvik調(diào)用Mono 代碼的問題?;蛟S在不久的將來,.NET 下的所有語言,都有可能借助Mono跑在Android上,這是一件值得讓人期待的事情。

語言已不是問題,那還有什么會(huì)成為問題?也許很多人會(huì)說“經(jīng)驗(yàn)”。誠然,經(jīng)驗(yàn)決定了一位開發(fā)人員能否快速地、流暢地完成開發(fā)工作,也決定了軟件的魯棒性,Bug的數(shù)量、等級和修正問題的返工次數(shù)。不過我認(rèn)為,這些都不重要,哪怕是一個(gè) Android 行業(yè)的新人,一邊查詢文檔一邊做開發(fā),雖然效率會(huì)很低,但是一樣能把項(xiàng)目做完。在 Android 下,開發(fā)技術(shù)幾乎是沒有瓶頸的。那么瓶頸在哪里呢?事實(shí)上,在用過很多軟件后,就會(huì)發(fā)現(xiàn),有很多軟件并不好用。很多用戶不愿意用某個(gè)軟件,也并不是因?yàn)檐浖]有技術(shù)含量或是滿足不了需求,原因很簡單,就是不好用。

用 戶體驗(yàn)是凌駕于技術(shù)之上的,可以說,優(yōu)秀的用戶體驗(yàn)將可以起到事半功倍的效果,在一堆同類的軟件中,下載量最大的,一定是讓用戶用著感覺最舒服的,哪怕它 的功能并不比其他的產(chǎn)品出色,甚至略差一些。我見過很多開發(fā)人員,他們視技術(shù)為己任,一心只鉆研技術(shù),認(rèn)為技術(shù)出色的軟件,會(huì)受到用戶的好評,甚至在一個(gè) 手機(jī)游戲中,加入各種華麗炫目的3D效果。這些固然都不錯(cuò),但是真正的用戶卻不會(huì)喜愛它們。在移動(dòng)應(yīng)用中,簡潔明快才是用戶希望看到的。試想一下,當(dāng)用戶在手機(jī)上玩一個(gè)RPG游戲,并被華麗的3D效果充斥了整個(gè)界面,那么他將完全無法著手進(jìn)行下一個(gè)動(dòng)作。誠然,華麗的畫面是很容易吸引人,但是在這種華麗的背后,卻會(huì)直接把用戶和開發(fā)者自己領(lǐng)入一條深淵,再也無法回頭,最終的結(jié)果就是,用戶完全舍棄該款游戲,開發(fā)者或運(yùn)營商也完全賺不到錢。

在移動(dòng)平臺開發(fā)的過程中,用戶體驗(yàn)已經(jīng)成為首要大事,只有聚焦在用戶的設(shè)計(jì),才有可能被用戶所接受。下面來看一些典型的例子。

上圖是經(jīng)典的Windows Mobile 6.1的界面,從Windows Mobile推 出的那天起,這個(gè)界面就一直被宣傳成內(nèi)容充實(shí),包含常用所有功能的入口,非常貼合用戶的實(shí)際需求。也許在當(dāng)時(shí),這樣的界面確實(shí)能滿足一定的需求,但是到了 現(xiàn)在,這樣的設(shè)計(jì)只能說是遠(yuǎn)離用戶。每一項(xiàng)的高度都過小,因此需要使用筆來點(diǎn)擊,或是使用指甲。位于右下角的三個(gè)圖標(biāo),或許用指甲都很難點(diǎn)到,使用筆即多 占用用戶的一只手,體驗(yàn)是直線下降的。在用戶希望連耳朵都解放的現(xiàn)在,多占用一只手是什么概念,這就意味著用戶乘車時(shí)沒有辦法握緊扶手,或者沒有辦法拎著 自己的包。另外,在手機(jī)操作時(shí),擁有一只空閑著的手,就能有更多機(jī)會(huì)處理突發(fā)事件,占用用戶的兩只手實(shí)在是不應(yīng)該的。可以說Windows Mobile的用戶體驗(yàn)是非常差勁的,幸好微軟在新的Windows Phone 7中,對界面做了巨大的改進(jìn),沒有再犯過去的錯(cuò)誤。

[!--empirenews.page--]

再來看看Android是如何做的,這個(gè)界面看起來簡潔明了,和上面的Windows Mobile相比,可以說是毫不出彩,甚至在有些人的眼里,這個(gè)界面很丑陋。但它卻是相當(dāng)好用的,圖標(biāo)很大,圖標(biāo)的間距也很大。這就決定了用戶可以使用指腹去進(jìn)行點(diǎn)擊的操作,并且點(diǎn)擊的范圍可以比較大,降低了點(diǎn)錯(cuò)的幾率。

雖然屏幕點(diǎn)擊的方式一定程度上也和屏幕的材質(zhì)有關(guān),比如電阻屏只能用筆或指甲,而電容屏允許使用指腹,有一些還可以支持多點(diǎn)觸摸。對于普通用戶來說,使用指 腹比使用指甲顯得更為常見,原因很簡單,如果圖標(biāo)很大,那么用戶會(huì)不自覺的使用指腹去點(diǎn)擊,而如果圖標(biāo)很小,那么用戶會(huì)屈起手指然后用指甲去戳屏幕。這個(gè)“屈起手指”的動(dòng)作不能被大部分的用戶所接受。因此電容屏?xí)u漸流行,而電阻屏?xí)u漸被淘汰,這完全是根據(jù)用戶的體驗(yàn),優(yōu)勝劣汰,是一件非常符合進(jìn)化論的事。

用戶體驗(yàn)還不僅僅是界面上的那些事,作為手機(jī)來說,每一個(gè)特點(diǎn)都將成為用戶體驗(yàn)可以挖掘的一部分。比如說是否有鍵盤、是否支持多點(diǎn)觸摸等。有鍵盤的手機(jī)與無 鍵盤的手機(jī),用戶在執(zhí)機(jī)時(shí)用的手勢必然不同,一個(gè)著重點(diǎn)在機(jī)身下半部分,即鍵盤上;而另一個(gè)著重點(diǎn)在整個(gè)屏幕上,換言之,手指可能在屏幕的任何一個(gè)位置活 動(dòng)。針對設(shè)備的具體情況來對應(yīng)用進(jìn)行設(shè)計(jì)也是很有必要的,目前Google為Android設(shè) 計(jì)的按屏幕大小自動(dòng)切換布局方式的框架非常有用,它改變了以往在程序的設(shè)計(jì)過程中,需要為每一種設(shè)備單獨(dú)編譯一個(gè)版本,或是僅對不同的屏幕做簡單拉伸的情 況。另外,在設(shè)計(jì)中,還需要考慮實(shí)際操作體驗(yàn),比如放大一張圖片,是使用放大按鈕,還是使用多點(diǎn)觸摸。這兩種做法都很常見,但是在一個(gè)有此需求的應(yīng)用中, 卻不能單獨(dú)的使用某一種。比較好的做法是,在程序代碼中,判斷設(shè)備是否支持多點(diǎn)觸摸,若不支持,可以顯示一個(gè)放大按鈕,而對于支持的,則在應(yīng)用第一次啟動(dòng) 時(shí),彈出一個(gè)Toast提示,告訴用戶可以多點(diǎn)觸摸從而放大圖片。

下面再說說應(yīng)用界面布局的問題,來看下面兩個(gè)截圖。

這兩個(gè)應(yīng)用同為Android下的游戲機(jī)模擬器,上面的圖是PS模擬器,可以看到虛擬按鍵的布局有些奇怪,特別是 L和R,一上一下非常不習(xí)慣。而右面的是GBA模擬器,可以看到它的按鍵中規(guī)中矩,用戶馬上就可以上手了。但是,從上手的角度來說,GBA模擬器的確簡單,但是從實(shí)用的角度來說,PS模擬器做得更好。為什么呢?原因很簡單,PS模擬器利用到了整個(gè)屏幕,而且虛擬按鍵的布局,防止了兩只手打架,也防止了屏幕下半部分由于手指的原因完全不可見的問題。通過一段時(shí)間的習(xí)慣,PS 模擬器就可以被玩得很溜。而再看GBA模擬器,只利用到了一半的屏幕不說,而且還是縱向的,雙手操作時(shí),兩只手很容易打架,相互干擾,要玩一些動(dòng)作性稍強(qiáng)的游戲幾乎不可能。雖然看起來直觀易懂,但是這樣的UI,是會(huì)被用戶所舍棄的。

在移動(dòng)平臺上,到目前為止,用戶依然沒有固定的操作習(xí)慣,而軟件的開發(fā)人員要做的事情,就是把用戶往一個(gè)簡單、明快的操作體驗(yàn)上引導(dǎo),使他們更快的學(xué)會(huì)使用軟件,并且讓他們習(xí)慣、擅長某一種或幾種操作。從某種意義上來說,蘋果的設(shè)計(jì)人員手冊已經(jīng)很好的解決了問題,iPad已經(jīng)做到了中老年人也可以輕松上手,甚至連貓都會(huì)玩。但是至少目前為止,還沒有見到適用于Android的設(shè)計(jì)手冊,開發(fā)人員或是軟件廠商也都各按自己的理解去進(jìn)行軟件的設(shè)計(jì),用戶也被迫在使用不同的軟件時(shí),適應(yīng)不同的風(fēng)格。

在未來為期不短的一段時(shí)間內(nèi),Android上應(yīng)用程序的用戶體驗(yàn)將成為一個(gè)主要的研究點(diǎn),特別是游戲類應(yīng)用。由于Android上的某些限制,開發(fā)人員較難實(shí)現(xiàn)像PSP游戲那樣的華麗效果,因此只能夠在游戲本身的游戲性上下足工夫。當(dāng)然了,等Android手機(jī)的性能再次大幅提升,電池容量再大幅提升后,可能會(huì)出現(xiàn)可以匹敵PSP游戲的華麗游戲,只是目前不應(yīng)當(dāng)過分考慮這些。

在我以前的一些文章也曾提到過,為移動(dòng)平臺做開發(fā),應(yīng)該盡可能的考慮程序的執(zhí)行效率而不是架構(gòu),因?yàn)橐苿?dòng)平臺本身通常不會(huì)有多好的配置,在有限的配置下實(shí)現(xiàn)性能最佳化是非常重要的。從另一種角度上說,iPhone 能夠用較低的配置來實(shí)現(xiàn)整機(jī)流暢運(yùn)作,也是得益于較為嚴(yán)格地針對性優(yōu)化,把硬件平臺的性能完全發(fā)揮出來,這樣做得到的結(jié)果是,iPhone的整體性能,看起來反而比一些更高配置的手機(jī)要好一些。

最后,再簡單地說一下Android的開發(fā)與其他平臺的開發(fā)有什么異同。我們知道不同的開發(fā)方式將對最終的結(jié)果產(chǎn)生不同的影響。在以往的經(jīng)驗(yàn)中,各廠家的開發(fā)工具,都在往可視化方向發(fā)展,比如說微軟的 Visual Studio,一代比一代強(qiáng)大,可視化程度越來越高。而蘋果的Xcode也是一樣,它建議用戶完全使用可視化的方案來解決一個(gè)應(yīng)用。這些固然很好,但是帶來的問題也不小。舉個(gè)簡單的例子,有一個(gè) Windows Mobile 的應(yīng)用,上面有一個(gè) ListBox,而你正試圖為該 ListBox 添加一個(gè)圖標(biāo),并試圖按每一項(xiàng)的內(nèi)容限定來改變文字顏色。能做到嗎?當(dāng)然能,但是過程卻不簡單,你必須經(jīng)歷復(fù)雜的自繪才能實(shí)現(xiàn)這一點(diǎn)。這也是常規(guī)的RAD開發(fā)中普遍遇到的問題,即開發(fā)人員不能方便地控制到應(yīng)用的每一個(gè)細(xì)節(jié)。開發(fā)框架對API的封裝在某種程度上提高了開發(fā)的效率,但是另一種程度上,它屏蔽了太多的細(xì)節(jié),而這些細(xì)節(jié)有可能就是開發(fā)人員所需要的。

而Android雖然也擁有可視的開發(fā)環(huán)境,但是它非常弱,第三方的RAD方案迄今為止也依然顯得虛弱無力,對于用慣了微軟等公司出品的高級RAD環(huán)境的人來說,可能會(huì)充滿了無奈,也可能充滿了鄙視,這種可視化算什么呢?如果僅僅從開發(fā)人員的角度來看,有利也有弊,弊端很顯然是開發(fā)效率不夠高,而事實(shí)上,由于Android采用Java語言來進(jìn)行開發(fā),其開發(fā)效率本身就不會(huì)太高。而利的部分,可能是會(huì)被很多高級工程師所喜愛的,因?yàn)樗菭奚_發(fā)效率,來換取最大的可定制性的一個(gè)典范。也許有一些剛開始學(xué)習(xí)Android開發(fā)的朋友會(huì)覺得制作界面有種種的不便,但是只要深入地學(xué)習(xí)下去,就會(huì)覺得Android的界面實(shí)現(xiàn)方式是非常領(lǐng)先的。同樣舉出上面ListBox的例子,在Android下,就可以通過一組短小精悍的代碼來自定義ListItem和相關(guān)Adapter以實(shí)現(xiàn)。[!--empirenews.page--]

我想優(yōu)秀的開發(fā)人員是應(yīng)該完全放棄RAD的,在目前的環(huán)境下,RAD幾乎沒有什么作為,反而會(huì)成為應(yīng)用分層的一個(gè)巨大的絆腳石。在RAD的環(huán)境下,要求一位開發(fā)人員對軟件的每一個(gè)部分都面面俱到,這怎么可能呢?比如說軟件界面就是應(yīng)該交由UI專員去設(shè)計(jì),數(shù)據(jù)庫部分也應(yīng)該交由相關(guān)的負(fù)責(zé)人去做,完全不可能由開發(fā)人員從頭到尾一個(gè)人搞定。如果哪個(gè)老板真的雇用了一位超級開發(fā)人員來包辦一切,那么除非那個(gè)人擁有100年的工作經(jīng)驗(yàn),不然的話項(xiàng)目做死就是活該。我想Android的開發(fā)框架已經(jīng)很好地說明了這個(gè)問題,程序資源(包括圖片、字符串、其他的外部數(shù)據(jù)等)和代碼完全分離,各部分人員各司其職,完成整個(gè)項(xiàng)目,每個(gè)部分的人員都不會(huì)有太大的壓力。并且,由于Android采用XML對界面進(jìn)行描述,使得對界面的更換也變得容易,設(shè)計(jì)師可以設(shè)計(jì)出多套界面,不論是用于UI方案評估或是在實(shí)際應(yīng)用中更換界面風(fēng)格都很方便。這也是其他移動(dòng)平臺的開發(fā)所不具備的。

最后,我想說的是,我非常想要一本類似于《Android設(shè)計(jì)手冊》的參考書,我相信很多的開發(fā)人員也非常想要。只是短期內(nèi),我們依然只能自己來研究,推測用戶可能的行為,并為此可能性做好打算。Android必定越來越成熟,而開發(fā)者們,你們做好思想準(zhǔn)備了嗎?

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉