第一篇:安卓手機電池不耐用解決辦法
安卓手機電池不耐用解決辦法
你遇到過這種情況嗎?手機用了一段時間后,發(fā)現(xiàn)電池不耐用了,總是充滿后沒用多久就沒電了,電量“噌噌噌”地往下掉,真是惱人!今天,小編就帶來幾種方法,教大家如何對付這種情況!
非root手機:
1.保持手機開機狀態(tài),連接充電器充電(USB和線纜充電均可)
2.手機LED變成綠色后說明電池已經(jīng)充滿,把手機從充電器拔下
3.關(guān)閉手機,再連接充電器充電,讓手機再次充到LED燈變成綠色
4.拔下手機充電器
5.手機開機,等到手機開機并完全進入系統(tǒng)后,迅速關(guān)機
6.再次連接充電器到已經(jīng)關(guān)閉的手機,等待幾分鐘后LED燈會再次變成綠色
7.把手機從充電器拔下開機正常使用
已經(jīng)取得root權(quán)限的手機:
第一種方法(推薦使用):
1.手機用完電,把手機重新開機,等待自然關(guān)機,這一步是徹底放電
2.手機保持關(guān)機連接電源充電(充電時間不少于12個小時,充電期間不能斷電,不然就得重新開始第一步)
3.手機保持連接電源狀態(tài)開機,進入RE管理器或**同類工具刪除/data/system/batterystats.bin這個文件,然后將電源拔下,馬上重啟手機
4.正常使用直到手機沒電為止,以后正常使用就可以了
第二種方法:
1.保持手機開機狀態(tài),連接充電器充電
2.手機LED變成綠色后說明電池已經(jīng)充滿,把手機從充電器拔下
3.關(guān)閉手機,再連接充電器充電,讓手機再次充到LED燈變成綠色
4.拔下手機充電器
5.手機開機,等到手機開機并完全進入系統(tǒng)后,迅速關(guān)機
6.再次連接充電器到已經(jīng)關(guān)閉的手機,等待幾分鐘后LED燈會再次變成綠色
7.啟動手機進入recovery模式(同時按住手機返回鍵和電源鍵啟動),然后選擇wipebatterystats即可
第三種方法:
1.開機,連接上充電器,直到指示燈變綠
2.拔掉充電器,關(guān)機,接上充電器,直到指示燈變綠
3.拔掉充電器,開機,進入系統(tǒng)后,關(guān)機,接上充電器,直到指示燈變綠
4.拔掉充電器,開機到recovery里面的advanced菜單里面wipebatterystatus后重啟即可
按照上面的步驟進行后電池校準就完成了,只比平時充電多用了5分鐘的時間,但是校準后的電池和以前明顯不同。在電池校準前你會發(fā)現(xiàn)的電池在充滿電的情況下稍微使用就會降到93%左右,而校準后可以保持數(shù)小時100%的狀態(tài)才開始降低到99%,總之校準后的電池絕對會讓你驚喜。
備注:
/data/system/batterystats.bin這個文件是系統(tǒng)記錄的包括電壓在內(nèi)的各種
電池信息,刪除這個文件之后系統(tǒng)會重新開始統(tǒng)計電池的使用信息。Recovery中的“Wipe battery status”做的工作就是刪除/data/system/batterystats.bin這個文件。這個方法刪除電池所有的記錄信息,和手機恢復(fù)出廠是一樣的,目的是讓系統(tǒng)重新記錄手機當前電池(必須讓電池達到飽和狀態(tài))的信息,從而讓電池達到最佳狀態(tài),讓系統(tǒng)充分發(fā)揮電池的電量。
安卓電池校正以后就盡量不要進行更換了(頻繁更換電池會導(dǎo)致電量信息不準,刷機前充滿電可以減小電量信息誤差)。另外root過的的手機通過recovery程序wipebatterystats后效果更好,但也不是必須。
注意電池校準只需要進行一次即可,多次嘗試也不會讓你的電池活性再增強。
文章出自 安軟市場
http://
第二篇:安卓學習心得
Android學習心得
-----093380117
計算機應(yīng)用(1)
張峰
1.關(guān)于Activity
1.在一個Activity中使用多個View
如果把Activity看作MVC中的Control?它負責管理UI和接受事件(包括用戶的輸入),雖然說一個Activity通常對應(yīng)一個屏幕,但事實上,我們是可以只用一個Activity管理多個不同的View來實現(xiàn)簡單的邏輯。首先,我們增加一個新的資源描述layout/second.xml。
除了一個“Hello中國”以外,增加一個按鈕可以返回前一個界面。然后,在代碼中我們要為helloTwo增加兩個方法,setViewOneCommand和setViewTwoCommand,分別處理一下在不同界面時,從資源里加載組件并為組件綁定一個事件處理器最后,我們需要在onCreate的時候,也就是啟動后的main界面上設(shè)置一下按鈕事件處理器。2.還是回到正道上,多個Activity之間的跳轉(zhuǎn)
Android中提供一個叫Intent的類來實現(xiàn)屏幕之間的跳轉(zhuǎn),按文檔的說法,似乎他們也建議采用這種方法,Intent的用法比較復(fù)雜,現(xiàn)在我先看看它最簡單的用法。
這里的跳轉(zhuǎn)功能用Intent來操作,它的最簡單用法就是用函數(shù)setClass()設(shè)置跳轉(zhuǎn)前后兩個Activity類的實例,然后調(diào)用Activity自己的startActivity(intent)即可。最后一句finish()表示將當前Activity關(guān)掉(如果不關(guān)掉會如何?你可以自己試一下看效果,事實上有時我們是不需要關(guān)掉當前Activity的)。
然后,我們同樣弄一個Activity類HelloThreeB,代碼與前面的差不多,只是將setClass的兩個參數(shù)反一下,這樣就可以簡單地實現(xiàn)在兩個Activity界面中來回切換的功能了。
2.關(guān)于 Intent的使用
Intent分為兩大類,顯性的(Explicit)和隱性的(Implicit)。一般來說,intent要定位事件的目的地,無外乎需要以下幾個信息: 1.種類(category),比如我們常見的 LAUNCHER_CATEGORY 就是表示這是一類應(yīng)用程序。
2.類型(type),在前面的例子中沒用過,表示數(shù)據(jù)的類型,這是隱性Intent定位目標的重要依據(jù)。
3.組件(component),前面的例子中用的是setClass,不過也可以用setComponent來設(shè)置intent跳轉(zhuǎn)的前后兩個類實例。4.附加數(shù)據(jù)(extras),在ContentURI之外還可以附加一些信息,它是Bundle類型的對象。
其實,如果是在一個應(yīng)用內(nèi)部,這種隱性的intent實在有點別扭,個人覺得,這種松藕合的實現(xiàn)方法,只適用于那些較大的系統(tǒng)或者多個不同的應(yīng)用之間的調(diào)用,可手機上又有什么“較大”的系統(tǒng)呢?無非是可以與不同來源的多個應(yīng)用之間方便地互操作而已,那么會是什么樣的場景呢?比如,給QQ好友發(fā)送gmail郵件,用GoogleMap查找QQ好友所在的位置?看上去挺不錯的。
關(guān)于這個ContentProvider,其實還有話說,它主要是的那些看似數(shù)據(jù)庫操作的方法我們都沒真正去實現(xiàn)呢。不過今天就到這里了,等下回再去研究吧。
3.關(guān)于ListActivity
準備一個List對象并借助Adapter就可以構(gòu)造出一個列表。重載onListItemClick方法可以響應(yīng)選擇事件,利用第一個參數(shù)可以訪問到這個ListView實例以得到選中的條目信息。這里有一點要說明的,就是如果更簡單的話,其實連那個setContentView都可以不要了,Android也會自動幫我們構(gòu)造出一個全屏的列表。但是本例中我們需要一個TextView來顯示選中的條目,所以我們需要一個layout.mainb描述一下這個列表窗口。
這里需要注意的是那個ListView的ID,是系統(tǒng)自定義的android:list,不是我們隨便取的,否則系統(tǒng)會說找不到它想要的listview了。然后,在這個listview之外,我們又增加了一個TextView,用來顯示選中的條目。
再來說說這里用到的ArrayAdapter,它的構(gòu)造函數(shù)中第二個參數(shù)是一個資源ID,ArrayAdapter的API文檔中說是要求用一個包含TextView的layout文件,平臺用它來顯示每個選擇條目的樣式,這里的取值是R.layout.list_row,所以,我們還有一個list_row.xml文件來描述這個布局,相當簡單。
從ArrayAdapter上溯到BaseAdapter,發(fā)現(xiàn)還有幾個同源的Adapter也應(yīng)該可以使用,象SimpleAdapter和CursorAdapter,還是做個例子來實驗一下吧。
然后,在HelloTwoB中的onCreate函數(shù)中,修改代碼,有幾個不同:items的元素是HashMap實例,這是一點變化,然后構(gòu)造函數(shù)除了要求items以外,還要求提供一個string[]來說明用hash表中的哪個字段顯示在列表中,而后是一個資源ID的數(shù)組。
因為單純的CursorAdapter是抽象類,所以我用的是它的子類SimpleCursorAdapter,很好理解,先用ContentResolver查詢通訊簿得到一個游標,然后告訴SimpleCursorAdapter要用其中的People.NAME作為顯示項來構(gòu)造出一個adapter即可。4.關(guān)于Dialog
注意到android.app包下除了Dialog(可用于制作復(fù)雜的對話框)以外,還包括了幾個系統(tǒng)定義好的對話框類,如DatePickerDialog、TimePickerDialog及AlertDialog。
其中AlertDialog我上回用過一次,基本上就那樣子了,今天看看另外兩個對話框的使用吧。
很簡單的,無非是需要一個OnDateSetListener接口的實現(xiàn)而已,在它里面的dateSet方法中就可以得到選擇的日期了。而TimePickerDialog與DatePickerDialog使用如出一轍。
看看另一個ProgressDialog的用法吧,這個類與AlertDialog一樣包含了多個static的方法,所以使用起來是非常方便的。比如說,如果我們需要用它來表示一個長時間的操作。
5.關(guān)于Service和Notification
大略地看了一下android.app下的Service類,覺得它與Activity非常相似,只是要注意幾個地方:
1.生命周期,Service的從onCreate()->onStart(int,Bundle)->onDestroy()顯得更為簡單。但是它的onStart是帶參數(shù)的,第一個ID可用來標識這個service,第二個參數(shù)顯示是用來傳遞數(shù)據(jù)的了。比較Activity,傳遞數(shù)據(jù)的Bundle是在onCreate就帶進入的。
2.Service的啟動由Context.startService開始,其實Activity或者Service都是Context的派生類。結(jié)束于Context.stopService()或者它自己的stopSelf()。
3.Service還有一個與Activity不一樣的是它可以由另一個Context去綁定一個已存在的Service。就是這個方法Context.bindService(),被綁定的Service要求是已經(jīng)onCreate了但可以沒有onStart。在Service類中有個抽象方法getBinder()可以得到這個IBinder對象。關(guān)于這方面的細節(jié),以后再看,這里只做個記錄罷。
4.與Service有關(guān)的還有一個安全的問題,可以在AndroidManifest.xml中用
6.GridView與ImageView
簡單一點吧,就瞧瞧那個Grid的效果,Android提供了一個GridView,不過從APIDemo中看來,它似乎與PC上的GRID差別還是挺大的,更像那個IconView的感覺。不知道Android中如何實現(xiàn)表格界面?雖然在移動終端上,表格一般不會有誰使用,大家似乎更傾向于使用ListView,而Android對于ListView則有更簡單的實現(xiàn)ListActivity。
很簡單,只要重載幾個方法就可以了,關(guān)鍵是那個getView方法,它負責構(gòu)建出每個單元格中的對象實例。這里我們構(gòu)造的是一個ImageView實例。
然后就是同樣的將這個Adapter賦給GridView即可,大家可以看看效果,注意在做這個例子前,先放幾個小圖片到res/drawable目錄下,buildproject一下就可以得到那個R.drawable.a了(這里的a是圖像文件名,如a.png)。
在getView方法中我們使用了ImageView類,這又是一個widget。除了上面用到的幾個方法以外,還有以下幾個方法值得注意: 與圖像來源有關(guān)的方法,我們只用了資源文件的方式。
還是習慣性跑題了,其實,我是想通過我對這個類的無數(shù)次Debugger跟進,說說它的多線程異步處理的解決策略的。他的基本策略如下: 1.當你實例化一個AsyncQueryHandler類時(包括其子類...),它會單件構(gòu)造一個線程(后面會詳述...),這個線程里面會構(gòu)建一個消息循環(huán)。
2.獲得該消息循環(huán)的指針,用它做參數(shù)實例化另一個Handler類,該類為內(nèi)部類。至此,就有了兩個線程,各自有一個Handler來處理消息。3.當調(diào)用onXXX的時候,在XXX函數(shù)內(nèi)部會將請求封裝成一個內(nèi)部的參數(shù)類,將其作為消息的參數(shù),將此消息發(fā)送至另一個線程。4.在該線程的Handler中,接受該消息,并分析傳入的參數(shù),用初始化時傳入的ContentResolver進行XXX操作,并返回Cursor或其他返回值。
5.構(gòu)造一個消息,將上述返回值以及其他相關(guān)內(nèi)容綁定在該消息上,發(fā)送回主線程。
6.主線程默認的AsyncQueryHandler類的handleMessage方法(可自定義,但由于都是內(nèi)部類,基本沒有意義...)會分析該消息,并轉(zhuǎn)發(fā)給對應(yīng)的onXXXComplete方法。
7.用戶重寫的onXXXComplete方法開始工作。
這就是它偷偷摸摸做過的事情,基本還是很好理解的。我唯一好奇的是它的線程管理方式,我猜測他是用的單件模式。第一個AsyncQueryHandler的實例化會導(dǎo)致創(chuàng)建一個線程,從此該線程成為不死老處男,所有的ContentResolver相關(guān)的工作,都由該線程統(tǒng)一完成。個人覺得這種解決方式很贊。本來這個線程的生命周期就很難估量,并且,當你有一個ContentProvider的請求的時候,判斷你會做更多的類似操作并不過分。就算錯了,花費的也只是一個不死的線程(與進程同生死共存亡...),換來的卻是簡單的生命周期管理和無數(shù)次線程生死開銷的節(jié)約。同時另外一個很重要的問題,他并會涉及到單件中數(shù)據(jù)同步的問題,每個類都有各自的Handler類,彼此互不干擾,分發(fā)可以分別進行。當多個數(shù)據(jù)請求的時候,在同一個ContentResolver上進行的可能微乎其微,這就避免了堵塞。總而言之,這套解決辦法和Android的整體設(shè)計算是天作之合了。
所以建議,如果你有什么非ContentProvider操作,卻需要異步多線程執(zhí)行的話,模擬一套,是個不錯的策略,當然,具體情況具體分析,生搬硬套是學不好馬列主義的。
7.顯示控件使用
Android的界面顯示同樣也是基于控件的。通常是用View(包括ViewGroup)控件配上XML的樣式來做的。具體細節(jié)不想說了,可以參考 Samples里的ApiDemos/View,和View的Doc,以及Implementing a UI這篇Doc。其他還有很多,感覺算是SDK講述的最多的內(nèi)容。
從控件的使用上,和網(wǎng)頁的設(shè)計類似,盡量用parent_width之類的抽象長度,用Theme來做風格,抽取所有的字串等信息做本地化設(shè)計。相關(guān)內(nèi)容參看Implementing a UI就好。
一類比較重要的是數(shù)據(jù)綁定控件。如果做過ASP.Net會從中看到很多類似的地方。一個支持數(shù)據(jù)綁定的控件,比如ListView??梢酝ㄟ^一個 ListAdapter綁定到一個數(shù)據(jù)源上。ListAdapter是一個抽象類,主要的實現(xiàn)類包括SimpleAdapter和 SimpleCursorAdapter。前者是綁定一個靜態(tài)的Array,后者是綁定一個動態(tài)的Cursor。Cursor前面說過,是一個指向數(shù)據(jù)源的隨機迭代器,將View綁定到Cursor通常要設(shè)置這樣幾個參數(shù)。一個是每一行的樣式,稱作Row Layout,其實就是一個普通的Layout的XML文件。還有就是一個列和現(xiàn)實控件的對應(yīng)關(guān)系。那個控件顯示哪個列的值,這是需要配置的。為了定制一個良好的數(shù)據(jù)顯示控件,最簡單你可以定制很PP的Row Layout,復(fù)雜一點就是可以重載綁定控件View,或者是適配器ListAdapter。如果是一個數(shù)據(jù)顯示密集的應(yīng)用,且你對UI有些追求,這個工作估計是必不可少的。
一個主要用于顯示數(shù)據(jù)內(nèi)容的Activity,可以選擇派生自ListActivity。它提供了一個具有ListView 的Layout,還有simple_list_item_1, simple_list_item_2, two_line_list_item等默認的Row Layout,還有一些比較不錯的API,和可供響應(yīng)選擇Item的事件??梢詽M足你比較基礎(chǔ)的需求。如果你覺得只有一個ListView的界面太突兀,你可以為這個ListActivity指定一個Layout,需要注意的是,你需要提供一個id為@android:id/list的ListView控件,避免Activity在內(nèi)部偷偷尋找該控件的時候失敗。
除了這些要求,做好UI還有注意易用性和效率??旖萱I是一個比較不錯的選擇,在 Activity中調(diào)用setDefaultkeyMode(SHORTCUT_DEFAULT_KEYS),可以開啟快捷鍵模式,然后你可以將菜單綁定到指定快捷鍵上就OK了。個人覺得Tip也是一個比較重要的東西,但目前觀察看來,這個東西只能夠自己提供了。界面的動態(tài)性有時候是不可避免的,比如說菜單就是一個需要經(jīng)常根據(jù)光標位置提供不同的選項。這個東西Android很人道的考慮到了,你可以參看NodeList這個Sample。它采取的應(yīng)該是一個靜態(tài)模擬動態(tài)的方式,這樣有助于提高速度。你也可以利用ViewInflate,動態(tài)從一個XML創(chuàng)建一個控件。成本據(jù)Doc說很大,不到萬不得已不要使用。
8.Intent消息傳遞
在前面寫Android的ContentProvider時候,可以看到那是基于觀察者模式的一個消息傳遞方法。每一個Cursor、ContentResolver做為一個小的注冊中心,相關(guān)觀察者可以在這個中心注冊,更新消息由注冊中心分發(fā)給各個觀察者。而在MFC或Winform中,都會形成一個消息網(wǎng),讓消息在網(wǎng)中流動,被各節(jié)點使用、吃掉或者在出口死掉。
相比之下,我個人覺得基于Intent的Android核心消息傳遞機制是有所不同的。它應(yīng)該會有一個全局性的注冊中心,這個注冊中心是隱性的,整個Android系統(tǒng)中就那么一個。所有的消息接收者,都被隱形的注冊到這個中心。包括Activity,Service和IntentReceiver。其實說隱形注冊是不確切的,所有注冊都還是我們手動告訴注冊中心的,只是與傳統(tǒng)的方式不一樣,我們通常不是通過代碼,而是通過配置文件來做。在應(yīng)用的Manifest中,我們會為一些Activity或Service添加上Intent-filter,或在配置文件中添加
當程序有一個消息希望發(fā)出去的時候,它需要將消息封裝成一個Intent,并發(fā)送。這時候,應(yīng)該是有一個統(tǒng)一的中心(恩,有可能Android底層實現(xiàn)的時候不是,但簡單這樣看是沒問題的...)接受到這個消息,并對它進行解析、判定消息類型(這個步驟降低了耦合...),然后檢查注冊了相匹配的filter或receiver,并創(chuàng)建或喚醒接收者,將消息分發(fā)給它。這樣做有很多好處。雖然這種傳遞有的時候不如點對點的傳遞快(這有些需要速度的地方,我們看到Android會通過直接通信來做),但有時候又因為它只經(jīng)過一跳(姑且這么叫吧...),比復(fù)雜的流動又要更快。更重要的是,它耦合性低,在手機平臺這種程序組件多變的條件下使用十分適合。并且它可以很容易實現(xiàn)消息的精確或模糊匹配,彈性很大。(我個人曾想在開發(fā)一個C++二次平臺的時候引入這樣的機制,但在C++中,建立一套完整的數(shù)據(jù)marshal機制不容易,相比之下,用java來做會簡單很多...)
恩,廢話說了很多,具體講講Android中Intent的使用。當你有一個消息需要傳遞,如果你明確知道你需要哪個Activity或者其他Class來響應(yīng)的話,你可以指定這個類來接受該消息,這被稱為顯性發(fā)送。你需要將Intent的class屬性設(shè)置成目標。這種情況很常見,比如startActivity的時候,會清楚當前Activity完了應(yīng)該是哪個Activity,那就明確的發(fā)送這個消息。
但是,有的時候你并不確定你的消息是需要具體哪個類來執(zhí)行,而只是知道接收者該符合哪些條件。比如你只需要有一個接收者能顯示用戶所選的數(shù)據(jù),而不想制定某個具體的方法,這時候你就需要用到隱形發(fā)送(傳統(tǒng)上,我們可能會考慮用多態(tài),但顯然這種方式更為靈活...)。在Android中,你可以為Intent指定一個action,表示你這個指令需要處理的事情。系統(tǒng)為我們定義了很多Action類型,這些類型使系統(tǒng)與我們通信的語言(比如在Activity里面加一個Main的filter,該activity就會做成該應(yīng)用的入口點),當然你也可以用于你自己的應(yīng)用之間的通信(同樣當然,也可以自定義...)。強烈建議,在自己程序接收或發(fā)出一個系統(tǒng)action的時候,要名副其實。比如你響應(yīng)一個view動作,做的確實edit的勾當,你發(fā)送一個pick消息,其實你想讓別人做edit的事,這樣都會造成混亂。當然只有Action有時候是不夠的,在Android中我們還可以指定catalog信息和type/data信息,比如所有的顯示數(shù)據(jù)的Activity,可能都會響應(yīng)View action。但很多與我們需要顯示的數(shù)據(jù)類型不一樣,可以加一個type信息,明確的指出我們需要顯示的數(shù)據(jù)類型,甚至還可以加上一個catalog信息,指明只有你只有按的是“中鍵”并發(fā)出這樣的消息才響應(yīng)。從上面可以看出,Android的Intent可以添加上class, action, data/type, catalog等消息,注冊中心會根據(jù)這些信息幫你找到符合的接收者。其中class是點對點的指示,一旦指明,其他信息都被忽略。Intent中還可以添加key/value的數(shù)據(jù),發(fā)送方和接收方需要保持統(tǒng)一的key信息和value類型信息,這種數(shù)據(jù)的marshal在java里做,是不費什么力氣的。
Android的Intent發(fā)送,可以分成單播和廣播兩種。廣播的接收者是所有注冊了的符合條件的IntentReceiver。在單播的情況下,即使有很多符合條件的接收者,也只要有一個出來處理這個消息就好(恩,個人看法,沒找到確切條款或抉擇的算法,本來想實驗一下,沒來得及...),這樣的情況很容易理解,當你需要修改某個數(shù)據(jù)的時候,你肯定不會希望有十個編輯器輪流讓你來處理。當廣播不是這樣,一個receiver沒有辦法阻止其他receiver進行對廣播事件的處理。這種情況也很容易理解,比如時鐘改變了,鬧鐘、備忘錄等很多程序都需要分別進行處理。在自己的程序的使用中,應(yīng)該分清楚區(qū)別,合理的使用。
9.ContentProvider數(shù)據(jù)模型
數(shù)據(jù)庫操作
從我目前掌握的知識來看,SQLite比較輕量(沒有存儲過程之類的繁雜手段),用起來也比較簡單。實例化一個SQLiteDatabase類對象,通過它的APIs可以搞定大部分的操作。從sample中看,Android中對db的使用有一種比較簡單的模式,即派生一個 ContentProviderDatabaseHelper類來進行SQLiteDatabase對象實例的獲取工作?;旧?,ContentProviderDatabaseHelper類扮演了一個singleton的角色,提供單一的實例化入口點,并屏蔽了數(shù)據(jù)庫創(chuàng)建、打開升級等細節(jié)。在ContentProvider中只需要調(diào)用ContentProviderDatabaseHelper的openDatabase方法獲取SQLiteDatabase的實例就好,而不需要進行數(shù)據(jù)庫狀態(tài)的判斷。URI 像進行數(shù)據(jù)庫操作需要用SQL一樣,對ContentProivder進行增刪改查等操作都是通過一種特定模式的URI來進行的(ig:content: //provider/item/id),URI的能力與URL類似,具體細節(jié)可以查看SDK。建立自己的ContentProvider,只需要派生 ContentProivder類并實現(xiàn)insert, delete, update等抽象函數(shù)即可。在這些接口中比較特殊的是getType(uri)。根據(jù)傳入的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域內(nèi))為該ContentURIPraser建立一個uri的語法樹,之后就可以簡單調(diào)用 ContentURIPraser類的相關(guān)方法進行uri類型判斷(match方法),獲取加載在uri中的參數(shù)等操作。但我看來,這只是在使用上簡化了相關(guān)操作(不然就需要自己做人肉解析了...),但并沒有改變類型判定的模式。你依然需要用switch...case...對uri的類型進行判斷,并進行相關(guān)后續(xù)的操作。從模式來看,這樣無疑是具有強烈的壞味道,類似的switch...case...代碼要出現(xiàn)N此,每次一個 ContentProvider做uri類型的增減都會需要遍歷修改每一個switch...case...,當然,如果你使用模式(策略模式...)進行改造對手機程序來說無疑是崩潰似的(類型膨脹,效率降低...),所以,只能是忍一忍了(恩,還好不會擴散到別的類中,維護性上不會有殺人性的麻煩...)。增刪改查
ContentProvider 和所有數(shù)據(jù)源一樣,向外提供增刪改查操作接口,這些都是基于uri的指令。進行insert操作的時候,你需要傳入一個uri和 ContentValues。uri的作用基本就限于指明增減條目的類型(從數(shù)據(jù)庫層面來看就是table名),ContentValues是一個 key/value表的封裝,提供方便的API進行插入數(shù)據(jù)類型和數(shù)據(jù)值的設(shè)置和獲取。在數(shù)據(jù)庫層面上來看,這應(yīng)該是column name與value的對應(yīng)。但為了屏蔽ContentProvider用戶涉及到具體數(shù)據(jù)庫的細節(jié),在Android的示例中,用了一個小小的模式。它為每一個表建一個基于BaseColumn類的派生類(其實完全可以不派生自BaseColumn,特別當你的表不基于默認的自動id做主鍵的時候),這個類通常包括一個描述該表的ContentURI對象和形如 public static final TITLE = “title”這樣的column到類數(shù)據(jù)的對應(yīng)。從改變上角度來看,你可以修改column的名字而不需要更改用戶上層代碼,增加了靈活性。insert方法如果成功會返回一個uri,該uri會在原有的uri基礎(chǔ)上增加有一個row id。對于為什么使用row id而不是key id我想破了腦袋。到最后,我發(fā)現(xiàn)我傻了,因為ContentProvider不一定需要使用數(shù)據(jù)庫,使用數(shù)據(jù)庫對應(yīng)的表也可以沒有主鍵,只有row id,才能在任何底層介質(zhì)下做索引標識。
但,基于row id在刪除和修改操作是會造成一定的混亂。刪除和修改操作類似。刪除操作需要傳入一個uri,一個where字串,一組where的參數(shù)(做條件判定...),而修改操作會多一個ContentValues做更新值。著兩個操作的uri都支持在末尾添加一個row id。于是混亂就出現(xiàn)了。當在where參數(shù)中指明了key id,而在uri中提供了row id,并且row id和key id所指函數(shù)不一致的時候,你聽誰的?示例代碼中的做法是完全無視row id(無語...),如此野蠻的方式我估計也只能在示例中出現(xiàn),在實際中該如何用,恩,我也不知道。幸運的是,我看了下上層對 ContentProvider的刪除操作,其實都不會直接進行,而是通過調(diào)用Cursor的delete方法進行,在這前提下,我想Cursor會處理好這些東西吧。
最后一個操作是查詢操作,可以想見,查詢的參數(shù)是最多的,包括uri和一組條件參數(shù)。條件參數(shù)類型和標準的sql類似,包括 sort, projection 之類的。從這些參數(shù)到sql語句的生成,可以尋求QueryBuilder類的幫助,它提供了一組操作接口,簡化了參數(shù)到sql的生成工作,哪怕你不懂 sql都完全沒有問題(這話說的我自己都覺得有點懸...)。查詢返回一個Cursor。Cursor是一個支持隨機讀寫的指針,不僅如此,它還提供了方便的刪除和修改的API,是上層對ContentProvider進行操作一個重要對象,需要仔細掌握(Cursor還可以綁定到view上,直接送顯,并與用戶進行交互,真是程序越往上,封裝越好,工作越機械沒有復(fù)雜性了...)。數(shù)據(jù)模型
在與界面打交道的Cursor、ContentResolver等數(shù)據(jù)操作層中,大量采用觀察者模式建立數(shù)據(jù)層與顯示層的聯(lián)系。一個顯示層的視圖,可以做成某一種觀察者注冊到Cursor或ContentResolver等數(shù)據(jù)中間層中,在實現(xiàn)底層ContentProvider中,我們需要特別注意在對數(shù)據(jù)進行修改操作(包括增刪改...)后,調(diào)用相應(yīng)類型的notify函數(shù),幫助表層對象進行刷新(還有一種刷新方式是從一個view發(fā)起的)??梢钥吹?Android的整體數(shù)據(jù)顯示框架有點像MVC的方式。Cursor、ContentResolver相當于控制層,數(shù)據(jù)層和顯示層的交互通過控制層來掌管,而且控制層很穩(wěn)定不需要特別定制,通常工作只在定制數(shù)據(jù)層和顯示層空間,還是比較方便和清晰的。
10.學習感想
通過這學期對安卓的學習,大概了解了以上一些知識,對安卓有了初步的了解,這幾個月給我的東西我想用有形的和無形的兩部分概敘,形的當然就是技術(shù)水平的長進,雖然其中肯定有很多的不足,相信慢慢會體會到。
第三篇:手機電量20%突然關(guān)機解決辦法(手機電池校正)
手機電量20%突然關(guān)機解決辦法(手機電池校正)
以下提供安卓手機電量顯示20%或更多,卻突然顯示電量不足關(guān)機的解決辦法——
安卓手機電池校正教程
電池校正:安卓手機電池校正方法
首先明確所謂的軟件矯正手機電池都是騙人的!
安卓手機都有著比較大的屏幕、繁多的軟件應(yīng)用以及高速上網(wǎng)等等眾多優(yōu)點,但安卓手機待機時間普遍較短。電池校正方法有哪些?手機電池校正方法介紹?,F(xiàn)在很多智能手機電池都不夠用,因此電池耐用的手機成了大家追求的目標。但是,對于已經(jīng)買了手機的朋友,電池校正的方法有哪些呢?以前充滿電可以用幾天,現(xiàn)在可能一天都不到,本文主要針對由于刷機所帶來的電池續(xù)航時間減小的問題,如果你的手機刷過機,那么可以根據(jù)不同情況采用以下方法,絕對管用,結(jié)果讓你驚喜:
(ps:本文所介紹的方法理論上適用于所有機型,不會對手機產(chǎn)生任何負面影響。)
電池校正:未root手機安卓電
1、將手機開機并連接充電器保持充電狀態(tài)。
2、等手機的充電顯示燈變成綠色以后就將充電器拔下。
3、將手機關(guān)機,然后再將充電器連接并繼續(xù)充電等到顯示燈變成綠色。
4、將充電器拔下并將手機開機,這時候就可以正常使用了?;颍?/p>
1.保持手機開機狀態(tài),連接充電器充電(USB和線纜充電均可)2.手機LED變成綠色后說明電池已經(jīng)充滿,把手機從充電器拔下 3.關(guān)閉手機,再連接充電器充電,讓手機再次充到LED燈變成綠色 4..拔下手機充電器
5.手機開機,等到手機開機并完全進入系統(tǒng)后,迅速關(guān)機
6.再次連接充電器到已經(jīng)關(guān)閉的手機,等待幾分鐘后LED燈會再次變成綠色 7.把手機從充電器拔下,開機正常使用 或:
1.手機關(guān)機,連上充電器直到提示電池電量充滿。建議最好能夠連續(xù)充電數(shù)小時或一夜時間以保證最大電量,切記在電池充滿電之前手機不要開機。2..充滿電之后,在不斷開充電器的前提下,手機開機。
3..手機進入系統(tǒng)之后,打開RE文件管理器或其他同類工具刪除/data/system/batterystats.bin這個文件。
4..隨后拔下電源,正常使用手機直到其自動關(guān)機。此時雖然手機自動關(guān)機,但是電池還存有很少量的電量,等待一至兩分鐘后手機再次開機,把剩余電量用完直到再次自動關(guān)機。5..隨后在關(guān)機狀態(tài)下手機重新充滿電即可開始正常使用。
電池校正:已經(jīng)root手機
1、跟上面一樣將手機開機并連接充電器進行充電,等電源顯示燈變成綠色以后將充電器拔下。
2、將手機關(guān)閉,再將充電器連接進行充電,知道顯示燈變成綠色,將充電器拔下。
3、將手機開機,等到完全開機的時候再迅速關(guān)機,關(guān)機之后再次連接充電器進行充電并等現(xiàn)實等變成綠色。
4、將手機啟動進去Recovey里的advance菜單里,點擊wipebatterystatus后重啟即可正常使用。
安卓電池校正之后你會發(fā)現(xiàn)之前充不滿的現(xiàn)在基本上都能夠充到100%了,續(xù)航能力也會給你驚喜的。大家要注意的是電池校準只需要一次即可,千萬不要重復(fù)進行,如果你的電池進行了校準之后依然沒有提升的話,那你的電視可能就存在問題了,你就要考慮一下是否是原裝電池。
電池校正:安卓電池校正方法
1、將手機關(guān)機,插上電源進行充電知道顯示燈為綠色。
2、不要拔下電源將手機開機,進入系統(tǒng)之后使用、Root Explorer或其他同類工具刪除/data/system/batterystats.bin這個文件。
3、將電源拔下,正常使用手機直到?jīng)]電自動關(guān)機。這時候手機還是有點殘存的電量的,等一至兩分鐘之后將手機再次開機將僅有的電量用完。
4、此時手機已經(jīng)重新獲取了當前電池的電量信息。此時在關(guān)機狀態(tài)下重新充滿電即可開始正常使用。
備注:)/data/system/batterystats.bin這個文件是系統(tǒng)記錄的包括電壓在內(nèi)的各種電池信息,刪除這個文件之后系統(tǒng)會重新開始統(tǒng)計電池的使用信息。Recovery中的“Wipe battery status”做的工作就是刪除/data/system/batterystats.bin這個文件。這個方法刪除電池所有的記錄信息,和手機恢復(fù)出廠是一樣的,目的是讓系統(tǒng)重新記錄手機當前電池(必須讓電池達到飽和狀態(tài))的信息,從而讓電池達到最佳狀態(tài),讓系統(tǒng)充分發(fā)揮電池的電量!安卓電池校正以后就盡量不要進行更換了。!補充說明幾點:
(1)/data/system/batterystats.bin這個文件是系統(tǒng)記錄的包括電壓在內(nèi)的各種電池信息,刪除這個文件之后系統(tǒng)會重新開始統(tǒng)計電池的使用信息。
(2)因為進Recovery時需要耗一點電,如果在電量未滿的情況下刪除電池信息文件會影響復(fù)位效果。
(3)刷ROM時會刪除/data/system/batterystats.bin這個文件。
(4)建議大家刷機時把手機充滿電再開始刷機,特別是現(xiàn)在感覺和以前相比起來特別費電的,估計就是rom和刷機剩余電量原因了,如果已經(jīng)刷過了,那么可以按照上面的教程試一下。
(5)注意電池校準只需要進行一次即可,多次嘗試以上方法也不會讓你的電池活性再增強。
注意:
1.一般情況下,電池出廠前,廠家都對其進行了預(yù)充電,并進行了激活處理,因此電池均有余電,有朋友說電池按照調(diào)整期時間充電,待機仍嚴重不足,假設(shè)電池確為正品電池的話,這種情況下應(yīng)延長調(diào)整期再進行3~5次完全充放電。
2.如果新買的手機電池是鋰離子,那么前3~5次充電一般稱為調(diào)整期,應(yīng)充14小時以上,以保證充分激活鋰離子的活性。鋰離子電池沒有記憶效應(yīng),但有很強的隋性,應(yīng)給予充分激活后,才能保證以后的使用能達到最佳效能。
3.有些自動化的智能型快速充電器當指示信號燈轉(zhuǎn)變時,只表示充滿了90%。充電器會自動改變用慢速充電將電池充滿。最好將電池充滿后使用,否則會縮短使用時間。
4.充電前,鋰電池不需要專門放電,放電不當反而會損壞電池。充電時盡量以慢充充電,減少快充方式;時間不要超過24小時。電池經(jīng)過三至五次完全充放電循環(huán)后其內(nèi)部的化學物質(zhì)才會被全部“激活”達到最佳使用效果。
5.請使用原廠或聲譽較好的品牌的充電器,鋰電池要用鋰電池專用充電器,并遵照指示說明,否則會損壞電池,甚至發(fā)生危險。
6.有很多用戶常常在充電時還把手機開著,其實這樣會很容易傷害手機壽命的,因為在充電的過程中,手機的電路板會發(fā)熱,此時如果有外來電話時,可能會產(chǎn)生瞬間回流電流,對手機內(nèi)部的零件造成損壞。
7.電池的壽命決定于反復(fù)充放電次數(shù),所以應(yīng)盡量避免電池有余電時充電,這樣會縮短電池的壽命。手機關(guān)機時間超過7天時,應(yīng)先將手機電池完全放電,充足電后再使用。8.手機電池都存在自放電,不用時鎳氫電池每天會按剩余容量的1%左右放電,鋰電池每天會按0.2%~0.3%放電。在給電池充電時,盡量使用專用插座,不要將充電器與電視機等家電共用插座。
9.不要將電池暴露在高溫或嚴寒下,像三伏天時,不應(yīng)把手機放在車里,經(jīng)受烈日的曝曬;或拿到空調(diào)房中,放在冷氣直吹的地方。當充電時,電池有一點熱是正常的,但不能讓它禁受高溫的“煎熬”。為了避免這種情況的發(fā)生,最好是在室溫下進行充電,并且不要在手機上覆蓋任何東西。
10.鋰離子電池必須選用專用充電器,否則可能會達不到飽和狀態(tài),影響其性能發(fā)揮。充電完畢后,應(yīng)避免放置在充電器上超過12小時以上,長期不用時應(yīng)使電池和手機分離。
第四篇:安卓實習報告
通信與電子信息專業(yè)實訓報告
項目名稱:基于android的游戲開發(fā)
班 級 10通信1班
姓 名
學 號
指導(dǎo)教師
成 績
實訓時間:年月日—
目錄
一、實訓目的及其意義............................................3 1.1、目的及意義..............................................3 1.2、研究現(xiàn)狀................................................3
二、實訓主要任務(wù)、重點及難點....................................4 2.1、任務(wù)....................................................4 2.2、重點內(nèi)容及實現(xiàn)途徑......................................4
三、實訓具體內(nèi)容及完成的主要工作................................5 3.1、認識基礎(chǔ)開發(fā)............................................6 3.2、了解數(shù)據(jù)存儲............................................6 3.3、總體實訓過程............................................7
四、實際遇到的困難,解決問題的方法和措施........................8
(一)、所遇問題.................................................8
(二)、解決方法與措施...........................................9
五、心得體會....................................................9
一、實訓目的及其意義 1.1、目的及意義 了解現(xiàn)階段互聯(lián)網(wǎng)發(fā)展主流,了解移動互聯(lián)網(wǎng),認識移動互聯(lián)網(wǎng)的發(fā)展與展望,認識android,了解基于android的應(yīng)用軟件開發(fā)方法及其商業(yè)流程。把理論與實際結(jié)合,通過對理論知識的理解,領(lǐng)悟從而運用到生活實際鞏固所學的知識,提高對實際生活的認識,積累經(jīng)驗。使學生在此期間能夠初次體會到實際生產(chǎn)中的種種技能與經(jīng)驗,完成一項項目鍛煉獨立思考及團隊合作能力。使學生們進一步加深對所學知識的理解,理論聯(lián)系實際,鞏固所學有關(guān)計算機基礎(chǔ)理論知識和基本技能,學習有關(guān)計算機最新技術(shù)方面的應(yīng)用,增強學生對計算機在社會生活,社會生產(chǎn)中應(yīng)用的感性認識,深入了解計算機在各個領(lǐng)域中的應(yīng)用狀況。生產(chǎn)實習是學校教學的重要補充部分,是區(qū)別于普通學校教育的一個顯著特征,是教育教學體系中的一個不可缺少的重要組成部分和不可替代的重要環(huán)節(jié)。它是與今后的職業(yè)生活最直接聯(lián)系的,學生在生產(chǎn)實習過程中將完成學習到就業(yè)的過渡,因此生產(chǎn)實習是培養(yǎng)技能型人才,實現(xiàn)培養(yǎng)目標的主要途徑。它不僅是校內(nèi)教學的延續(xù),而且是校內(nèi)教學的總結(jié)。生產(chǎn)實習一方面鞏固了書本上學到的理論知識,另一方面,可獲得在書本上不易了解和不易學到的生產(chǎn)現(xiàn)場的實際知識,使我們在實踐中得到提高實訓環(huán)節(jié)對于提高學生的綜合能力和全面素質(zhì)具有重要意義。1.2、研究現(xiàn)狀 android 是google開發(fā)的基于linux平臺的開源手機操作系統(tǒng)。它包括操作系統(tǒng)、用戶界面和應(yīng)用程序 —— 移動電話工作所需的全部軟件,而且不存在任何以往阻礙移動產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙。google與開放手機聯(lián)盟合作開發(fā)了 android,這個聯(lián)盟由包括中國移動、摩托羅拉、高通、宏達電和 t-mobile 在內(nèi)的 30 多家技術(shù)和無線應(yīng)用的領(lǐng)軍企業(yè)組成。google通過與運營商、設(shè)備制造商、開發(fā)商和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,希望借助建立標準化、開放式的移動電話軟件平臺,在移動產(chǎn)業(yè)內(nèi)形成一個開放式的生態(tài)系統(tǒng)。android主要使用于移動設(shè)備,如智能手機和平板電腦,由google公司和開放手機聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”。android操作系統(tǒng)最初由andy rubin開發(fā),主要支持手機。2005年8月由google收購注資。2007年11月,google與84家硬件制造商、軟件開發(fā)商及電信營運商組建開放手機聯(lián)盟共同研發(fā)改良android系統(tǒng)。隨后google以apache開源許可證的授權(quán)方式,發(fā)布了android的源代碼。第一部android智能手機發(fā)布于2008年10月。android逐漸擴展到平板電腦及其他領(lǐng)域上,如電視、數(shù)碼相機、游戲機等。2011年第一季度,android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。2012年11月數(shù)據(jù)顯示,android占據(jù)全球智能手機操作系統(tǒng)市場76%的份額,中國市場占有率為90%。目前基于android的移動終端上的軟件應(yīng)用開發(fā)很火熱,android平臺的開發(fā)已越來越強大。android是一種以linux為基礎(chǔ)的開放源碼操作系統(tǒng),主要使用于便攜設(shè)備。android操作系統(tǒng)最初由andy rubin創(chuàng)辦,最初只支持手機。2005年由google收購注資,并拉攏多家制造商組成開放手機聯(lián)盟(open handset alliance)開發(fā)改良,逐漸擴展到到平板電腦及其他領(lǐng)域上。
二、實訓主要任務(wù)、重點及難點 2.1、任務(wù)
認識移動互聯(lián)網(wǎng),了解移動互聯(lián)網(wǎng)的開發(fā),認識及了解android,在給定時間內(nèi)完成基于android平臺的游戲項目的開發(fā),實現(xiàn)預(yù)想游戲效果,熟悉項目開發(fā)的商業(yè)流程,給出游戲全套文檔及代碼。
2.2、重點內(nèi)容及實現(xiàn)途徑 2.2.1、重點內(nèi)容:熟悉游戲開發(fā)代碼,了解項目流程,對android游戲開發(fā)有基本了解。2.2.2、實現(xiàn)途徑:
所需運行硬件環(huán)境:
安卓系統(tǒng)2.2以上 3.5寸以上移動設(shè)備
軟件開發(fā)環(huán)境的配置:
(1)配置java程序開發(fā)環(huán)境
(2)安裝并漢化eclipse(jdk)(3)android sdk的安裝
(4)adt的安裝及配置
(5)android模擬器的配置
(6)office2003以上版本的軟件(繪圖visio)然后運用eclipse完成項目代碼的編寫,運行與調(diào)試; 最終在實體終端上進行測試,最終完成項目
三、實訓具體內(nèi)容及完成的主要工作
實訓前期,有老師給我們講解了現(xiàn)階段移動互聯(lián)網(wǎng)的發(fā)展,了解移動互聯(lián)網(wǎng)的發(fā)展主流,說明了現(xiàn)階段移動互聯(lián)的發(fā)展重要性。老師著重給我們講解了android的發(fā)展,以及現(xiàn)階段移動互聯(lián)中android所扮演的角色。接下來我們將針對基于android的游戲開發(fā)進行學習,由于時間的原因,我們主要了解了一下游戲開發(fā)的基本項目流程,具體的操作將在實訓過程中一一講解驗證。
接下來老師為我們講解了實訓的具體內(nèi)容,對于一個游戲開發(fā)項目,首先我們需要進行游戲開發(fā)的前期準備,主要是游戲開發(fā)環(huán)境的配置,以及團隊開發(fā)過程中的任務(wù)分配,之后緊張的游戲項目開發(fā)拉開了帷幕。在第一天我們主要學習了eclipse軟件的使用,包括游戲工程的創(chuàng)建等等。并且針對eclipse中的 android項目結(jié)構(gòu)進行了講解:android項目結(jié)構(gòu):src/ java原代碼存放目錄 gen/ 自動生成目錄 gen 目錄中存放所有由android開發(fā)工具自動生成的文件。目錄中最重要的就是r.java文件。這個文件由android開發(fā)工具自動產(chǎn)生的。res/ 資源(resource)目錄 在這個目錄中我們可以存放應(yīng)用使用到的各種資源,如xml界面文件,圖片或數(shù)據(jù)。assets資源目錄android除了提供/res目錄存放資源文件外,在/assets目錄也可以存放資源文件。androidmanifest.xml 項目清單文件。篇二:android實習報告
實習報告
實習目的:
生產(chǎn)實習是計算機科學與技術(shù)專業(yè)重要的實踐性教學活動,其目的是使學生們進一步加深對所學知識的理解,理論聯(lián)系實際,鞏固所學有關(guān)計算機基礎(chǔ)理論知識和基本技能,學習有關(guān)計算機最新技術(shù)方面的應(yīng)用,增強學生對計算機在社會生活,社會生產(chǎn)中應(yīng)用的感性認識,深入了解計算機在各個領(lǐng)域中的應(yīng)用狀況,學生在實習的同時,進行一定的社會實踐與調(diào)查活動,對于提高學生的綜合能力和全面素質(zhì)具有重要意義。
實習內(nèi)容: android主要有四大組件,分別為:activity 活動、service 服務(wù)、broadcast receivers 廣播接受者、content provider 內(nèi)容提供者。還有上激活組件intent。1.activity activity就是一個用戶可以直接接觸并看到的窗口,當新建一個android project后可以
看到在工程文件下的src中有一個已建好的java類firstactivity,系統(tǒng)也會自動為他配備一個布局文件main.xml,并在androidmanifest中對此activity進行注冊。
用戶想要自己創(chuàng)建一個activity,首先創(chuàng)建一個java類繼承自activity,可以為他配備一個布局文件用來顯示activity創(chuàng)建后的布局。最后在主配置文件manifest.xml中對創(chuàng)建的activity進行注冊,這一步是必不可少的,沒有注冊activity無法運行。在manifest.xml中會有許多的activity,但系統(tǒng)一次只能運行一個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()方法的第二參數(shù)用于指定操作模式,有四種模式android有一套自己的安全模型,當應(yīng)用程序(.apk)在安裝時系統(tǒng)就會分配給他一個userid,當該應(yīng)用要去訪問其他資源比如文件的時候,就需要userid匹配。默認情況下,任何應(yīng)用創(chuàng)建的文件,sharedpreferences,數(shù)據(jù)庫都應(yīng)該是私有的(位于/data/data/
/files),其他程序無法訪問。除非在創(chuàng)建時指定了context.mode_world_readable或者context.mode_world_writeable,只有這樣其他程序才能正確訪問。
實習流程: 2月18——2月27日,老師對于android開發(fā)進行了詳細的講解,其內(nèi)容包括:android 的背景介紹,發(fā)展過程,自身的優(yōu)勢與不足.android的控件、布局、activity、service等一系列基礎(chǔ)知識,對整個android的開發(fā)有了大致的了解 2月28日——3月2日: 學生自己開發(fā)android 3gabs項目,老師答疑及驗收
實習心得:
時間過的飛快,半個月的實習就要結(jié)束了,在這次實習中我們不僅學習了相關(guān)的專業(yè)知識而且讓我對android系統(tǒng)又有了一個更加深入的了解,它也是我們計算機專業(yè)的一個新的方向并且發(fā)展很迅速,為了今后的發(fā)展我們還需不斷努力學習!我國的信息產(chǎn)業(yè)還很落后,隨著社會的發(fā)展和國家的支持,手機上網(wǎng)是社會發(fā)展的趨勢,到時候手機上網(wǎng)將無處不在!之前我對android系統(tǒng)的了解之停留在應(yīng)用的層次上,對于更深層次的了解是很少的,通過這次實習,讓我對android系統(tǒng)有了一個更深層次的了解,同時它頁使我意識到無論朝哪個方向發(fā)展,主要還是要扎實深刻地學習,同時也得不斷努力探索!it業(yè)發(fā)展速度一直都是相當驚人的,不想被社會淘汰,我們就得必須不斷地學習,現(xiàn)在的社會不再是一勞永逸,其他行業(yè)也是如此,我們必須不斷地拿知識來武裝自己,不然被淘汰那是肯定的!現(xiàn)在就業(yè)難原因其實在于競爭的家具,為了在競爭中得到成功,我們必須時時刻刻學習,還學到了很多做人做事的道理,不僅懂得了要想在計算機這一行立足必須具備扎實的技術(shù)理論知識,還必須學會與人溝通,合作的能力,同時更懂得了嘗試的重要性,很多事情不是聽說是困難的它就是困難的,只有親自去做親自去體會才知道,其實它并沒有那么困難,這就是實踐的重要性!無論做什么事情都必須要堅持,只有堅持下去,才會成功!事在人為,就怕不做!我們不能怕失敗,關(guān)鍵是要從失敗中總結(jié)經(jīng)驗,帶著勇氣,帶著自信,堅持不懈,踏踏實實。這一次的實習是短暫的,但我收獲良多?;仡櫼郧八哌^的路,太多的無奈和迷茫,這次實習就像是我人生道路上的航標,為我指明了前景的方向,是我對自己的前途充滿了信心,我不僅知道了在人生的岔道口更適合朝哪個方向前進!更知道了在今后的道路上怎么去武裝自己!
實習結(jié)果:篇三:android生產(chǎn)實習報告
生產(chǎn)實習報告
一 實習目地
生產(chǎn)實習是把理論與實際結(jié)合,通過對理論知識的理解,領(lǐng)悟從而運用到生活實際,鞏固所學的知識,提高對實際生活的認識,積累經(jīng)驗。同時生產(chǎn)實習也是大學生以學生身份到工作者身份的一個重要過度階段。在此期間,學生能夠初次體會到實際生產(chǎn)中的種種技能與經(jīng)驗。完成一項項項目,能體現(xiàn)出獨立思考能力。android生產(chǎn)實習對目前應(yīng)用現(xiàn)狀進行了分析與比較,進而研究分析了android平臺的系統(tǒng)架構(gòu)和組件模型,在此基礎(chǔ)上,基于android平臺設(shè)計和開發(fā),實現(xiàn)對android編程的理解與應(yīng)用,特別是在對于控件的應(yīng)用產(chǎn)生很深的理解。android平臺是目前最普遍的手機應(yīng)用平臺,android實習可以讓我們與時代最新最廣泛的軟件開發(fā)聯(lián)系起來,鍛煉我們的學習能力,并且讓我們可以更加人性化,清晰的為用戶考慮。
二 實習內(nèi)容
此次實習是對android的簡單的應(yīng)用與開發(fā),也是對android各個控件的學習與實踐。在java的環(huán)境中對界面,應(yīng)用進行編程。本次實習重點完成了安卓開發(fā)計算器、安卓開發(fā)學生注冊界面、安卓開發(fā)音樂播放器和安卓開發(fā)游戲連連看這四個項目。
做學生注冊界面的時候?qū)W習了linearlayout,tablelayout, absolutelayout, relativelayout四種布局,分別為線型布局,表格布局,絕對布局和相對布局,并知道了如何通過這四種布局的相互嵌套來使程序的界面更加的友好,更加的讓用戶接受。并簡單的了解了安卓目錄下src,gen,res等文件夾中的文件在項目中的作用,學習了切換界面的類intent。
然后學習了button,textview,seekbar等android開發(fā)的控件,并且將這些控件都運用到了所作的學生注冊界面中。
做音樂播放器時學習了關(guān)于音樂文件的調(diào)用,也學習了在主文件main.java中先創(chuàng)建多媒體對象后,然后通過sd卡的文件路徑來創(chuàng)建一個播放資源,然后在創(chuàng)建按鈕對象,同時添加6個按鈕對象創(chuàng)造各自的偵聽方法,我們用listactivity來布局播放界面,用imagebutton來實現(xiàn)播放器的開始,暫停的操作。最后在開發(fā)連連看游戲時,將前面所學的知識進行綜合與加深,也學習到了新的函數(shù)與控件,該游戲主要包括classgameview(游戲視類,處理游戲中出現(xiàn)的情況,包括界面生成,算法等)classgameactivity(處理游戲中的消息提示),classstartactivity(游戲菜單設(shè)計),classsetactivity(菜單中游戲難度設(shè)定)這些類。比如用random函數(shù)來對連連看進行重排列,還有用menu對游戲里的功能進行操作,還有用之前學到關(guān)于多媒體對象的調(diào)用將連連看游戲進行配樂。并且選用了網(wǎng)格對游戲界面進行了規(guī)劃,以及對于相同圖片的的消去,必須滿足情況:1,圖片相同;2,兩個圖片之間必須沒有障礙物,可以用若干個垂直的直線連接起來;3,連接兩個圖片的直線線段的轉(zhuǎn)折點不超過兩個(連接線由x軸和y軸 的平行線組成,即無拐點,一個拐點,兩個拐點)。
三 實習流程
此次對android應(yīng)用與開發(fā)的實習分為以下幾個階段。
首先,由老師帶領(lǐng)我們對android以及開發(fā)軟件eclimpse進行了一個大概的了解與操作,并且對開發(fā)語言基礎(chǔ)java的基礎(chǔ)知識和編程思想進行了一次簡單的復(fù)習與加深。
然后老師開始帶領(lǐng)我們學習android界面的開發(fā),并且告訴我們?nèi)绾慰梢詫⒔缑姹M量做得美觀與方便,告訴我們作為程序的開發(fā)人員要為用戶考慮,在這一階段,我們開始試著學習和操作android的簡單控件,包括textview,button等。
接著我們開始自己開發(fā)計算器,第一次將自己學到的控件進行組合搭配,并且開始學會怎么去監(jiān)聽按鈕,通過對安卓常用類的學習,我們完成了計算器的常用功能。然而,對于計算機功能的實現(xiàn),我感覺自己還沒有辦法做到自己想到的所有功能這讓我對android更加滿興趣的學習下去。
當初步接觸到了控件的開發(fā)與搭配后,我們開始開發(fā)學生注冊界面,并且將所輸入的信息反應(yīng)到下一個界面中,在做這個的時候,我們又新學習了seekbar,checkbox等控件,讓我們進一步學習了android中的常用控件。
然后是對音樂播放器的開發(fā),此階段我開始真正的接觸到了生活中自己經(jīng)常用到的軟件的開發(fā),并且也讓我第一次感覺到需要將自己開發(fā)的軟件做的美觀,于是我們開始學會調(diào)用背景圖片,調(diào)用歌曲,并且學習了radiobutton控件,以及播放器中對音樂的下跳,循環(huán)播放等功能的學習與實現(xiàn)。
最后是開發(fā)游戲“連連看”,在此之前老師先向我們介紹了對于圖片的處理等相關(guān)知識。
對于連連看,我們很熟悉,也明白其中的游戲規(guī)則;然而把它們用計算機語言展示出來卻比用文字語言展示出來要難上很多。因此這個項目也是用時最多的一個項目,期間融合了算法設(shè)計以及之前幾個項目所學的知識。雖然在參考資料
下,完成了項目;但是也存在很多不足。當然也有自己特點的地方,比如添加了成功幾步就獎勵時間,比如游戲的配備音樂,以及音樂的開關(guān)按鈕。
四 實習心得
通過這三個星期的畢業(yè)實習,我學到了很多關(guān)于android系統(tǒng)的技術(shù)知識,雖然實習的時間短暫但我仍舊收獲很多。首先,在每一天我認識了新的控件及相關(guān)的使用;其次,我們了解android系統(tǒng)的歷史和今后的發(fā)展以及相關(guān)android系統(tǒng)的總體構(gòu)成,然后,我們學會了android編譯系統(tǒng)的搭建,以及在這個環(huán)境下編寫代碼,最后制作了簡單的音樂播放器以及連連看游戲等軟件;在這個過程中,我真正的了解到了理論與實際相結(jié)合的必要性以及獨立思考的重要性。
生成實習是為將來打基礎(chǔ)的重要階段,珍惜自己每一個工作的機會,不論什么人,什么學歷,從事什么工作,好好的表現(xiàn)、展示自己的能力,不要錯過好的機遇。沒有一件事情是輕輕松松的,但每一件事都是讓人成長的,經(jīng)歷一段過程,喜悅或是艱辛,盡管經(jīng)歷的方式不盡相同,但它的結(jié)果是相同的,我們都會因涉事而成長。通過這次實習,開闊了我的視野。這次的實習初步為我解開了安卓的神秘面紗,對于腦海中的那個可望而不可即,可玩兒不可解的安卓平臺初步走入了它的神秘世界;既感到興奮又感到驚奇,更感到壓力,方知知識海洋的廣大,學員任重道遠。這次實習讓我看清自己需要什么,同時也讓我吸取了許多學習以及和人相處的經(jīng)驗,這將對我以后踏足社會,謀生立業(yè)有很好的借鑒和幫助作用。今后,我會珍惜這些寶貴的經(jīng)驗,在人生的旅途中勇往直前,迎接時代的挑戰(zhàn)。篇四:安卓實訓報告
實習報告書
專 業(yè) 計算機科學與技術(shù) 系 別
報告題目
安卓
報告人 班
級
指導(dǎo)教師
帶隊教師 實習時間 實習地點
教務(wù)處監(jiān)制 篇五:安卓記事本實習報告 android記事本的設(shè)計與實現(xiàn) ——sqlite數(shù)據(jù)庫的設(shè)計和操作
學生姓名: 指導(dǎo)老師:
摘 要: 隨著智能手機的快速普及,智能手機操作系統(tǒng)市場風生水起。android的最大特點是其開放性體系架構(gòu),不僅具有非常好的開發(fā)、調(diào)試環(huán)境,而且還支持各種可擴展的用戶體驗,包括豐富的圖形組件、多媒體支持功能以及強大的瀏覽器。
本文主要介紹了一款android記事本sqlite數(shù)據(jù)庫模塊的設(shè)計與實現(xiàn)。根據(jù)人們?nèi)粘I畹男枰?,該記事本的?nèi)容包括運用sqlite封裝好的方法對數(shù)據(jù)進行添加、刪除、修改、更新和密碼進入等功能,并且將查詢到的數(shù)據(jù)傳遞給activity,具有一定的實用性。關(guān)鍵詞: 記事本;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 系統(tǒng)可行性分析..................................................................................................................................5 1.4 系統(tǒng)主要任務(wù)....................................................................................................................................5 2.系統(tǒng)方案設(shè)計.................................................................................................................................................6 2.1 搭建android開發(fā)平臺.....................................................................................................................6 2.2 sqlite數(shù)據(jù)庫簡介............................................................................................................................7 2.3 總體方案設(shè)計...................................................................................................................................10 3.系統(tǒng)軟件開發(fā)環(huán)境.......................................................................................................................................10 3.1 windows開發(fā)環(huán)境...........................................................................................................................10 3.2 java集成開發(fā)環(huán)境eclipse...........................................................................................................11 3.3 adt plugin for eclipse...............................................................................................................11 4.程序設(shè)計.......................................................................................................................................................12 4.1 程序詳細設(shè)計...................................................................................................................................12 4.2 程序運行及效果截圖.......................................................................................................................13 4.3 對sqlite數(shù)據(jù)庫增刪改查代碼實現(xiàn).............................................................................................18 5.工作總結(jié)與展望...........................................................................................................................................23 參考文獻...........................................................................................................................................................24 1.引言
1.1 項目背景 window操作系統(tǒng)的誕生成就了微軟帝國,同時也造就了pc時代的繁榮,然而如今,以android和iphone手機為代表的智能移動設(shè)備的發(fā)明與互聯(lián)網(wǎng)云技術(shù)的興起卻敲響了pc時代的喪鐘!這也預(yù)示著移動互聯(lián)網(wǎng)時代(3g)已經(jīng)來臨。在這個互聯(lián)網(wǎng)繁榮的時代,有一顆超新星,以它獨特性能優(yōu)勢與人性化的ui設(shè)計使它在短短的幾年迅速的占領(lǐng)了智能移動設(shè)備的市場份額,它就是google的android!這也意味著google在移動互聯(lián)網(wǎng)時代開始搶跑并領(lǐng)跑。
通過調(diào)查顯示,大部分消費者都會使用手機記事本功能。隨著手機記事本功能的不斷加強與完善,手機記事本對于人們的意義,已不僅僅像一般記事簿一樣簡單記錄,而是向著更個性化人性化的方向發(fā)展。android[1]系統(tǒng)是開源的,它以迅猛的姿勢已經(jīng)占領(lǐng)了全球一半多的市場。記事本在生活和工作也日益凸顯出它的重要性,它能更好地幫助人們更好地管理自己的工作和生活,極大的方便了人們的生活。因其開源,我們可以在之上開發(fā)安卓記事本軟件,同時這也符合廣大的市場需求。1.2 項目意義 近幾年來隨著3g技術(shù)成熟和智能手機的不斷普及,移動應(yīng)用的需求與日俱增,移動應(yīng)用開發(fā)成為當下最熱門的技術(shù)之一。在google和android手機聯(lián)盟的共同推動下,android在眾多移動應(yīng)用開發(fā)平臺中脫穎而出。android是一個真正意義上的開源智能手機操作系統(tǒng),該系統(tǒng)一經(jīng)推出立即受到全球移動設(shè)備廠商和開發(fā)者的熱捧。
我們都知道,無論是產(chǎn)品還是技術(shù),商業(yè)應(yīng)用都是它最大的發(fā)展動力。安卓如此受到廠商與開發(fā)者的青睞,它的前景是一片光明的。國內(nèi)對于安卓這方面的市場還沒有完全開發(fā)出來。只要我們努力學習安卓,對理想,對生活都會有很大的補益。因此,開發(fā)這樣一套很簡單的記事本軟件對我們來講是一件很有必要的事情,在下面的各章中我們將以開發(fā)安卓記事本軟件為例,談?wù)勂溟_發(fā)過程和所涉及到的問題及解決方法。1.3 系統(tǒng)可行性分析 1.3.1 課題調(diào)研
(1)與實踐活動和相關(guān)的文件和資料由作者本人網(wǎng)絡(luò)查找,以及老師幫助。
(2)具有遇到問題,具有獨立思考,耐心鉆研,向老師虛心求教的良好態(tài)度。
(3)關(guān)于技術(shù)方面的難題,跟指導(dǎo)老師面談。1.3.2 可行性分析
(1)技術(shù)可行性:本項目僅需要一臺裝有eclipse及配置好android開發(fā)環(huán)境的計算機即可,對計算機本身有一定的要求,它可以使用windows xp及其以上版本,mac os,linux等操作系統(tǒng)。
(2)經(jīng)濟可行性:由于本軟件開發(fā)只有三個人,三臺電腦就行,基本不需要太大的成本.在經(jīng)濟上完全可行。
(3)操作可行性:界面設(shè)計時充分考慮用戶的習慣以及手機方面的局限性,程序必須要很簡單;本程序只涉及到開發(fā)環(huán)境配置,安卓組件的熟悉,以及安卓平臺上的數(shù)據(jù)存儲。并沒有太大的難度,所以,該項目完全有可操作性。1.4 系統(tǒng)主要任務(wù)(1)設(shè)計實現(xiàn)”添加新記事”,”編輯內(nèi)容”,”刪除當前記事”這三個主要的功能模塊。(2)分析并解決實現(xiàn)中的若干技術(shù)問題,像組件的選擇以及保存方式的選擇。(3)進行測試并分析結(jié)果。
當然記事本的基本功能,建立新文件、修改現(xiàn)有文件、刪除文件、查看已建立文件等功能是首先必須完成的??梢跃帉憙?nèi)容,編輯及刪除,讓記事的方式多樣化。記事本軟件的界面設(shè)計力求簡潔,給人清爽的感覺,讓圖標及按鈕以協(xié)調(diào)的布局呈現(xiàn)出了,菜單功能要相對簡單,讓用戶操作方便,從而讓用戶體會到此款軟件的實用。因為上述操作涉及到的數(shù)據(jù)量不大,所以將數(shù)據(jù)庫定為安卓系統(tǒng)自帶的sqlite數(shù)據(jù)庫[3],所以這就要求我們要實現(xiàn)在sqlite數(shù)據(jù)庫上面的增刪改查。不少人希望自己記事本上面的內(nèi)容不被被人查看,所以要以設(shè)置密碼的形式來實現(xiàn)保密。鑒于各種各樣的密碼實現(xiàn)方式,我們選擇了用戶體驗最好的手勢解鎖方式。以及采用了更加友好的時間顯示方式,讓用戶在使用過程中更加的舒服方便。記事本軟件要內(nèi)存占用適中,cpu占用也是適中,這樣讓軟件運行順暢。
第五篇:安卓課程設(shè)計報告
安 卓 課 程 設(shè) 計
班 級 09級計算機二班
學 號 20097923 姓 名 郭丹
目錄
第1章
安卓應(yīng)用程序開發(fā)背景..........................................................3 §1.1開發(fā)背景...................................................................................3 §1.2開發(fā)環(huán)境...................................................................................4 第2章 第3章 §3.1 §3.2 §3.3 第4章
安卓應(yīng)用程序開發(fā)理論與方法..............................................4 “計算器”應(yīng)用程序的設(shè)計與實現(xiàn).......................................6 擬解決的問題及目標.............................................................6 總體設(shè)計................................................................................7 詳細設(shè)計與編碼實現(xiàn).............................................................7 總結(jié).......................................................................................17 2
第1章
安卓應(yīng)用程序開發(fā)背景
§1.1開發(fā)背景
1.智能手機的市場
(1)功能多樣化的智能手機挑戰(zhàn)全球PC出貨量
移動互聯(lián)網(wǎng)時代的來臨,直接促進了搭載智能操作系統(tǒng)、具有強大擴展性的智能手機、平板電腦等移動終端產(chǎn)業(yè)的蓬勃發(fā)展。來自美國最大的風險投資機構(gòu)KPCB的數(shù)據(jù)顯示,全球智能手機出貨量正在以遠高于臺式電腦、筆記本電腦出貨量的速度快速增長,該機構(gòu)預(yù)計2011年全球智能手機出貨量將達到4.13億,超過臺式電腦與筆記本電腦出貨量的總和。
(2)智能手機的用戶使用數(shù)量正在高速增長。據(jù)市場調(diào)研機構(gòu)Gartner信息,2011年全球智能手機的總出貨量將會達到4.68億部,相比2010年實現(xiàn)了57.7%的增長,而谷歌Android操作系統(tǒng)將會在今年之內(nèi)成為全球最大的智能手機操作系統(tǒng)。另外,全球市場調(diào)研機構(gòu)IDC預(yù)計未來5年中國手機市場上,智能手機替代傳統(tǒng)功能手機的趨勢將日益明顯,未來5年中國智能手機市場復(fù)合增長率將達到34.1%,人們對IT設(shè)備智能化的向往是這一增長率能夠?qū)崿F(xiàn)的主要因素,并且與其他國家相比,中國智能手機市場的發(fā)展空間更加廣闊。(3)操作系統(tǒng)格局預(yù)測:Android有望成為智能手機市場主導(dǎo)力量
搭載Android操作系統(tǒng)的智能手機目前已經(jīng)成為市場上最炙手可熱的智能產(chǎn)品。來自美國市場研究機構(gòu)Gartner的數(shù)據(jù)顯示,Android操作系統(tǒng)所占的市場份額從2008年的0.5%急劇增長到2011年的15.94%。開放的源代碼和零成本已經(jīng)讓Android在全世界范圍內(nèi)受到青睞并迅速獲得了主要手機廠商和數(shù)百萬軟件開發(fā)者的支持,Gartner預(yù)計,未來Android系統(tǒng)的市場份額有望超過其他操作系統(tǒng),從而成為全球第一大智能手機操作系統(tǒng)。2.安卓手機介紹
安卓手機指的是用Android操作系統(tǒng)的手機。安卓(Android)是基于Linux內(nèi)核的操作系統(tǒng),是Google公司在2007年11月5日公布的手機操作系統(tǒng)。
同樣都是手機上面用的智能系統(tǒng),安卓的系統(tǒng)是新生系統(tǒng),界面更為華麗,開源性更強,當然因為是新生系統(tǒng),所以在第三方軟件方面暫時還不太多。因此,安卓應(yīng)用程序的需求還是很迫切的。3.軟件人才需求
據(jù)業(yè)內(nèi)統(tǒng)計,目前國內(nèi)的Android研發(fā)人才缺口至少30萬。由于目前Android技術(shù)較新,無論是相關(guān)書籍、培訓還是大學教育,都處于初級階段,因此Android人才短期將供不應(yīng)求。從長期來看,隨著各種移動應(yīng)用和手機游戲等內(nèi)容需求日益增加,也將激勵大中小型手機應(yīng)用開發(fā)商加大對Android應(yīng)用的開發(fā)力度,因此Android人才的就業(yè)前景也非常廣泛。
綜上所述,在這樣的背景下,安卓有很強的生命力。同時,作為一個新生的系統(tǒng),其應(yīng)用程序目前并不多,安卓應(yīng)用程序的需求還是很迫切的,安卓研發(fā)人才的缺口還很大。這些都促進了我們學習開發(fā)安卓應(yīng)用程序。
§1.2開發(fā)環(huán)境
安卓應(yīng)用程序開發(fā)環(huán)境如下:
①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章
安卓應(yīng)用程序開發(fā)理論與方法
1、Activity的相關(guān)知識
簡單理解Activity 代表一個用戶所能看到的屏幕,Activity 主要是處理一個應(yīng)用的整體性工作。Activity是最基本的Android 應(yīng)用程序組件,應(yīng)用程序中,一個活動通常就是一個單獨的屏幕。每一個活動都被實現(xiàn)為一個獨立的類,并且從活動基類中繼承而來,活動類將會顯示由視圖控件組成的用戶接口,并對事件做出響應(yīng)。大多數(shù)的應(yīng)用是由多個屏幕顯示組成,因而要用到多個Activity。(1)Activity的相關(guān)方法及相關(guān)函數(shù): A、void onCreate(Bundle)首次啟動時調(diào)用,接受參數(shù):Null or savedInstanceState(保存的以前某些狀態(tài)信息)B、void onStart()說明了將要顯示給用戶的活動
C、void onRestart()將處于停止狀態(tài)的活動重新顯示給用戶 D、void onResume()用戶可以開始與活動進行交互時調(diào)用。如動畫播放和音樂播放。E、void onPause()活動將要進入后臺運行時調(diào)用。(此時前臺啟動了另一個活動)F、void onStop()不需要某個活動了,就調(diào)用 G、void onDestroy()銷毀活動
(2)多個Activity之間的跳轉(zhuǎn):
通過Intent類實現(xiàn)屏幕之間的跳轉(zhuǎn)(包括沒有參數(shù)關(guān)系和需要傳遞參數(shù)兩種情況)。
(3)兩個Activity之間進行數(shù)據(jù)交換: startActivity()只有Intent一個參數(shù)。
public void startSubActivity(Intent intent, int requestCode)(requestCode:用來標識某一個調(diào)用,一般定義一個常量。)
傳過去:函數(shù)原型為: public Intent setData(ContentURI data)然后,參數(shù)帶到新的Activity后,同樣用Activity.getIntent()函數(shù)可得到當前過來的Intent對象,然后用getData()就取到參數(shù)了。傳回來:函數(shù)原型為: public final void setResult(int resultCode, String data)
2、Intent的相關(guān)知識 Intent 是描述應(yīng)用想要做什么。Android 使用了Intent 這個特殊類,實現(xiàn)在屏幕與屏幕之間移動。Intent 數(shù)據(jù)結(jié)構(gòu)兩個最重要的部分是動作和動作對應(yīng)的數(shù)據(jù)。Intent類綁定一次操作,它負責攜帶這次操作所需要的數(shù)據(jù)以及操作的類型等。
3、Layout 用于用戶界面設(shè)計。包含AbsoluteLayout,F(xiàn)rameLayout,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章
“計算器”應(yīng)用程序的設(shè)計與實現(xiàn)
§3.1 擬解決的問題及目標
本計算器程序要解決日常生活中常見的基本數(shù)據(jù)計算問題,程序要實現(xiàn)的目標有如下幾個:
(1)要實現(xiàn)基本的加、減、乘、除四則運算。
(2)可以實現(xiàn)在前一步計算結(jié)果上繼續(xù)作加、減、乘、除,即連加、減、乘、除。
(3)有清空功能,即清除所有數(shù)據(jù),重新開始計算。
(4)可實現(xiàn)基本的三角函數(shù)的計算,如:正弦,余弦,正切,余切。(5)可實現(xiàn)一些特殊運算,如:平方,立方,開方,求對數(shù)等。
§3.2 總體設(shè)計
1、系統(tǒng)的軟件結(jié)構(gòu)圖
計算器基本加減乘除運算三角函數(shù)運算其他運算加減乘法法法除法正弦余弦正余切切平方立方開方對數(shù) 圖3-1
2、功能的操作流程
首先用戶根據(jù)自己的實際需要選擇計算的類型,然后進入不同的計算類型,再進行要執(zhí)行的運算,輸入數(shù)據(jù),選擇運算符號,即可得到結(jié)果。
§3.3 詳細設(shè)計與編碼實現(xiàn)
1、功能選擇界面
圖3-2為系統(tǒng)主界面。用戶可以根據(jù)需要點擊不同按鈕進入不同功能的子界面。亦可以點擊退出按鈕退出本程序。
圖3-2
本界面用LinearLayout來布局,主要用到的控件是Button。頁面的跳轉(zhuǎn)是通過intent來是實現(xiàn)的。跳轉(zhuǎn)的主要代碼如下: 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為加基本減乘除界面。用戶在文本框中輸入?yún)⒓舆\算的數(shù)據(jù),并點擊要進行的運算符號,然后點擊等號之后,將在等號下方顯示結(jié)果處顯示出計算結(jié)果。點擊clear按鈕,可以將兩個文本框中的內(nèi)容以及顯示的結(jié)果一起清空,用戶可以輸入新的數(shù)據(jù)計算。
在文本框中輸入時可以用圖右側(cè)的硬鍵盤,或者是手機自帶的軟鍵盤。
圖3-3
示例如下:
(1)用戶要計算1.23+2.16.在文本框1中輸入1.23,點擊“+”,再在文本框2中輸入2.16,點擊“=”,就可以顯示出計算結(jié)果3.39.如下:
圖3-4
(2)計算1-0.32,如圖3-5 圖3-5
(3)計算3.24*0.25,如圖3-6所示。
圖3-6
4)計算55/4,結(jié)果為13.75.如下圖所示:(圖3-7
(5)計算1/6.如下圖所示。由圖3-8可以看出,當除不盡時本計算器保留到8位小數(shù),并且最后一位采用了四舍五入的方法,比較科學、準確。
圖3-8(6)點擊clear之后全部清空:
圖3-9
具體的實現(xiàn):主要的思路是,用戶先輸?shù)谝粋€數(shù),然后點擊運算符號,在程序中監(jiān)聽按鈕的點擊,如果點擊了+、--、*、/中某一按鈕,這時,就取editText1中的值,通過myeditText1= editText1.getText().toString()實現(xiàn),為了參與運算,需要把字符串類型轉(zhuǎn)換為浮點型,并將其值賦給變量a,代碼為a=Float.parseFloat(myeditText1);用flag的不同值記錄用戶點擊的不同的運算按鈕。當用戶點擊“=”時,就將editText2中的內(nèi)容取出,也同樣轉(zhuǎn)化為數(shù)值,并用b記錄,然后判斷flag的值即可知道對應(yīng)應(yīng)采取哪種計算,進而算出最終結(jié)果,并用textView1顯示出計算結(jié)果?!扒蹇铡钡膶崿F(xiàn)是使對應(yīng)控件的內(nèi)容取空即可。核心代碼如下:
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 = ”顯示結(jié)果: “;s += result;
textView1.setText(s);break;case R.id.button6:
} editText1.setText(”“);editText2.setText(”“);textView1.setText(”顯示結(jié)果:");break;
3、三角函數(shù)運算界面
圖3-10為三角函數(shù)運算界面。用戶在文本框中輸入?yún)⑴c計算的數(shù)據(jù),然后選擇點擊要進行的運算類型,這時在顯示結(jié)果處就會顯示計算結(jié)果。例如,要計算sin30度,先在文本框中輸入30,然后點擊sin按鈕,這時就會顯示結(jié)果為0.5.同理,可進行其他計算。
圖3-10
4、其他運算界面
圖3-11為其他運算界面,目前可實現(xiàn)平方、立方、開方、求以10為底的對數(shù)四種運算,由于時間有限,這個界面目前功能并不完善,暫時實現(xiàn)四種運算,不過,基于本計算器程序的設(shè)計理念,本界面主要實現(xiàn)一些其他運算,包括一些特殊運算。在今后,這個界面可以修改和擴充,以至擁有更加完善豐富的計算功能。在現(xiàn)有的界面上的操作流程如下:用戶在文本框中輸入要進行運算的數(shù)據(jù),然后選擇點擊運算按鈕,即可顯示運算結(jié)果。如輸入0.5,點擊平方,即顯示結(jié)果0.25,操作方便。
圖3-11
第4章
總結(jié)
在本次安卓應(yīng)用程序開發(fā)之中,我收獲很多,現(xiàn)總結(jié)如下:
安卓設(shè)計開發(fā)過程初期,我打算設(shè)計制作一個計算器。但是,剛開始并不能預(yù)測難度,不知道在短期內(nèi)能否很好的完成,于是我的想法是,先實現(xiàn)基本的加、減、乘、除四則運算,然后在此基礎(chǔ)上進一步完善豐富其運算功能。首先遇到的問題便是要不要做一個數(shù)字鍵盤。剛開始也試著做了一個鍵盤,是用button做的,需要很好的布局,但是每當擴充一種功能時,為了使界面整體美觀,甚至都要重新設(shè)計,很麻煩。后來候突然想到手機有硬鍵盤,也有自帶的軟鍵盤,何不運算的時候直接調(diào)出已有的軟鍵盤?這樣,根本沒有什么必要自己做鍵盤了,而只需做出運算的按鈕即可了。由于當時的目標只是實現(xiàn)加減乘除,因此設(shè)計的界面是用兩個文本框輸入兩個數(shù)據(jù),然后有+、-、*、/四個按鈕供選擇,又加一個“=”按鈕用于觸發(fā)顯示結(jié)果。界面很簡單,使用很方便。然后就是才用合適的算法來實現(xiàn)功能。經(jīng)過思考和多次修改,最后確定了一種比較簡明的算法實現(xiàn)。
基本加減乘除功能已經(jīng)實現(xiàn),但是計算器的功能過于簡單了,接下來便是擴充功能。我首先想到的是需要能實現(xiàn)三角函數(shù)運算,常見的平方、開方等運算。但是我遇到了困難。由于剛開始設(shè)計的加減乘除運算都是二元運算,因此界面設(shè)計的是在兩個文本框中輸入兩個數(shù),但是三角函數(shù)計算,平方開方計算都是一元運算,參加運算的數(shù)據(jù)都只有一個,因而,在原界面上直接擴充并不合適,兩個文本框成了擴充的限制。后來經(jīng)過思考,決定將這些擴充的功能做到別的界面上,與已有的界面相獨立,重新設(shè)計,這樣只需將運算分類,再做一個功能選擇的界面,點擊不同的運算類別進入不同的運算界面即可,這樣這個問題便得到了很好的解決。但是這次設(shè)計卻給了我很大的教訓,開發(fā)應(yīng)用軟件的初期設(shè)計很重要,不僅要實現(xiàn)現(xiàn)在的目標,還要考慮以后能否進行功能擴充,設(shè)計要便于以后的功能擴充,否則,到后來需要擴充時遇到困難,甚至要推翻已有的設(shè)計,花費很大的代價。另外,由于時間緊迫,三角函數(shù)界面和其他運算界面的功能并不十分完善,只是一些基本的運算,初步體現(xiàn)出了設(shè)計的思想,今后還可以進行進一步的擴充,以完善其功能。
在本次開發(fā)過程中,我對開發(fā)環(huán)境進一步的熟悉,基本上可以熟練運用這個 環(huán)境,也基本掌握了安卓的開發(fā)方法及基本流程。在本次開發(fā)過程中,主要用到的知識有Activity的使用,在程序中用到了多個窗口,因而需創(chuàng)建多個Activity。還用到了Intent,主要是用于多個Activity之間的跳轉(zhuǎn),對Intent的作用和用法有了更進一步的熟悉。在本次程序設(shè)計中,我也對用戶界面設(shè)計有了更進一步的掌握,熟練運用Layout,本次用到的主要是LinearLayout和RelativeLayout。
開發(fā)期間,我學會了有目的的去學習一些將要用到的東西,仔細地考慮工作流程的規(guī)律和步驟,充分利用手中的開發(fā)工具,利用其所具備的功能,盡量使自己的開發(fā)在代碼上實現(xiàn)少而精確、讓用戶能夠盡量簡單地進行操作。但是在檢測過程中,還是出現(xiàn)了很多的不足之處,這些都是要在今后的工作中需要努力改進和完善的。
在這次程序開發(fā)設(shè)計中,我也難免會遇到不少困難,這主要是由于我對所用的開發(fā)環(huán)境并不是很熟悉,開發(fā)軟件的經(jīng)驗不足。安卓開發(fā)用的語言是java,但是我對java的學習并不多,這次開發(fā)對我來說可以算是一個全新的嘗試,整個開發(fā)過程并不是很順利,卻使我從中充分體會到學習的快樂,開發(fā)的程序也在一步步得到完善。這次程序開發(fā)由于個人水平及時間有限等原因,只能完成一些基本的功能,好多設(shè)想并未完全實現(xiàn),這不能不說是個遺憾,后期仍需努力。