第一篇:安卓市場審核標準(定稿)
安卓市場審核標準
軟件標準
一、軟件運行:
1、須經實機測試可順暢運行,帶有扣費陷阱/惡意侵犯用戶隱私/包含木馬后門、病毒的軟件,不予通過;
2、須基于android平臺原生開發,如J2ME打包的軟件不予通過;
二、軟件功能及內容:
1、軟件基本功能及常規設置正常;
2、不得違反國家法律或相關規定(如翻墻類工具);
3、不得包含政治敏感內容或色情淫穢內容;
4、請勿上傳與“安卓市場”有直接競爭關系的同類產品;
5、內嵌商務盈利模式的軟件,請聯系商務確認后再做提交;
6、無任何強制用戶行為的設置,如必須點擊廣告否則無法退出、或須下載推廣產品獲得積分方可使用軟件等均屬違規;
三、軟件名稱:
1、軟件項目名稱無特殊情況即與軟件名稱(中文)一致,如修改軟件名稱(中文)須一并修改軟件項目名稱;
2、軟件名稱須為中文或品牌性質的英文名稱;不得含有固件信息、版本信息、及其他無關熱門詞匯(如QQ/微博/百度等)及過長的廣告宣傳語;如為英文軟件時,須同時填寫 中英文名稱;
四、軟件描述:
1、準確描述軟件相關信息及功能,實際功能和描述嚴重不符的軟件,不予通過,2、不得夾帶粗言穢語,不含競品名稱或其他與軟件題材無關的熱門關鍵詞
3、不含外鏈,不含電話號碼、QQ等聯系信息,如有需求請自行在軟件關于中添加;
五、軟件其他信息
1、語言類別須與實際測試情況相符,如英文軟件須標注語言標簽為“英文”,2、分類須與實際軟件內容分類相符,不得隨意設置;
六、軟件截圖
1、截圖不少于3張,其中個別小部件工具放寬至2張,系統輔助工具等無界面軟件允許無截圖;超過5M的游戲須提供3-5張截圖
2、截圖中須至少1張展示軟件運行中的畫面(避免只截圖啟動畫面或菜單)
3、軟件截圖請勿帶競品工具標識(如豌豆莢);
七、為了保證廣大開發者的資源展示空間,請勿批量上傳或頻繁更新資源,感謝配合。
第二篇:安卓學習心得
Android學習心得
-----093380117
計算機應用(1)
張峰
1.關于Activity
1.在一個Activity中使用多個View
如果把Activity看作MVC中的Control?它負責管理UI和接受事件(包括用戶的輸入),雖然說一個Activity通常對應一個屏幕,但事實上,我們是可以只用一個Activity管理多個不同的View來實現簡單的邏輯。首先,我們增加一個新的資源描述layout/second.xml。
除了一個“Hello中國”以外,增加一個按鈕可以返回前一個界面。然后,在代碼中我們要為helloTwo增加兩個方法,setViewOneCommand和setViewTwoCommand,分別處理一下在不同界面時,從資源里加載組件并為組件綁定一個事件處理器最后,我們需要在onCreate的時候,也就是啟動后的main界面上設置一下按鈕事件處理器。2.還是回到正道上,多個Activity之間的跳轉
Android中提供一個叫Intent的類來實現屏幕之間的跳轉,按文檔的說法,似乎他們也建議采用這種方法,Intent的用法比較復雜,現在我先看看它最簡單的用法。
這里的跳轉功能用Intent來操作,它的最簡單用法就是用函數setClass()設置跳轉前后兩個Activity類的實例,然后調用Activity自己的startActivity(intent)即可。最后一句finish()表示將當前Activity關掉(如果不關掉會如何?你可以自己試一下看效果,事實上有時我們是不需要關掉當前Activity的)。
然后,我們同樣弄一個Activity類HelloThreeB,代碼與前面的差不多,只是將setClass的兩個參數反一下,這樣就可以簡單地實現在兩個Activity界面中來回切換的功能了。
2.關于 Intent的使用
Intent分為兩大類,顯性的(Explicit)和隱性的(Implicit)。一般來說,intent要定位事件的目的地,無外乎需要以下幾個信息: 1.種類(category),比如我們常見的 LAUNCHER_CATEGORY 就是表示這是一類應用程序。
2.類型(type),在前面的例子中沒用過,表示數據的類型,這是隱性Intent定位目標的重要依據。
3.組件(component),前面的例子中用的是setClass,不過也可以用setComponent來設置intent跳轉的前后兩個類實例。4.附加數據(extras),在ContentURI之外還可以附加一些信息,它是Bundle類型的對象。
其實,如果是在一個應用內部,這種隱性的intent實在有點別扭,個人覺得,這種松藕合的實現方法,只適用于那些較大的系統或者多個不同的應用之間的調用,可手機上又有什么“較大”的系統呢?無非是可以與不同來源的多個應用之間方便地互操作而已,那么會是什么樣的場景呢?比如,給QQ好友發送gmail郵件,用GoogleMap查找QQ好友所在的位置?看上去挺不錯的。
關于這個ContentProvider,其實還有話說,它主要是的那些看似數據庫操作的方法我們都沒真正去實現呢。不過今天就到這里了,等下回再去研究吧。
3.關于ListActivity
準備一個List對象并借助Adapter就可以構造出一個列表。重載onListItemClick方法可以響應選擇事件,利用第一個參數可以訪問到這個ListView實例以得到選中的條目信息。這里有一點要說明的,就是如果更簡單的話,其實連那個setContentView都可以不要了,Android也會自動幫我們構造出一個全屏的列表。但是本例中我們需要一個TextView來顯示選中的條目,所以我們需要一個layout.mainb描述一下這個列表窗口。
這里需要注意的是那個ListView的ID,是系統自定義的android:list,不是我們隨便取的,否則系統會說找不到它想要的listview了。然后,在這個listview之外,我們又增加了一個TextView,用來顯示選中的條目。
再來說說這里用到的ArrayAdapter,它的構造函數中第二個參數是一個資源ID,ArrayAdapter的API文檔中說是要求用一個包含TextView的layout文件,平臺用它來顯示每個選擇條目的樣式,這里的取值是R.layout.list_row,所以,我們還有一個list_row.xml文件來描述這個布局,相當簡單。
從ArrayAdapter上溯到BaseAdapter,發現還有幾個同源的Adapter也應該可以使用,象SimpleAdapter和CursorAdapter,還是做個例子來實驗一下吧。
然后,在HelloTwoB中的onCreate函數中,修改代碼,有幾個不同:items的元素是HashMap實例,這是一點變化,然后構造函數除了要求items以外,還要求提供一個string[]來說明用hash表中的哪個字段顯示在列表中,而后是一個資源ID的數組。
因為單純的CursorAdapter是抽象類,所以我用的是它的子類SimpleCursorAdapter,很好理解,先用ContentResolver查詢通訊簿得到一個游標,然后告訴SimpleCursorAdapter要用其中的People.NAME作為顯示項來構造出一個adapter即可。4.關于Dialog
注意到android.app包下除了Dialog(可用于制作復雜的對話框)以外,還包括了幾個系統定義好的對話框類,如DatePickerDialog、TimePickerDialog及AlertDialog。
其中AlertDialog我上回用過一次,基本上就那樣子了,今天看看另外兩個對話框的使用吧。
很簡單的,無非是需要一個OnDateSetListener接口的實現而已,在它里面的dateSet方法中就可以得到選擇的日期了。而TimePickerDialog與DatePickerDialog使用如出一轍。
看看另一個ProgressDialog的用法吧,這個類與AlertDialog一樣包含了多個static的方法,所以使用起來是非常方便的。比如說,如果我們需要用它來表示一個長時間的操作。
5.關于Service和Notification
大略地看了一下android.app下的Service類,覺得它與Activity非常相似,只是要注意幾個地方:
1.生命周期,Service的從onCreate()->onStart(int,Bundle)->onDestroy()顯得更為簡單。但是它的onStart是帶參數的,第一個ID可用來標識這個service,第二個參數顯示是用來傳遞數據的了。比較Activity,傳遞數據的Bundle是在onCreate就帶進入的。
2.Service的啟動由Context.startService開始,其實Activity或者Service都是Context的派生類。結束于Context.stopService()或者它自己的stopSelf()。
3.Service還有一個與Activity不一樣的是它可以由另一個Context去綁定一個已存在的Service。就是這個方法Context.bindService(),被綁定的Service要求是已經onCreate了但可以沒有onStart。在Service類中有個抽象方法getBinder()可以得到這個IBinder對象。關于這方面的細節,以后再看,這里只做個記錄罷。
4.與Service有關的還有一個安全的問題,可以在AndroidManifest.xml中用
6.GridView與ImageView
簡單一點吧,就瞧瞧那個Grid的效果,Android提供了一個GridView,不過從APIDemo中看來,它似乎與PC上的GRID差別還是挺大的,更像那個IconView的感覺。不知道Android中如何實現表格界面?雖然在移動終端上,表格一般不會有誰使用,大家似乎更傾向于使用ListView,而Android對于ListView則有更簡單的實現ListActivity。
很簡單,只要重載幾個方法就可以了,關鍵是那個getView方法,它負責構建出每個單元格中的對象實例。這里我們構造的是一個ImageView實例。
然后就是同樣的將這個Adapter賦給GridView即可,大家可以看看效果,注意在做這個例子前,先放幾個小圖片到res/drawable目錄下,buildproject一下就可以得到那個R.drawable.a了(這里的a是圖像文件名,如a.png)。
在getView方法中我們使用了ImageView類,這又是一個widget。除了上面用到的幾個方法以外,還有以下幾個方法值得注意: 與圖像來源有關的方法,我們只用了資源文件的方式。
還是習慣性跑題了,其實,我是想通過我對這個類的無數次Debugger跟進,說說它的多線程異步處理的解決策略的。他的基本策略如下: 1.當你實例化一個AsyncQueryHandler類時(包括其子類...),它會單件構造一個線程(后面會詳述...),這個線程里面會構建一個消息循環。
2.獲得該消息循環的指針,用它做參數實例化另一個Handler類,該類為內部類。至此,就有了兩個線程,各自有一個Handler來處理消息。3.當調用onXXX的時候,在XXX函數內部會將請求封裝成一個內部的參數類,將其作為消息的參數,將此消息發送至另一個線程。4.在該線程的Handler中,接受該消息,并分析傳入的參數,用初始化時傳入的ContentResolver進行XXX操作,并返回Cursor或其他返回值。
5.構造一個消息,將上述返回值以及其他相關內容綁定在該消息上,發送回主線程。
6.主線程默認的AsyncQueryHandler類的handleMessage方法(可自定義,但由于都是內部類,基本沒有意義...)會分析該消息,并轉發給對應的onXXXComplete方法。
7.用戶重寫的onXXXComplete方法開始工作。
這就是它偷偷摸摸做過的事情,基本還是很好理解的。我唯一好奇的是它的線程管理方式,我猜測他是用的單件模式。第一個AsyncQueryHandler的實例化會導致創建一個線程,從此該線程成為不死老處男,所有的ContentResolver相關的工作,都由該線程統一完成。個人覺得這種解決方式很贊。本來這個線程的生命周期就很難估量,并且,當你有一個ContentProvider的請求的時候,判斷你會做更多的類似操作并不過分。就算錯了,花費的也只是一個不死的線程(與進程同生死共存亡...),換來的卻是簡單的生命周期管理和無數次線程生死開銷的節約。同時另外一個很重要的問題,他并會涉及到單件中數據同步的問題,每個類都有各自的Handler類,彼此互不干擾,分發可以分別進行。當多個數據請求的時候,在同一個ContentResolver上進行的可能微乎其微,這就避免了堵塞??偠灾?,這套解決辦法和Android的整體設計算是天作之合了。
所以建議,如果你有什么非ContentProvider操作,卻需要異步多線程執行的話,模擬一套,是個不錯的策略,當然,具體情況具體分析,生搬硬套是學不好馬列主義的。
7.顯示控件使用
Android的界面顯示同樣也是基于控件的。通常是用View(包括ViewGroup)控件配上XML的樣式來做的。具體細節不想說了,可以參考 Samples里的ApiDemos/View,和View的Doc,以及Implementing a UI這篇Doc。其他還有很多,感覺算是SDK講述的最多的內容。
從控件的使用上,和網頁的設計類似,盡量用parent_width之類的抽象長度,用Theme來做風格,抽取所有的字串等信息做本地化設計。相關內容參看Implementing a UI就好。
一類比較重要的是數據綁定控件。如果做過ASP.Net會從中看到很多類似的地方。一個支持數據綁定的控件,比如ListView??梢酝ㄟ^一個 ListAdapter綁定到一個數據源上。ListAdapter是一個抽象類,主要的實現類包括SimpleAdapter和 SimpleCursorAdapter。前者是綁定一個靜態的Array,后者是綁定一個動態的Cursor。Cursor前面說過,是一個指向數據源的隨機迭代器,將View綁定到Cursor通常要設置這樣幾個參數。一個是每一行的樣式,稱作Row Layout,其實就是一個普通的Layout的XML文件。還有就是一個列和現實控件的對應關系。那個控件顯示哪個列的值,這是需要配置的。為了定制一個良好的數據顯示控件,最簡單你可以定制很PP的Row Layout,復雜一點就是可以重載綁定控件View,或者是適配器ListAdapter。如果是一個數據顯示密集的應用,且你對UI有些追求,這個工作估計是必不可少的。
一個主要用于顯示數據內容的Activity,可以選擇派生自ListActivity。它提供了一個具有ListView 的Layout,還有simple_list_item_1, simple_list_item_2, two_line_list_item等默認的Row Layout,還有一些比較不錯的API,和可供響應選擇Item的事件??梢詽M足你比較基礎的需求。如果你覺得只有一個ListView的界面太突兀,你可以為這個ListActivity指定一個Layout,需要注意的是,你需要提供一個id為@android:id/list的ListView控件,避免Activity在內部偷偷尋找該控件的時候失敗。
除了這些要求,做好UI還有注意易用性和效率。快捷鍵是一個比較不錯的選擇,在 Activity中調用setDefaultkeyMode(SHORTCUT_DEFAULT_KEYS),可以開啟快捷鍵模式,然后你可以將菜單綁定到指定快捷鍵上就OK了。個人覺得Tip也是一個比較重要的東西,但目前觀察看來,這個東西只能夠自己提供了。界面的動態性有時候是不可避免的,比如說菜單就是一個需要經常根據光標位置提供不同的選項。這個東西Android很人道的考慮到了,你可以參看NodeList這個Sample。它采取的應該是一個靜態模擬動態的方式,這樣有助于提高速度。你也可以利用ViewInflate,動態從一個XML創建一個控件。成本據Doc說很大,不到萬不得已不要使用。
8.Intent消息傳遞
在前面寫Android的ContentProvider時候,可以看到那是基于觀察者模式的一個消息傳遞方法。每一個Cursor、ContentResolver做為一個小的注冊中心,相關觀察者可以在這個中心注冊,更新消息由注冊中心分發給各個觀察者。而在MFC或Winform中,都會形成一個消息網,讓消息在網中流動,被各節點使用、吃掉或者在出口死掉。
相比之下,我個人覺得基于Intent的Android核心消息傳遞機制是有所不同的。它應該會有一個全局性的注冊中心,這個注冊中心是隱性的,整個Android系統中就那么一個。所有的消息接收者,都被隱形的注冊到這個中心。包括Activity,Service和IntentReceiver。其實說隱形注冊是不確切的,所有注冊都還是我們手動告訴注冊中心的,只是與傳統的方式不一樣,我們通常不是通過代碼,而是通過配置文件來做。在應用的Manifest中,我們會為一些Activity或Service添加上Intent-filter,或在配置文件中添加
當程序有一個消息希望發出去的時候,它需要將消息封裝成一個Intent,并發送。這時候,應該是有一個統一的中心(恩,有可能Android底層實現的時候不是,但簡單這樣看是沒問題的...)接受到這個消息,并對它進行解析、判定消息類型(這個步驟降低了耦合...),然后檢查注冊了相匹配的filter或receiver,并創建或喚醒接收者,將消息分發給它。這樣做有很多好處。雖然這種傳遞有的時候不如點對點的傳遞快(這有些需要速度的地方,我們看到Android會通過直接通信來做),但有時候又因為它只經過一跳(姑且這么叫吧...),比復雜的流動又要更快。更重要的是,它耦合性低,在手機平臺這種程序組件多變的條件下使用十分適合。并且它可以很容易實現消息的精確或模糊匹配,彈性很大。(我個人曾想在開發一個C++二次平臺的時候引入這樣的機制,但在C++中,建立一套完整的數據marshal機制不容易,相比之下,用java來做會簡單很多...)
恩,廢話說了很多,具體講講Android中Intent的使用。當你有一個消息需要傳遞,如果你明確知道你需要哪個Activity或者其他Class來響應的話,你可以指定這個類來接受該消息,這被稱為顯性發送。你需要將Intent的class屬性設置成目標。這種情況很常見,比如startActivity的時候,會清楚當前Activity完了應該是哪個Activity,那就明確的發送這個消息。
但是,有的時候你并不確定你的消息是需要具體哪個類來執行,而只是知道接收者該符合哪些條件。比如你只需要有一個接收者能顯示用戶所選的數據,而不想制定某個具體的方法,這時候你就需要用到隱形發送(傳統上,我們可能會考慮用多態,但顯然這種方式更為靈活...)。在Android中,你可以為Intent指定一個action,表示你這個指令需要處理的事情。系統為我們定義了很多Action類型,這些類型使系統與我們通信的語言(比如在Activity里面加一個Main的filter,該activity就會做成該應用的入口點),當然你也可以用于你自己的應用之間的通信(同樣當然,也可以自定義...)。強烈建議,在自己程序接收或發出一個系統action的時候,要名副其實。比如你響應一個view動作,做的確實edit的勾當,你發送一個pick消息,其實你想讓別人做edit的事,這樣都會造成混亂。當然只有Action有時候是不夠的,在Android中我們還可以指定catalog信息和type/data信息,比如所有的顯示數據的Activity,可能都會響應View action。但很多與我們需要顯示的數據類型不一樣,可以加一個type信息,明確的指出我們需要顯示的數據類型,甚至還可以加上一個catalog信息,指明只有你只有按的是“中鍵”并發出這樣的消息才響應。從上面可以看出,Android的Intent可以添加上class, action, data/type, catalog等消息,注冊中心會根據這些信息幫你找到符合的接收者。其中class是點對點的指示,一旦指明,其他信息都被忽略。Intent中還可以添加key/value的數據,發送方和接收方需要保持統一的key信息和value類型信息,這種數據的marshal在java里做,是不費什么力氣的。
Android的Intent發送,可以分成單播和廣播兩種。廣播的接收者是所有注冊了的符合條件的IntentReceiver。在單播的情況下,即使有很多符合條件的接收者,也只要有一個出來處理這個消息就好(恩,個人看法,沒找到確切條款或抉擇的算法,本來想實驗一下,沒來得及...),這樣的情況很容易理解,當你需要修改某個數據的時候,你肯定不會希望有十個編輯器輪流讓你來處理。當廣播不是這樣,一個receiver沒有辦法阻止其他receiver進行對廣播事件的處理。這種情況也很容易理解,比如時鐘改變了,鬧鐘、備忘錄等很多程序都需要分別進行處理。在自己的程序的使用中,應該分清楚區別,合理的使用。
9.ContentProvider數據模型
數據庫操作
從我目前掌握的知識來看,SQLite比較輕量(沒有存儲過程之類的繁雜手段),用起來也比較簡單。實例化一個SQLiteDatabase類對象,通過它的APIs可以搞定大部分的操作。從sample中看,Android中對db的使用有一種比較簡單的模式,即派生一個 ContentProviderDatabaseHelper類來進行SQLiteDatabase對象實例的獲取工作。基本上,ContentProviderDatabaseHelper類扮演了一個singleton的角色,提供單一的實例化入口點,并屏蔽了數據庫創建、打開升級等細節。在ContentProvider中只需要調用ContentProviderDatabaseHelper的openDatabase方法獲取SQLiteDatabase的實例就好,而不需要進行數據庫狀態的判斷。URI 像進行數據庫操作需要用SQL一樣,對ContentProivder進行增刪改查等操作都是通過一種特定模式的URI來進行的(ig:content: //provider/item/id),URI的能力與URL類似,具體細節可以查看SDK。建立自己的ContentProvider,只需要派生 ContentProivder類并實現insert, delete, update等抽象函數即可。在這些接口中比較特殊的是getType(uri)。根據傳入的uri,該方法按照MIME格式返回一個字符串(==!沒聽過的詭異格式...)唯一標識該uri的類型。所謂uri的類型,就是描述這個uri所進行的操作的種類,比如content://xx/a與 content://xx/a/1不是一個類型(前者是多值操作,后者是單值),但content://xx/a/1和content://xx/a/2 就會是一個類型(只是id號不同而已)。
在ContentProvider通常都會實例化一個ContentURIPraser來輔助解析和操作傳入的URI。你需要事先(在static域內)為該ContentURIPraser建立一個uri的語法樹,之后就可以簡單調用 ContentURIPraser類的相關方法進行uri類型判斷(match方法),獲取加載在uri中的參數等操作。但我看來,這只是在使用上簡化了相關操作(不然就需要自己做人肉解析了...),但并沒有改變類型判定的模式。你依然需要用switch...case...對uri的類型進行判斷,并進行相關后續的操作。從模式來看,這樣無疑是具有強烈的壞味道,類似的switch...case...代碼要出現N此,每次一個 ContentProvider做uri類型的增減都會需要遍歷修改每一個switch...case...,當然,如果你使用模式(策略模式...)進行改造對手機程序來說無疑是崩潰似的(類型膨脹,效率降低...),所以,只能是忍一忍了(恩,還好不會擴散到別的類中,維護性上不會有殺人性的麻煩...)。增刪改查
ContentProvider 和所有數據源一樣,向外提供增刪改查操作接口,這些都是基于uri的指令。進行insert操作的時候,你需要傳入一個uri和 ContentValues。uri的作用基本就限于指明增減條目的類型(從數據庫層面來看就是table名),ContentValues是一個 key/value表的封裝,提供方便的API進行插入數據類型和數據值的設置和獲取。在數據庫層面上來看,這應該是column name與value的對應。但為了屏蔽ContentProvider用戶涉及到具體數據庫的細節,在Android的示例中,用了一個小小的模式。它為每一個表建一個基于BaseColumn類的派生類(其實完全可以不派生自BaseColumn,特別當你的表不基于默認的自動id做主鍵的時候),這個類通常包括一個描述該表的ContentURI對象和形如 public static final TITLE = “title”這樣的column到類數據的對應。從改變上角度來看,你可以修改column的名字而不需要更改用戶上層代碼,增加了靈活性。insert方法如果成功會返回一個uri,該uri會在原有的uri基礎上增加有一個row id。對于為什么使用row id而不是key id我想破了腦袋。到最后,我發現我傻了,因為ContentProvider不一定需要使用數據庫,使用數據庫對應的表也可以沒有主鍵,只有row id,才能在任何底層介質下做索引標識。
但,基于row id在刪除和修改操作是會造成一定的混亂。刪除和修改操作類似。刪除操作需要傳入一個uri,一個where字串,一組where的參數(做條件判定...),而修改操作會多一個ContentValues做更新值。著兩個操作的uri都支持在末尾添加一個row id。于是混亂就出現了。當在where參數中指明了key id,而在uri中提供了row id,并且row id和key id所指函數不一致的時候,你聽誰的?示例代碼中的做法是完全無視row id(無語...),如此野蠻的方式我估計也只能在示例中出現,在實際中該如何用,恩,我也不知道。幸運的是,我看了下上層對 ContentProvider的刪除操作,其實都不會直接進行,而是通過調用Cursor的delete方法進行,在這前提下,我想Cursor會處理好這些東西吧。
最后一個操作是查詢操作,可以想見,查詢的參數是最多的,包括uri和一組條件參數。條件參數類型和標準的sql類似,包括 sort, projection 之類的。從這些參數到sql語句的生成,可以尋求QueryBuilder類的幫助,它提供了一組操作接口,簡化了參數到sql的生成工作,哪怕你不懂 sql都完全沒有問題(這話說的我自己都覺得有點懸...)。查詢返回一個Cursor。Cursor是一個支持隨機讀寫的指針,不僅如此,它還提供了方便的刪除和修改的API,是上層對ContentProvider進行操作一個重要對象,需要仔細掌握(Cursor還可以綁定到view上,直接送顯,并與用戶進行交互,真是程序越往上,封裝越好,工作越機械沒有復雜性了...)。數據模型
在與界面打交道的Cursor、ContentResolver等數據操作層中,大量采用觀察者模式建立數據層與顯示層的聯系。一個顯示層的視圖,可以做成某一種觀察者注冊到Cursor或ContentResolver等數據中間層中,在實現底層ContentProvider中,我們需要特別注意在對數據進行修改操作(包括增刪改...)后,調用相應類型的notify函數,幫助表層對象進行刷新(還有一種刷新方式是從一個view發起的)??梢钥吹?Android的整體數據顯示框架有點像MVC的方式。Cursor、ContentResolver相當于控制層,數據層和顯示層的交互通過控制層來掌管,而且控制層很穩定不需要特別定制,通常工作只在定制數據層和顯示層空間,還是比較方便和清晰的。
10.學習感想
通過這學期對安卓的學習,大概了解了以上一些知識,對安卓有了初步的了解,這幾個月給我的東西我想用有形的和無形的兩部分概敘,形的當然就是技術水平的長進,雖然其中肯定有很多的不足,相信慢慢會體會到。
第三篇:安卓實習報告
通信與電子信息專業實訓報告
項目名稱:基于android的游戲開發
班 級 10通信1班
姓 名
學 號
指導教師
成 績
實訓時間:年月日—
目錄
一、實訓目的及其意義............................................3 1.1、目的及意義..............................................3 1.2、研究現狀................................................3
二、實訓主要任務、重點及難點....................................4 2.1、任務....................................................4 2.2、重點內容及實現途徑......................................4
三、實訓具體內容及完成的主要工作................................5 3.1、認識基礎開發............................................6 3.2、了解數據存儲............................................6 3.3、總體實訓過程............................................7
四、實際遇到的困難,解決問題的方法和措施........................8
(一)、所遇問題.................................................8
(二)、解決方法與措施...........................................9
五、心得體會....................................................9
一、實訓目的及其意義 1.1、目的及意義 了解現階段互聯網發展主流,了解移動互聯網,認識移動互聯網的發展與展望,認識android,了解基于android的應用軟件開發方法及其商業流程。把理論與實際結合,通過對理論知識的理解,領悟從而運用到生活實際鞏固所學的知識,提高對實際生活的認識,積累經驗。使學生在此期間能夠初次體會到實際生產中的種種技能與經驗,完成一項項目鍛煉獨立思考及團隊合作能力。使學生們進一步加深對所學知識的理解,理論聯系實際,鞏固所學有關計算機基礎理論知識和基本技能,學習有關計算機最新技術方面的應用,增強學生對計算機在社會生活,社會生產中應用的感性認識,深入了解計算機在各個領域中的應用狀況。生產實習是學校教學的重要補充部分,是區別于普通學校教育的一個顯著特征,是教育教學體系中的一個不可缺少的重要組成部分和不可替代的重要環節。它是與今后的職業生活最直接聯系的,學生在生產實習過程中將完成學習到就業的過渡,因此生產實習是培養技能型人才,實現培養目標的主要途徑。它不僅是校內教學的延續,而且是校內教學的總結。生產實習一方面鞏固了書本上學到的理論知識,另一方面,可獲得在書本上不易了解和不易學到的生產現場的實際知識,使我們在實踐中得到提高實訓環節對于提高學生的綜合能力和全面素質具有重要意義。1.2、研究現狀 android 是google開發的基于linux平臺的開源手機操作系統。它包括操作系統、用戶界面和應用程序 —— 移動電話工作所需的全部軟件,而且不存在任何以往阻礙移動產業創新的專有權障礙。google與開放手機聯盟合作開發了 android,這個聯盟由包括中國移動、摩托羅拉、高通、宏達電和 t-mobile 在內的 30 多家技術和無線應用的領軍企業組成。google通過與運營商、設備制造商、開發商和其他有關各方結成深層次的合作伙伴關系,希望借助建立標準化、開放式的移動電話軟件平臺,在移動產業內形成一個開放式的生態系統。android主要使用于移動設備,如智能手機和平板電腦,由google公司和開放手機聯盟領導及開發。尚未有統一中文名稱,中國大陸地區較多人使用“安卓”或“安致”。android操作系統最初由andy rubin開發,主要支持手機。2005年8月由google收購注資。2007年11月,google與84家硬件制造商、軟件開發商及電信營運商組建開放手機聯盟共同研發改良android系統。隨后google以apache開源許可證的授權方式,發布了android的源代碼。第一部android智能手機發布于2008年10月。android逐漸擴展到平板電腦及其他領域上,如電視、數碼相機、游戲機等。2011年第一季度,android在全球的市場份額首次超過塞班系統,躍居全球第一。2012年11月數據顯示,android占據全球智能手機操作系統市場76%的份額,中國市場占有率為90%。目前基于android的移動終端上的軟件應用開發很火熱,android平臺的開發已越來越強大。android是一種以linux為基礎的開放源碼操作系統,主要使用于便攜設備。android操作系統最初由andy rubin創辦,最初只支持手機。2005年由google收購注資,并拉攏多家制造商組成開放手機聯盟(open handset alliance)開發改良,逐漸擴展到到平板電腦及其他領域上。
二、實訓主要任務、重點及難點 2.1、任務
認識移動互聯網,了解移動互聯網的開發,認識及了解android,在給定時間內完成基于android平臺的游戲項目的開發,實現預想游戲效果,熟悉項目開發的商業流程,給出游戲全套文檔及代碼。
2.2、重點內容及實現途徑 2.2.1、重點內容:熟悉游戲開發代碼,了解項目流程,對android游戲開發有基本了解。2.2.2、實現途徑:
所需運行硬件環境:
安卓系統2.2以上 3.5寸以上移動設備
軟件開發環境的配置:
(1)配置java程序開發環境
(2)安裝并漢化eclipse(jdk)(3)android sdk的安裝
(4)adt的安裝及配置
(5)android模擬器的配置
(6)office2003以上版本的軟件(繪圖visio)然后運用eclipse完成項目代碼的編寫,運行與調試; 最終在實體終端上進行測試,最終完成項目
三、實訓具體內容及完成的主要工作
實訓前期,有老師給我們講解了現階段移動互聯網的發展,了解移動互聯網的發展主流,說明了現階段移動互聯的發展重要性。老師著重給我們講解了android的發展,以及現階段移動互聯中android所扮演的角色。接下來我們將針對基于android的游戲開發進行學習,由于時間的原因,我們主要了解了一下游戲開發的基本項目流程,具體的操作將在實訓過程中一一講解驗證。
接下來老師為我們講解了實訓的具體內容,對于一個游戲開發項目,首先我們需要進行游戲開發的前期準備,主要是游戲開發環境的配置,以及團隊開發過程中的任務分配,之后緊張的游戲項目開發拉開了帷幕。在第一天我們主要學習了eclipse軟件的使用,包括游戲工程的創建等等。并且針對eclipse中的 android項目結構進行了講解:android項目結構:src/ java原代碼存放目錄 gen/ 自動生成目錄 gen 目錄中存放所有由android開發工具自動生成的文件。目錄中最重要的就是r.java文件。這個文件由android開發工具自動產生的。res/ 資源(resource)目錄 在這個目錄中我們可以存放應用使用到的各種資源,如xml界面文件,圖片或數據。assets資源目錄android除了提供/res目錄存放資源文件外,在/assets目錄也可以存放資源文件。androidmanifest.xml 項目清單文件。篇二:android實習報告
實習報告
實習目的:
生產實習是計算機科學與技術專業重要的實踐性教學活動,其目的是使學生們進一步加深對所學知識的理解,理論聯系實際,鞏固所學有關計算機基礎理論知識和基本技能,學習有關計算機最新技術方面的應用,增強學生對計算機在社會生活,社會生產中應用的感性認識,深入了解計算機在各個領域中的應用狀況,學生在實習的同時,進行一定的社會實踐與調查活動,對于提高學生的綜合能力和全面素質具有重要意義。
實習內容: android主要有四大組件,分別為:activity 活動、service 服務、broadcast receivers 廣播接受者、content provider 內容提供者。還有上激活組件intent。1.activity activity就是一個用戶可以直接接觸并看到的窗口,當新建一個android project后可以
看到在工程文件下的src中有一個已建好的java類firstactivity,系統也會自動為他配備一個布局文件main.xml,并在androidmanifest中對此activity進行注冊。
用戶想要自己創建一個activity,首先創建一個java類繼承自activity,可以為他配備一個布局文件用來顯示activity創建后的布局。最后在主配置文件manifest.xml中對創建的activity進行注冊,這一步是必不可少的,沒有注冊activity無法運行。在manifest.xml中會有許多的activity,但系統一次只能運行一個activity,因此必須修選定一個最先運行的activity。在注冊activity是加入
/files目錄,如: /data/data/cn.itcast.action/files/itcast.txt,通過點擊eclipse菜單“window”-“show view”-“other”,在對話窗口中展開android文件夾,選擇下面的file explorer視圖,然后在file explorer視圖中展開/data/data/
/files目錄就可以看到該文件。openfileoutput()方法的第二參數用于指定操作模式,有四種模式android有一套自己的安全模型,當應用程序(.apk)在安裝時系統就會分配給他一個userid,當該應用要去訪問其他資源比如文件的時候,就需要userid匹配。默認情況下,任何應用創建的文件,sharedpreferences,數據庫都應該是私有的(位于/data/data/
/files),其他程序無法訪問。除非在創建時指定了context.mode_world_readable或者context.mode_world_writeable,只有這樣其他程序才能正確訪問。
實習流程: 2月18——2月27日,老師對于android開發進行了詳細的講解,其內容包括:android 的背景介紹,發展過程,自身的優勢與不足.android的控件、布局、activity、service等一系列基礎知識,對整個android的開發有了大致的了解 2月28日——3月2日: 學生自己開發android 3gabs項目,老師答疑及驗收
實習心得:
時間過的飛快,半個月的實習就要結束了,在這次實習中我們不僅學習了相關的專業知識而且讓我對android系統又有了一個更加深入的了解,它也是我們計算機專業的一個新的方向并且發展很迅速,為了今后的發展我們還需不斷努力學習!我國的信息產業還很落后,隨著社會的發展和國家的支持,手機上網是社會發展的趨勢,到時候手機上網將無處不在!之前我對android系統的了解之停留在應用的層次上,對于更深層次的了解是很少的,通過這次實習,讓我對android系統有了一個更深層次的了解,同時它頁使我意識到無論朝哪個方向發展,主要還是要扎實深刻地學習,同時也得不斷努力探索!it業發展速度一直都是相當驚人的,不想被社會淘汰,我們就得必須不斷地學習,現在的社會不再是一勞永逸,其他行業也是如此,我們必須不斷地拿知識來武裝自己,不然被淘汰那是肯定的!現在就業難原因其實在于競爭的家具,為了在競爭中得到成功,我們必須時時刻刻學習,還學到了很多做人做事的道理,不僅懂得了要想在計算機這一行立足必須具備扎實的技術理論知識,還必須學會與人溝通,合作的能力,同時更懂得了嘗試的重要性,很多事情不是聽說是困難的它就是困難的,只有親自去做親自去體會才知道,其實它并沒有那么困難,這就是實踐的重要性!無論做什么事情都必須要堅持,只有堅持下去,才會成功!事在人為,就怕不做!我們不能怕失敗,關鍵是要從失敗中總結經驗,帶著勇氣,帶著自信,堅持不懈,踏踏實實。這一次的實習是短暫的,但我收獲良多?;仡櫼郧八哌^的路,太多的無奈和迷茫,這次實習就像是我人生道路上的航標,為我指明了前景的方向,是我對自己的前途充滿了信心,我不僅知道了在人生的岔道口更適合朝哪個方向前進!更知道了在今后的道路上怎么去武裝自己!
實習結果:篇三:android生產實習報告
生產實習報告
一 實習目地
生產實習是把理論與實際結合,通過對理論知識的理解,領悟從而運用到生活實際,鞏固所學的知識,提高對實際生活的認識,積累經驗。同時生產實習也是大學生以學生身份到工作者身份的一個重要過度階段。在此期間,學生能夠初次體會到實際生產中的種種技能與經驗。完成一項項項目,能體現出獨立思考能力。android生產實習對目前應用現狀進行了分析與比較,進而研究分析了android平臺的系統架構和組件模型,在此基礎上,基于android平臺設計和開發,實現對android編程的理解與應用,特別是在對于控件的應用產生很深的理解。android平臺是目前最普遍的手機應用平臺,android實習可以讓我們與時代最新最廣泛的軟件開發聯系起來,鍛煉我們的學習能力,并且讓我們可以更加人性化,清晰的為用戶考慮。
二 實習內容
此次實習是對android的簡單的應用與開發,也是對android各個控件的學習與實踐。在java的環境中對界面,應用進行編程。本次實習重點完成了安卓開發計算器、安卓開發學生注冊界面、安卓開發音樂播放器和安卓開發游戲連連看這四個項目。
做學生注冊界面的時候學習了linearlayout,tablelayout, absolutelayout, relativelayout四種布局,分別為線型布局,表格布局,絕對布局和相對布局,并知道了如何通過這四種布局的相互嵌套來使程序的界面更加的友好,更加的讓用戶接受。并簡單的了解了安卓目錄下src,gen,res等文件夾中的文件在項目中的作用,學習了切換界面的類intent。
然后學習了button,textview,seekbar等android開發的控件,并且將這些控件都運用到了所作的學生注冊界面中。
做音樂播放器時學習了關于音樂文件的調用,也學習了在主文件main.java中先創建多媒體對象后,然后通過sd卡的文件路徑來創建一個播放資源,然后在創建按鈕對象,同時添加6個按鈕對象創造各自的偵聽方法,我們用listactivity來布局播放界面,用imagebutton來實現播放器的開始,暫停的操作。最后在開發連連看游戲時,將前面所學的知識進行綜合與加深,也學習到了新的函數與控件,該游戲主要包括classgameview(游戲視類,處理游戲中出現的情況,包括界面生成,算法等)classgameactivity(處理游戲中的消息提示),classstartactivity(游戲菜單設計),classsetactivity(菜單中游戲難度設定)這些類。比如用random函數來對連連看進行重排列,還有用menu對游戲里的功能進行操作,還有用之前學到關于多媒體對象的調用將連連看游戲進行配樂。并且選用了網格對游戲界面進行了規劃,以及對于相同圖片的的消去,必須滿足情況:1,圖片相同;2,兩個圖片之間必須沒有障礙物,可以用若干個垂直的直線連接起來;3,連接兩個圖片的直線線段的轉折點不超過兩個(連接線由x軸和y軸 的平行線組成,即無拐點,一個拐點,兩個拐點)。
三 實習流程
此次對android應用與開發的實習分為以下幾個階段。
首先,由老師帶領我們對android以及開發軟件eclimpse進行了一個大概的了解與操作,并且對開發語言基礎java的基礎知識和編程思想進行了一次簡單的復習與加深。
然后老師開始帶領我們學習android界面的開發,并且告訴我們如何可以將界面盡量做得美觀與方便,告訴我們作為程序的開發人員要為用戶考慮,在這一階段,我們開始試著學習和操作android的簡單控件,包括textview,button等。
接著我們開始自己開發計算器,第一次將自己學到的控件進行組合搭配,并且開始學會怎么去監聽按鈕,通過對安卓常用類的學習,我們完成了計算器的常用功能。然而,對于計算機功能的實現,我感覺自己還沒有辦法做到自己想到的所有功能這讓我對android更加滿興趣的學習下去。
當初步接觸到了控件的開發與搭配后,我們開始開發學生注冊界面,并且將所輸入的信息反應到下一個界面中,在做這個的時候,我們又新學習了seekbar,checkbox等控件,讓我們進一步學習了android中的常用控件。
然后是對音樂播放器的開發,此階段我開始真正的接觸到了生活中自己經常用到的軟件的開發,并且也讓我第一次感覺到需要將自己開發的軟件做的美觀,于是我們開始學會調用背景圖片,調用歌曲,并且學習了radiobutton控件,以及播放器中對音樂的下跳,循環播放等功能的學習與實現。
最后是開發游戲“連連看”,在此之前老師先向我們介紹了對于圖片的處理等相關知識。
對于連連看,我們很熟悉,也明白其中的游戲規則;然而把它們用計算機語言展示出來卻比用文字語言展示出來要難上很多。因此這個項目也是用時最多的一個項目,期間融合了算法設計以及之前幾個項目所學的知識。雖然在參考資料
下,完成了項目;但是也存在很多不足。當然也有自己特點的地方,比如添加了成功幾步就獎勵時間,比如游戲的配備音樂,以及音樂的開關按鈕。
四 實習心得
通過這三個星期的畢業實習,我學到了很多關于android系統的技術知識,雖然實習的時間短暫但我仍舊收獲很多。首先,在每一天我認識了新的控件及相關的使用;其次,我們了解android系統的歷史和今后的發展以及相關android系統的總體構成,然后,我們學會了android編譯系統的搭建,以及在這個環境下編寫代碼,最后制作了簡單的音樂播放器以及連連看游戲等軟件;在這個過程中,我真正的了解到了理論與實際相結合的必要性以及獨立思考的重要性。
生成實習是為將來打基礎的重要階段,珍惜自己每一個工作的機會,不論什么人,什么學歷,從事什么工作,好好的表現、展示自己的能力,不要錯過好的機遇。沒有一件事情是輕輕松松的,但每一件事都是讓人成長的,經歷一段過程,喜悅或是艱辛,盡管經歷的方式不盡相同,但它的結果是相同的,我們都會因涉事而成長。通過這次實習,開闊了我的視野。這次的實習初步為我解開了安卓的神秘面紗,對于腦海中的那個可望而不可即,可玩兒不可解的安卓平臺初步走入了它的神秘世界;既感到興奮又感到驚奇,更感到壓力,方知知識海洋的廣大,學員任重道遠。這次實習讓我看清自己需要什么,同時也讓我吸取了許多學習以及和人相處的經驗,這將對我以后踏足社會,謀生立業有很好的借鑒和幫助作用。今后,我會珍惜這些寶貴的經驗,在人生的旅途中勇往直前,迎接時代的挑戰。篇四:安卓實訓報告
實習報告書
專 業 計算機科學與技術 系 別
報告題目
安卓
報告人 班
級
指導教師
帶隊教師 實習時間 實習地點
教務處監制 篇五:安卓記事本實習報告 android記事本的設計與實現 ——sqlite數據庫的設計和操作
學生姓名: 指導老師:
摘 要: 隨著智能手機的快速普及,智能手機操作系統市場風生水起。android的最大特點是其開放性體系架構,不僅具有非常好的開發、調試環境,而且還支持各種可擴展的用戶體驗,包括豐富的圖形組件、多媒體支持功能以及強大的瀏覽器。
本文主要介紹了一款android記事本sqlite數據庫模塊的設計與實現。根據人們日常生活的需要,該記事本的內容包括運用sqlite封裝好的方法對數據進行添加、刪除、修改、更新和密碼進入等功能,并且將查詢到的數據傳遞給activity,具有一定的實用性。關鍵詞: 記事本;android;手勢密碼;sqlite;activity design and implementation of android notepad — design and operation of the sqlite database student name: advisor: this paper describes the design and implementation of an android notepad sqlite database module.according to the needs of daily life, including the contents of the notepad good way to use sqlite package data to add, delete, modify, update and password to access other functions, and query the data is passed to the activity, has a certain practicality.keywords notepad;android;gesture password;sqlite;activity 目錄 目錄.....................................................................................................................................................................3 1.引言...............................................................................................................................................................4 1.1 項目背景..............................................................................................................................................4 1.2 項目意義..............................................................................................................................................4 1.3 系統可行性分析..................................................................................................................................5 1.4 系統主要任務....................................................................................................................................5 2.系統方案設計.................................................................................................................................................6 2.1 搭建android開發平臺.....................................................................................................................6 2.2 sqlite數據庫簡介............................................................................................................................7 2.3 總體方案設計...................................................................................................................................10 3.系統軟件開發環境.......................................................................................................................................10 3.1 windows開發環境...........................................................................................................................10 3.2 java集成開發環境eclipse...........................................................................................................11 3.3 adt plugin for eclipse...............................................................................................................11 4.程序設計.......................................................................................................................................................12 4.1 程序詳細設計...................................................................................................................................12 4.2 程序運行及效果截圖.......................................................................................................................13 4.3 對sqlite數據庫增刪改查代碼實現.............................................................................................18 5.工作總結與展望...........................................................................................................................................23 參考文獻...........................................................................................................................................................24 1.引言
1.1 項目背景 window操作系統的誕生成就了微軟帝國,同時也造就了pc時代的繁榮,然而如今,以android和iphone手機為代表的智能移動設備的發明與互聯網云技術的興起卻敲響了pc時代的喪鐘!這也預示著移動互聯網時代(3g)已經來臨。在這個互聯網繁榮的時代,有一顆超新星,以它獨特性能優勢與人性化的ui設計使它在短短的幾年迅速的占領了智能移動設備的市場份額,它就是google的android!這也意味著google在移動互聯網時代開始搶跑并領跑。
通過調查顯示,大部分消費者都會使用手機記事本功能。隨著手機記事本功能的不斷加強與完善,手機記事本對于人們的意義,已不僅僅像一般記事簿一樣簡單記錄,而是向著更個性化人性化的方向發展。android[1]系統是開源的,它以迅猛的姿勢已經占領了全球一半多的市場。記事本在生活和工作也日益凸顯出它的重要性,它能更好地幫助人們更好地管理自己的工作和生活,極大的方便了人們的生活。因其開源,我們可以在之上開發安卓記事本軟件,同時這也符合廣大的市場需求。1.2 項目意義 近幾年來隨著3g技術成熟和智能手機的不斷普及,移動應用的需求與日俱增,移動應用開發成為當下最熱門的技術之一。在google和android手機聯盟的共同推動下,android在眾多移動應用開發平臺中脫穎而出。android是一個真正意義上的開源智能手機操作系統,該系統一經推出立即受到全球移動設備廠商和開發者的熱捧。
我們都知道,無論是產品還是技術,商業應用都是它最大的發展動力。安卓如此受到廠商與開發者的青睞,它的前景是一片光明的。國內對于安卓這方面的市場還沒有完全開發出來。只要我們努力學習安卓,對理想,對生活都會有很大的補益。因此,開發這樣一套很簡單的記事本軟件對我們來講是一件很有必要的事情,在下面的各章中我們將以開發安卓記事本軟件為例,談談其開發過程和所涉及到的問題及解決方法。1.3 系統可行性分析 1.3.1 課題調研
(1)與實踐活動和相關的文件和資料由作者本人網絡查找,以及老師幫助。
(2)具有遇到問題,具有獨立思考,耐心鉆研,向老師虛心求教的良好態度。
(3)關于技術方面的難題,跟指導老師面談。1.3.2 可行性分析
(1)技術可行性:本項目僅需要一臺裝有eclipse及配置好android開發環境的計算機即可,對計算機本身有一定的要求,它可以使用windows xp及其以上版本,mac os,linux等操作系統。
(2)經濟可行性:由于本軟件開發只有三個人,三臺電腦就行,基本不需要太大的成本.在經濟上完全可行。
(3)操作可行性:界面設計時充分考慮用戶的習慣以及手機方面的局限性,程序必須要很簡單;本程序只涉及到開發環境配置,安卓組件的熟悉,以及安卓平臺上的數據存儲。并沒有太大的難度,所以,該項目完全有可操作性。1.4 系統主要任務(1)設計實現”添加新記事”,”編輯內容”,”刪除當前記事”這三個主要的功能模塊。(2)分析并解決實現中的若干技術問題,像組件的選擇以及保存方式的選擇。(3)進行測試并分析結果。
當然記事本的基本功能,建立新文件、修改現有文件、刪除文件、查看已建立文件等功能是首先必須完成的??梢跃帉憙热?,編輯及刪除,讓記事的方式多樣化。記事本軟件的界面設計力求簡潔,給人清爽的感覺,讓圖標及按鈕以協調的布局呈現出了,菜單功能要相對簡單,讓用戶操作方便,從而讓用戶體會到此款軟件的實用。因為上述操作涉及到的數據量不大,所以將數據庫定為安卓系統自帶的sqlite數據庫[3],所以這就要求我們要實現在sqlite數據庫上面的增刪改查。不少人希望自己記事本上面的內容不被被人查看,所以要以設置密碼的形式來實現保密。鑒于各種各樣的密碼實現方式,我們選擇了用戶體驗最好的手勢解鎖方式。以及采用了更加友好的時間顯示方式,讓用戶在使用過程中更加的舒服方便。記事本軟件要內存占用適中,cpu占用也是適中,這樣讓軟件運行順暢。
第四篇:安卓課程設計報告
安 卓 課 程 設 計
班 級 09級計算機二班
學 號 20097923 姓 名 郭丹
目錄
第1章
安卓應用程序開發背景..........................................................3 §1.1開發背景...................................................................................3 §1.2開發環境...................................................................................4 第2章 第3章 §3.1 §3.2 §3.3 第4章
安卓應用程序開發理論與方法..............................................4 “計算器”應用程序的設計與實現.......................................6 擬解決的問題及目標.............................................................6 總體設計................................................................................7 詳細設計與編碼實現.............................................................7 總結.......................................................................................17 2
第1章
安卓應用程序開發背景
§1.1開發背景
1.智能手機的市場
(1)功能多樣化的智能手機挑戰全球PC出貨量
移動互聯網時代的來臨,直接促進了搭載智能操作系統、具有強大擴展性的智能手機、平板電腦等移動終端產業的蓬勃發展。來自美國最大的風險投資機構KPCB的數據顯示,全球智能手機出貨量正在以遠高于臺式電腦、筆記本電腦出貨量的速度快速增長,該機構預計2011年全球智能手機出貨量將達到4.13億,超過臺式電腦與筆記本電腦出貨量的總和。
(2)智能手機的用戶使用數量正在高速增長。據市場調研機構Gartner信息,2011年全球智能手機的總出貨量將會達到4.68億部,相比2010年實現了57.7%的增長,而谷歌Android操作系統將會在今年之內成為全球最大的智能手機操作系統。另外,全球市場調研機構IDC預計未來5年中國手機市場上,智能手機替代傳統功能手機的趨勢將日益明顯,未來5年中國智能手機市場復合增長率將達到34.1%,人們對IT設備智能化的向往是這一增長率能夠實現的主要因素,并且與其他國家相比,中國智能手機市場的發展空間更加廣闊。(3)操作系統格局預測:Android有望成為智能手機市場主導力量
搭載Android操作系統的智能手機目前已經成為市場上最炙手可熱的智能產品。來自美國市場研究機構Gartner的數據顯示,Android操作系統所占的市場份額從2008年的0.5%急劇增長到2011年的15.94%。開放的源代碼和零成本已經讓Android在全世界范圍內受到青睞并迅速獲得了主要手機廠商和數百萬軟件開發者的支持,Gartner預計,未來Android系統的市場份額有望超過其他操作系統,從而成為全球第一大智能手機操作系統。2.安卓手機介紹
安卓手機指的是用Android操作系統的手機。安卓(Android)是基于Linux內核的操作系統,是Google公司在2007年11月5日公布的手機操作系統。
同樣都是手機上面用的智能系統,安卓的系統是新生系統,界面更為華麗,開源性更強,當然因為是新生系統,所以在第三方軟件方面暫時還不太多。因此,安卓應用程序的需求還是很迫切的。3.軟件人才需求
據業內統計,目前國內的Android研發人才缺口至少30萬。由于目前Android技術較新,無論是相關書籍、培訓還是大學教育,都處于初級階段,因此Android人才短期將供不應求。從長期來看,隨著各種移動應用和手機游戲等內容需求日益增加,也將激勵大中小型手機應用開發商加大對Android應用的開發力度,因此Android人才的就業前景也非常廣泛。
綜上所述,在這樣的背景下,安卓有很強的生命力。同時,作為一個新生的系統,其應用程序目前并不多,安卓應用程序的需求還是很迫切的,安卓研發人才的缺口還很大。這些都促進了我們學習開發安卓應用程序。
§1.2開發環境
安卓應用程序開發環境如下:
①JDK 5 or JDK 6(JRE alone is not sufficient)②Eclipse 3.3(Europa), 3.4(Ganymede)③Android SDK ④ADT 0.8.0 ⑤Eclipse安裝ADT 插件
第2章
安卓應用程序開發理論與方法
1、Activity的相關知識
簡單理解Activity 代表一個用戶所能看到的屏幕,Activity 主要是處理一個應用的整體性工作。Activity是最基本的Android 應用程序組件,應用程序中,一個活動通常就是一個單獨的屏幕。每一個活動都被實現為一個獨立的類,并且從活動基類中繼承而來,活動類將會顯示由視圖控件組成的用戶接口,并對事件做出響應。大多數的應用是由多個屏幕顯示組成,因而要用到多個Activity。(1)Activity的相關方法及相關函數: A、void onCreate(Bundle)首次啟動時調用,接受參數:Null or savedInstanceState(保存的以前某些狀態信息)B、void onStart()說明了將要顯示給用戶的活動
C、void onRestart()將處于停止狀態的活動重新顯示給用戶 D、void onResume()用戶可以開始與活動進行交互時調用。如動畫播放和音樂播放。E、void onPause()活動將要進入后臺運行時調用。(此時前臺啟動了另一個活動)F、void onStop()不需要某個活動了,就調用 G、void onDestroy()銷毀活動
(2)多個Activity之間的跳轉:
通過Intent類實現屏幕之間的跳轉(包括沒有參數關系和需要傳遞參數兩種情況)。
(3)兩個Activity之間進行數據交換: startActivity()只有Intent一個參數。
public void startSubActivity(Intent intent, int requestCode)(requestCode:用來標識某一個調用,一般定義一個常量。)
傳過去:函數原型為: public Intent setData(ContentURI data)然后,參數帶到新的Activity后,同樣用Activity.getIntent()函數可得到當前過來的Intent對象,然后用getData()就取到參數了。傳回來:函數原型為: public final void setResult(int resultCode, String data)
2、Intent的相關知識 Intent 是描述應用想要做什么。Android 使用了Intent 這個特殊類,實現在屏幕與屏幕之間移動。Intent 數據結構兩個最重要的部分是動作和動作對應的數據。Intent類綁定一次操作,它負責攜帶這次操作所需要的數據以及操作的類型等。
3、Layout 用于用戶界面設計。包含AbsoluteLayout,FrameLayout,GridView,LinearLayout,ListLayout,RadioGroup,TableLayout等等。
在本程序中用到的有:(1)線性布局LinearLayout 垂直:android:orientation=“vertical“ 水平:android:orientation=”horizontal“(2)相對布局RelativeLayout 讓子元素指定它們相對于其他元素的位置(通過ID 來指定)或相對于父布局對象。在RelativeLayout布局里的控件包含豐富的排列屬性: Layout above:控件在指定控件的上方
Layout below:控件在指定控件的下方 Layout to left of??
第3章
“計算器”應用程序的設計與實現
§3.1 擬解決的問題及目標
本計算器程序要解決日常生活中常見的基本數據計算問題,程序要實現的目標有如下幾個:
(1)要實現基本的加、減、乘、除四則運算。
(2)可以實現在前一步計算結果上繼續作加、減、乘、除,即連加、減、乘、除。
(3)有清空功能,即清除所有數據,重新開始計算。
(4)可實現基本的三角函數的計算,如:正弦,余弦,正切,余切。(5)可實現一些特殊運算,如:平方,立方,開方,求對數等。
§3.2 總體設計
1、系統的軟件結構圖
計算器基本加減乘除運算三角函數運算其他運算加減乘法法法除法正弦余弦正余切切平方立方開方對數 圖3-1
2、功能的操作流程
首先用戶根據自己的實際需要選擇計算的類型,然后進入不同的計算類型,再進行要執行的運算,輸入數據,選擇運算符號,即可得到結果。
§3.3 詳細設計與編碼實現
1、功能選擇界面
圖3-2為系統主界面。用戶可以根據需要點擊不同按鈕進入不同功能的子界面。亦可以點擊退出按鈕退出本程序。
圖3-2
本界面用LinearLayout來布局,主要用到的控件是Button。頁面的跳轉是通過intent來是實現的。跳轉的主要代碼如下: public void onClick(View v)
{
Button btn=(Button)v;switch(btn.getId()){ case R.id.button1: Intent intent=new Intent();intent.setClass(mycalActivity.this, secondactivity.class);startActivity(intent);break;
case R.id.button2: Intent intent=new Intent();intent.setClass(mycalActivity.this, thirdactivity.class);
startActivity(intent);break;
case R.id.button3: Intent intent=new Intent();intent.setClass(mycalActivity.this, forthactivity.class);startActivity(intent);break;
case R.id.button4: finish();
}
2、基本加減乘除界面
圖3-3為加基本減乘除界面。用戶在文本框中輸入參加運算的數據,并點擊要進行的運算符號,然后點擊等號之后,將在等號下方顯示結果處顯示出計算結果。點擊clear按鈕,可以將兩個文本框中的內容以及顯示的結果一起清空,用戶可以輸入新的數據計算。
在文本框中輸入時可以用圖右側的硬鍵盤,或者是手機自帶的軟鍵盤。
圖3-3
示例如下:
(1)用戶要計算1.23+2.16.在文本框1中輸入1.23,點擊“+”,再在文本框2中輸入2.16,點擊“=”,就可以顯示出計算結果3.39.如下:
圖3-4
(2)計算1-0.32,如圖3-5 圖3-5
(3)計算3.24*0.25,如圖3-6所示。
圖3-6
4)計算55/4,結果為13.75.如下圖所示:(圖3-7
(5)計算1/6.如下圖所示。由圖3-8可以看出,當除不盡時本計算器保留到8位小數,并且最后一位采用了四舍五入的方法,比較科學、準確。
圖3-8(6)點擊clear之后全部清空:
圖3-9
具體的實現:主要的思路是,用戶先輸第一個數,然后點擊運算符號,在程序中監聽按鈕的點擊,如果點擊了+、--、*、/中某一按鈕,這時,就取editText1中的值,通過myeditText1= editText1.getText().toString()實現,為了參與運算,需要把字符串類型轉換為浮點型,并將其值賦給變量a,代碼為a=Float.parseFloat(myeditText1);用flag的不同值記錄用戶點擊的不同的運算按鈕。當用戶點擊“=”時,就將editText2中的內容取出,也同樣轉化為數值,并用b記錄,然后判斷flag的值即可知道對應應采取哪種計算,進而算出最終結果,并用textView1顯示出計算結果?!扒蹇铡钡膶崿F是使對應控件的內容取空即可。核心代碼如下:
private OnClickListener listener=new OnClickListener(){
String myeditText1;String myeditText2;float a=0;int flag=0;
float b=0;float result;public void onClick(View v){
Button btn=(Button)v;switch(btn.getId()){ case R.id.button1: myeditText1= editText1.getText().toString();
flag=1;
break;case R.id.button2:
myeditText1= editText1.getText().toString();
a=Float.parseFloat(myeditText1);
flag=2;break;case R.id.button3:
myeditText1= editText1.getText().toString();
a=Float.parseFloat(myeditText1);
flag=3;break;case R.id.button4:
myeditText1= editText1.getText().toString();
a=Float.parseFloat(myeditText1);
flag=4;break;case R.id.button5:
myeditText2= editText2.getText().toString();b=Float.parseFloat(myeditText2);
a=Float.parseFloat(myeditText1);
};
}
if(flag==1)result = a+b;
else if(flag==2)result = a-b;else if(flag==3)result = a*b;
else
result=a/b;
String s = ”顯示結果: “;s += result;
textView1.setText(s);break;case R.id.button6:
} editText1.setText(”“);editText2.setText(”“);textView1.setText(”顯示結果:");break;
3、三角函數運算界面
圖3-10為三角函數運算界面。用戶在文本框中輸入參與計算的數據,然后選擇點擊要進行的運算類型,這時在顯示結果處就會顯示計算結果。例如,要計算sin30度,先在文本框中輸入30,然后點擊sin按鈕,這時就會顯示結果為0.5.同理,可進行其他計算。
圖3-10
4、其他運算界面
圖3-11為其他運算界面,目前可實現平方、立方、開方、求以10為底的對數四種運算,由于時間有限,這個界面目前功能并不完善,暫時實現四種運算,不過,基于本計算器程序的設計理念,本界面主要實現一些其他運算,包括一些特殊運算。在今后,這個界面可以修改和擴充,以至擁有更加完善豐富的計算功能。在現有的界面上的操作流程如下:用戶在文本框中輸入要進行運算的數據,然后選擇點擊運算按鈕,即可顯示運算結果。如輸入0.5,點擊平方,即顯示結果0.25,操作方便。
圖3-11
第4章
總結
在本次安卓應用程序開發之中,我收獲很多,現總結如下:
安卓設計開發過程初期,我打算設計制作一個計算器。但是,剛開始并不能預測難度,不知道在短期內能否很好的完成,于是我的想法是,先實現基本的加、減、乘、除四則運算,然后在此基礎上進一步完善豐富其運算功能。首先遇到的問題便是要不要做一個數字鍵盤。剛開始也試著做了一個鍵盤,是用button做的,需要很好的布局,但是每當擴充一種功能時,為了使界面整體美觀,甚至都要重新設計,很麻煩。后來候突然想到手機有硬鍵盤,也有自帶的軟鍵盤,何不運算的時候直接調出已有的軟鍵盤?這樣,根本沒有什么必要自己做鍵盤了,而只需做出運算的按鈕即可了。由于當時的目標只是實現加減乘除,因此設計的界面是用兩個文本框輸入兩個數據,然后有+、-、*、/四個按鈕供選擇,又加一個“=”按鈕用于觸發顯示結果。界面很簡單,使用很方便。然后就是才用合適的算法來實現功能。經過思考和多次修改,最后確定了一種比較簡明的算法實現。
基本加減乘除功能已經實現,但是計算器的功能過于簡單了,接下來便是擴充功能。我首先想到的是需要能實現三角函數運算,常見的平方、開方等運算。但是我遇到了困難。由于剛開始設計的加減乘除運算都是二元運算,因此界面設計的是在兩個文本框中輸入兩個數,但是三角函數計算,平方開方計算都是一元運算,參加運算的數據都只有一個,因而,在原界面上直接擴充并不合適,兩個文本框成了擴充的限制。后來經過思考,決定將這些擴充的功能做到別的界面上,與已有的界面相獨立,重新設計,這樣只需將運算分類,再做一個功能選擇的界面,點擊不同的運算類別進入不同的運算界面即可,這樣這個問題便得到了很好的解決。但是這次設計卻給了我很大的教訓,開發應用軟件的初期設計很重要,不僅要實現現在的目標,還要考慮以后能否進行功能擴充,設計要便于以后的功能擴充,否則,到后來需要擴充時遇到困難,甚至要推翻已有的設計,花費很大的代價。另外,由于時間緊迫,三角函數界面和其他運算界面的功能并不十分完善,只是一些基本的運算,初步體現出了設計的思想,今后還可以進行進一步的擴充,以完善其功能。
在本次開發過程中,我對開發環境進一步的熟悉,基本上可以熟練運用這個 環境,也基本掌握了安卓的開發方法及基本流程。在本次開發過程中,主要用到的知識有Activity的使用,在程序中用到了多個窗口,因而需創建多個Activity。還用到了Intent,主要是用于多個Activity之間的跳轉,對Intent的作用和用法有了更進一步的熟悉。在本次程序設計中,我也對用戶界面設計有了更進一步的掌握,熟練運用Layout,本次用到的主要是LinearLayout和RelativeLayout。
開發期間,我學會了有目的的去學習一些將要用到的東西,仔細地考慮工作流程的規律和步驟,充分利用手中的開發工具,利用其所具備的功能,盡量使自己的開發在代碼上實現少而精確、讓用戶能夠盡量簡單地進行操作。但是在檢測過程中,還是出現了很多的不足之處,這些都是要在今后的工作中需要努力改進和完善的。
在這次程序開發設計中,我也難免會遇到不少困難,這主要是由于我對所用的開發環境并不是很熟悉,開發軟件的經驗不足。安卓開發用的語言是java,但是我對java的學習并不多,這次開發對我來說可以算是一個全新的嘗試,整個開發過程并不是很順利,卻使我從中充分體會到學習的快樂,開發的程序也在一步步得到完善。這次程序開發由于個人水平及時間有限等原因,只能完成一些基本的功能,好多設想并未完全實現,這不能不說是個遺憾,后期仍需努力。
第五篇:安卓 課程學習心得
心得體會
學號: 姓名: 班級:
一開始接觸 Android 是從自己的手機開始的,覺得它很酷,是我喜歡的風格,然后我就通過了一些網絡渠道去了解Android。在選課的時候發現有這個課程,于是我就報名了。剛開始接觸 Android開發時感覺到它很有意思,在界面開發上和 web 也可以形成了相通的架構,更加方便,視覺上也是非常的酷。Android作為新興的手機操作系統,適應潮流的發展,在一定程度上迎合了現代人們最求效率和最求完美的心態,再加上的它的先進之處,所以 Android 的發展很快,Android 的應用資源也越來越廣泛,現在的 Android 正在快速形成一個只能手機王國,給人們提供日常娛樂和辦公的平臺,無論在哪些方面,Android 的表現總是能夠讓人滿意,它正在快速地占領手機終端,未來的智能手機領域將是 Android 的天下,越來越多的人選用 Android平臺的手機。如果說追求蘋果是因為蘋果的高端與美感,那么追求 Android 則是因為它的先進性開源性,也正是因為 Android 這些吸引人們矚目的特點,才會有越來越多的人對 Android 充滿激情,Android 的發展也才能這樣的迅猛,所以在這里要先謝謝 Goolge,以及那些充滿激情的開發者們。首先在界面上,我們同樣可以通過不同布局進行設計非常酷的界面,這些界面可以通過 include 進行引入,我們可以通過一些公用的方法寫個 BaseActivity 這個基類,通過繼承方式比較不錯的實現了 Activity 的界面,因為這樣你可以 Header(頭部)和 Footer(尾部)進行處理一些觸發事件或者特效等。布局模式以相對模式為主,線線布局模式可以在比較簡單的 include 進行完成,最重要的一點就是:我們可以自己通過重寫方法或者通過實現 View 或者 Layout 等類進行擴充項目需要的布局(或者控件),在學習界面中,Android 為我們提供了很好的類似反射機制,通過 Layout 文件夾下的配置文件,可以快速的形成界面,在配置文件可以設置屬性或者樣式都是很快捷方便。對比較特殊的界面也可以通過處理嵌入到指定的界面,同樣可以通過java 代碼直接創建View 進行添加,不過這種方式比較復雜。對一些點擊、選中、按鍵等處理的事件,界面之間的 跳轉 Intent 管理,通過 Bundle 對數據在界面之間進行傳輸。其次在手機交互式通信服務中,學習了 Android 手機之間進行短信發送、廣播、對廣播的監聽、服務等。
這次的課程我們主要學習了航班系統的設計,首先我們要建立航班查詢:旅客就可通過網絡訪問該系統客戶端網址,可根據旅客提供的出發時間、出發地點和目的地、艙位要求等,查詢滿足旅客要求的航班。通過檢索可得到航班的相關信息,從而可以方便旅客訂票并掌握所需信息,同時可減少工作人員的工作量。
第二,我們要建立旅客訂票:旅客將訂票的相關信息通過工作人員輸入系統客戶端??蛻舳藢⒙每偷挠喥毙畔⑼ㄟ^網絡傳送給服務端,服務端根據接收到的信息由航班安排系統為旅客安排座位并返回相應的確認信息給該客戶端。訂票信息生成后,存入相應的存儲區域,并對數據庫進行數據提交??蛻舳舜蛴∪∑眴渭皫谓o旅客,旅客在登機前,經信息核審后,即可領取機票登機。
第三,航班信息管理:航空公司可將所有航班的信息存入數據庫,方便用戶對航班基本信息查詢,相 關工作人員可根據公司要求,經系統身份認證后登錄并對航班信息進行修改等操作,從而使 航班信息便于管理。
第四:航班安排:從客戶端接收到旅客的訂票信息,該系統可在短時間內處理旅客航班問題。將 訂票信息送往數據庫并更新,客戶端的航班查詢信息也同步更新。節省時間的同時,也能讓 旅客得到最新的航班信息。
第五,售票管理:旅客不僅可在各客戶端進行機票預定,也可直接在機場的售票處購票,購票信息由系統提交到數據庫進行管理更新。
第六,退票管理:機票有效期內,旅客若需退票,可在退票處進行退票。退票信息,由工作人員輸入系統,系統對訂票信息或售票信息進行刪除更新。
第七,票銷售情況核算:因為航空公司機票銷售量大,而航空公司為了公司的經營,有需要在一定的時 間階段了解公司機票的銷售情況。而龐大的數據量通過人工來完成,似乎不太現實,而該系 統可幫助航空公司進行售票情況的核算。
這個課程緊跟住了現代科技的發展,讓我們在第一時間和先進的科學技術做了一個親密的接觸,這樣的課程能夠點燃我們對某一個新興領域的激情,這算是一個啟蒙,讓我們對 Android 先有了一個大概的了解,這個課程不一定能讓我們很好的掌握 Android 的理念或者開發,但是能夠讓我們對 Android 產生濃厚的興趣,讓我們燃起探索Android 的欲望,我想這樣就已經足夠了。