第一篇:android開發(fā)實習報告總結
Android開發(fā)實習總結
有一名話叫做:不經過風雨,怎么見彩虹?我想改一下:不真正進入社會,怎能了解社會呢?
在這次實習中,給我收獲最大的是我覺得很多工作需要我去摸索和探討,要不怕吃苦,勇于激流勇進,有的工作雖然單挑又重復,但這是磨練意志最有效的方法,我告誡自己要認真完成,對每項工作都要他看成是公司對自己的一次考核,做到每一件事的過程中遇到困難,一定要爭取不拋棄,不放棄,堅持“戰(zhàn)斗”,只要希望還在,勝利一定屬于我們。
在此次專業(yè)實習的過程中,我進入了廣州外語通科技有限公司當任Android開發(fā)實習生,并參加了兩次大項目的研發(fā),從實際到理論,加深了我們對軟件技術專業(yè)的理解,和對于與社會接軌的深刻感受。
作為學生,我們更多的是課本的知識的理解,理論的優(yōu)勢是我們的特色,但是怎樣將理論結合實際卻是擺在我們面前的難題。而參觀廣州外語通科技有限公司正視給了我們直觀的解讀。廣州外語通科技有限公司建立了一整套符合國際標準的質量、成本和交付體系,軟件開發(fā)質量控制和過程改善能力已達到了國際先進水平,秉承“用開拓的意識、創(chuàng)造新的價值”的企業(yè)理念,不斷跟蹤國際先進技術與管理思想,研發(fā)和提供優(yōu)質軟件產品和技術服務,為客戶不斷創(chuàng)造和提升價值。正是因為秉持這樣的理念其完整的價值鏈和細致的軟件服務,給了我們以軟件技術專業(yè)的具體實際的體驗。與此同時,廣州外語通科技有限公司企業(yè)的參觀使我們對中國物流企業(yè)的現(xiàn)狀有了大概的了解,參觀過程中不同倉庫的設施和地面的設置的挑選更是讓我們多了超出理論的認識。通過指導人員的講解我們對中國物流企業(yè)的信息化有了大致的了解:中國物流企業(yè)信息化整體水平不高是其信息化建設的核心問題。這包括:標準不統(tǒng)一,資源浪費嚴重;大型應用軟件系統(tǒng)應用不普遍,應用層次低;現(xiàn)有各軟件系統(tǒng)之間相互孤立,形成“信息孤島”;信息化建設發(fā)展不平衡,造成“信息鴻溝”;硬件設備的利用率不高,資源浪費嚴重;綜合信息系統(tǒng)是物流業(yè)信息化建設的必然趨勢。
如果說前兩次的參觀實習是給的我們直觀的視覺沖突和心理震撼,那么后來的信息化講座就揭開了信息化和軟件技術專業(yè)的神秘面紗。通過經驗豐富的演講者的ppt演示我們了解了多個行業(yè)的信息化實施過程和具體的商務轉變成軟件技術專業(yè)活動的流程?,F(xiàn)實中簡單的商務活動一旦設計成成功的xx專業(yè)流程將涉及多個業(yè)務流程,整體的實施過程是復雜而艱難的。鑒于中國Android專業(yè)已經很成熟,各方面的支持還不夠很完備,這使得中國Android專業(yè)的發(fā)展有很大的擴展性。
作為應屆畢業(yè)生,在畢業(yè)前的這次專業(yè)實習,無疑是給了我們對Android專業(yè)的清晰認識,這也是最為軟件技術專業(yè)專業(yè)的學生的最大感悟。當然實習中還有著更多的感觸,包括學習,生活,工作各個方面。
就學習而言,專業(yè)實習它更偏重于應用,更加細致,要求也更加嚴格。作為應屆畢業(yè)生的我們要想適合自己的工作,在實際中實現(xiàn)自己的理想,必需不斷的增加自己的能力,做事情更加專注。
就生活而言,專業(yè)學習展示給我們看各個不同的行業(yè)的人們的生活,不同行業(yè)的人們將自己的行業(yè)融入自己的生活,這樣大的人群的生活展示給我們未來的生活遠景,選擇什么樣的生活也是我們現(xiàn)在的最重要的抉擇。一旦下定決心,也就要開始為自己的生活做準備,勝利是屬于有準備的人的?,F(xiàn)在的我就要為自己的生活做準備,不斷的充實自己。
就工作而言,無疑的本次的xx專業(yè)專業(yè)實習,展示給我們了多種職業(yè),而作為應屆畢業(yè)生,擇業(yè)的選擇是大多數(shù)人所面對的問題。就我們xx專業(yè)而言,面試時常遇見的問題就是“Android專業(yè)是干什么的?”或許大多數(shù)的學生跟我一樣對android專業(yè)并沒有清晰的概念,所以也并不能很好的回答這樣的問題。不管怎樣,勤勞的人是讓人欽敬的,但所接觸的朋友說“多年的工作讓我清楚這個社會的運轉不是控制在辛勤勞動的人手上,而是那一班根深帝固的政治家、資本家手中...工作中的認真負責不是為了討好表現(xiàn),而是為了要冶練自己的品性,是在為自己,不是為老板”。
上面的認識都是正面的,也是自己受益的主要部分,但就個人而言,本次的xx專業(yè)實習更多的是讓自己認識到自己的不足。作為一個即將畢業(yè)的應屆生,通過此次的實習,更多的是對大學四年的回顧和反省。進入了社會,和學校的感覺是完全不一樣的。只有在剛進入公司的一個月里,大家還把你當作新人,時間久了公司的領導就把你與其它同事相比較;當你開始跑客戶時,客戶把你與做了很多年的銷售相比較,沒人把再把你當新人看待,而你把你當作一個正式的有能力的人使用。
看著那些員工忙忙碌碌的來來去去,堅定的態(tài)度是那么一點一滴在鑄就起來,一個被人認可的人首先一定是一個認真負責的人,一個認真負責的人無論到哪里都可以站得正。相對于經驗和技術而言,這些都是可以積累的,可以日久能熟的,但是否能有正確的態(tài)度卻是因人而異的,有的人永遠讓人感覺畏鎖。我從來沒有把現(xiàn)在的工作當作實習,我就是認定我是在工作,而不是來學習東西的。我是為工作而學習,學習是為了把工作做得更好。
總的來說,我們這一次實習是比較成功的,大家都能學習到了很多在校園、在課堂上、課本上學不到的東西,也了解很多和懂得了做人的道理,特別是體會到生活中的艱辛和找工作的不容易。
感謝這次實習,感謝這次實習的教師,感謝為我們爭取了這實習機會的領導。這次實習,一定會令我的人生走向新一頁!
XXX
2016-01-08
第二篇:Android項目開發(fā)總結
項目開發(fā)總結報告
1引言
1.1編寫目的
總結開發(fā)經驗與學習中的不足
1.2背景
以方便用戶記錄日常學習心得,生活體會為目的,進行主題為“隨心筆記”的應用開發(fā)
2實際開發(fā)結果
2.1產品
2.2主要功能和性能
能夠查看筆記的目錄,記錄筆記完成時間。能夠改變主題顏色,目錄排版方式,擁有簡潔的主題。對于涂鴉功能,插入圖片,密碼鎖等功能未能實現(xiàn)。
3開發(fā)工作評價
3.1對產品質量的評價
本應用擁有簡單實用的功能,能夠滿足一般用戶的需要
3.3對技術方法的評價
開發(fā)中使用了軟件工程中的增量開發(fā)模型,黑盒測試等技術,使開發(fā)逐步向前發(fā)展
3.4出錯原因的分析
對于部分Android版本支持性不好,不能正常使用安裝等
4經驗與教訓
通過這次開發(fā),我們體驗了開發(fā)不易,需要很多人員的合作。開發(fā)過程中,必須明確整體目標,不能東一榔頭,西一棒槌。另外由于學習時間短,對很多東西都不太了解,還好通過CSDN等一些網站能夠找到有益的幫助,感謝那些博客,論壇。
第三篇:android實習報告
實習報告
實習目的:
生產實習是計算機科學與技術專業(yè)重要的實踐性教學活動,其目的是使學生們進一步加深對所學知識的理解,理論聯(lián)系實際,鞏固所學有關計算機基礎理論知識和基本技能,學習有關計算機最新技術方面的應用,增強學生對計算機在社會生活,社會生產中應用的感性認識,深入了解計算機在各個領域中的應用狀況,學生在實習的同時,進行一定的社會實踐與調查活動,對于提高學生的綜合能力和全面素質具有重要意義。
實習內容:
Android主要有四大組件,分別為:Activity 活動、Service 服務、Broadcast receivers 廣播接受者、Content Provider 內容提供者。還有上激活組件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是加入
可指定當前的Activity為主Activity最先被執(zhí)行。其他Activity可借助激活組件Intent
進行啟動。通過Intent還可實現(xiàn)來了兩個Activity之間傳遞數(shù)據(jù)
Activity具有生命周期,他有三種狀態(tài):運行狀態(tài)、暫停信息和停止狀態(tài)。運行態(tài)是在屏幕臺前位于當前任務堆棧的頂部,即獲取焦點的Activity。暫停信息是指失去了焦點但對于用戶仍可見,此狀態(tài)下當程序處于低內存是仍有可能被消除。停止狀態(tài)是指完全被另一個Activity覆蓋,但他仍然保留所有的信息與狀態(tài)。
2.Android圖形設計UI
Android UI控件一般寫在布局文件中,此次實習所學控件主要有:TextView,EditText
Button、AlertDialog、RadioButton、CheckBox、Spinner和TableRow等。將這些控件及相應的屬性寫在layout下的布局文件中就可在與其綁定的Activity中顯示相應的對話框,文本框,按鈕等。
Android的界面布局是為了使控件能夠更友好的呈現(xiàn)在用戶的眼中。主要有:絕對布局Absolutelayout、線形布局LinearLayout、框架布局FramLayout、相對布局RelativeLayout和
表格布局TableLayout。其中框架布局適合于單張圖片的顯示。
3.Service 服務
Service事實運行在后臺的一段代碼。他與Activity一樣有相似的生命周期,但不同的是他不能自己運行,必須通過某一個Activity或者其他的Context對象來調用。
Service可通過調用Context.StartService()啟動,還可以通過ServiceConnection來訪問Service??梢詫⑵渌慕M件綁定到Service上。
4.數(shù)據(jù)存儲
Activity提供了openFileOutput()方法可以用于把數(shù)據(jù)輸出到文件中,具體的實現(xiàn)過程與在J2SE環(huán)境中保存數(shù)據(jù)到文件中是一樣的。
openFileOutput()方法的第一參數(shù)用于指定文件名稱,不能包含路徑分隔符“/”,如果文件不存在,Android 會自動創(chuàng)建它。創(chuàng)建的文件保存在/data/data/
/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有一套自己的安全模型,當應用程序(.apk)在安裝時系統(tǒng)就會分配給他一個userid,當該應用要去訪問其他資源比如文件的時候,就需要userid匹配。默認情況下,任何應用創(chuàng)建的文件,sharedpreferences,數(shù)據(jù)庫都應該是私有的(位于/data/data/
/files),其他程序無法訪問。除非在創(chuàng)建時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE,只有這樣其他程序才能正確訪問。
實習流程:
2月18——2月27日,老師對于ANDROID開發(fā)進行了詳細的講解,其內容包括:ANDROID 的背景介紹,發(fā)展過程,自身的優(yōu)勢與不足.Android的控件、布局、Activity、Service等一系列基礎知識,對整個Android的開發(fā)有了大致的了解
2月28日——3月2日: 學生自己開發(fā)ANDROID 3GABS項目,老師答疑及驗收
實習心得:
時間過的飛快,半個月的實習就要結束了,在這次實習中我們不僅學習了相關的專業(yè)知識而且讓我對Android系統(tǒng)又有了一個更加深入的了解,它也是我們計算機專業(yè)的一個新的方向并且發(fā)展很迅速,為了今后的發(fā)展我們還需不斷努力學習!我國的信息產業(yè)還很落后,隨著社會的發(fā)展和國家的支持,手機上網是社會發(fā)展的趨勢,到時候手機上網將無處不在!之前我對Android系統(tǒng)的了解之停留在應用的層次上,對于更深層次的了解是很少的,通過這次實習,讓我對Android系統(tǒng)有了一個更深層次的了解,同時它頁使我意識到無論朝哪個方向發(fā)展,主要還是要扎實深刻地學習,同時也得不斷努力探索!
IT業(yè)發(fā)展速度一直都是相當驚人的,不想被社會淘汰,我們就得必須不斷地學習,現(xiàn)在的社會不再是一勞永逸,其他行業(yè)也是如此,我們必須不斷地拿知識來武裝自己,不然被淘汰那是肯定的!現(xiàn)在就業(yè)難原因其實在于競爭的家具,為了在競爭中得到成功,我們必須時時刻刻學習,還學到了很多做人做事的道理,不僅懂得了要想在計算機這一行立足必須具備扎實的技術理論知識,還必須學會與人溝通,合作的能力,同時更懂得了嘗試的重要性,很多事情不是聽說是困難的它就是困難的,只有親自去做親自去體會才知道,其實它并沒有那么困難,這就是實踐的重要性!無論做什么事情都必須要堅持,只有堅持下去,才會成功!事在人為,就怕不做!我們不能怕失敗,關鍵是要從失敗中總結經驗,帶著勇氣,帶著自信,堅持不懈,踏踏實實。這一次的實習是短暫的,但我收獲良多?;仡櫼郧八哌^的路,太多的無奈和迷茫,這次實習就像是我人生道路上的航標,為我指明了前景的方向,是我對自己的前途充滿了信心,我不僅知道了在人生的岔道口更適合朝哪個方向前進!更知道了在今后的道路上怎么去武裝自己!
實習結果:
第四篇:Android操作系統(tǒng)應用開發(fā)報告
Android操作系統(tǒng)應用開發(fā)報告
項目名稱: 作
者: 學
號: 完成時間:1.開發(fā)目的
本次應用開發(fā)的預期目的及相關功能介紹。
2.程序系統(tǒng)
對所開發(fā)程序系統(tǒng)的介紹,包括總體結構,程序系統(tǒng)中各個程序或函數(shù)的名稱及其介紹,他們之間的層次關系。
3.主要功能
說明所開發(fā)程序系統(tǒng)具有的實際功能。
4.基本流程
用圖給出所開發(fā)程序系統(tǒng)的實際處理流程。
5.出錯原因分析
給出開發(fā)過程中出現(xiàn)錯誤的原因分析。
6.開發(fā)心得
列出本次課程開發(fā)工作中所得到的經驗與教訓,以及心得體會。
第五篇:Android開發(fā)基本知識總結-Android課件
Android開發(fā)基礎教程
2015-4-13周一2CJ02 目錄
1.什么是Android? 2.Android應用開發(fā)環(huán)境 3.Gradle 4.模擬器Emulator 5.開發(fā)一個安卓應用程序的步驟 6.關于多個模擬器的問題 7.安卓工程文件的結構 8.android界面文件---xml文件 9.android程序文件---java文件 10.界面布局方式 11.幾個常用組件 12.Roast組件 13.對話框AlertDialog 14.幾條重要的語句 15.監(jiān)聽器Listener 16.識別響應事件的組件 17.界面切換
18.界面之間的數(shù)據(jù)傳遞 19.Activity生命周期 20.多媒體播放
21.日志文件在程序調試中的使用 22.使用XML文件保存數(shù)據(jù)
23.使用TXT文件保存數(shù)據(jù) 24.使用數(shù)據(jù)庫保存數(shù)據(jù) 25.時間組件 26.線程Thread 27.視頻播放VideoView 28.MediaPlayer,SurfaceView和SurfaceHolder播放視頻 29.錄制音頻MediaRecorder 30.菜單組件
1.什么是Android? 移動設備(常常指手機mobile)的操作系統(tǒng),由google公司出品,是免費的, 最早是基于Linux平臺的;目前已經推出的Android3.0是平板電腦上的操作系統(tǒng)。
其它的手機操作系統(tǒng)有:iPhone系統(tǒng)等。
手機廠商:三星(Samsung,宏達電(HTC),摩托羅拉(Motorola),華碩,索尼,Garmin等都支持iPhone系統(tǒng)。
Android系統(tǒng)功能:自定義用戶界面,支持藍牙,多點觸摸,具有導航功能和語音識別功能,結合了google地圖。
Android軟件開發(fā)工具SDK
4.0。
Android系統(tǒng)特點:虛擬鍵盤,以WebKit為核心的WebView組件,可以使用HTML, javascript等。
2.Android應用開發(fā)環(huán)境 Eclipse+ADT+Android SDK。ADT---Android開發(fā)工具插件(Android Plugs for Eclipse).開發(fā)環(huán)境安裝注意事項:關閉防毒軟件,按順序安裝,保持網絡暢通,比較耗時。特別說明,安裝和運行需要高配置機器和高速網絡,比較費時。
(1)安裝Java
JDK。甲骨文
網站: http://004km.cn ”);Intent in = new Intent(Intent.ACTIN_VIEW, uri);startActivity(in);(2)調用系統(tǒng)撥號界面
Uri uri = Uri.parse(“tel:*** ”);Intent in = new Intent(Intent.ACTIN_DIAL, uri);startActivity(in);(3)調用系統(tǒng)撥號功能
Uri uri = Uri.parse(“tel:*** ”);Intent in = new Intent(Intent.ACTIN_CALL, uri);startActivity(in);注意:需要在AndroidManifest.xml文件中進行設置,才可以自動撥號:
= new Bundle();bndle.pushString(“name”, “David”);bndle.pushInt(“age”, 22);//pushChar, putShort,put Boolean, pushChar等等
Uri uri = Uri.parse(“http://004km.cn ”);Intent in = new Intent(Intent.ACTIN_VIEW, uri);in.putExtras(bundle);startActivity(in);在第二個界面中: Intent in = this.get Intent();Bundle bundle
= in.getExtras();String studentName = bundle.getInt();//getDouble, 2.方法2:調用有返回參數(shù) 例1,在第一個界面中: private static final int ACTIVITY_EDIT = 1;Bundle bundle = new Bundle();bundle.pushString(“name”, “David”);Intent in = new Intent();
getShort, getIntArray等 in.putExtras(bundle);in.setClass(FullscreenActivity.this, SecondActivity.class);startActivityForResult(in, ACTIVITY_EDIT);注意:startActivityForResult后所有語句無效,不執(zhí)行;在第一個界面中,第二個界面可以在不同位置被多次調用;在第一個界面中,在其它位置可以調用其它界面。
在第一個界面中,重寫onActivityResult,接收所有被調用界面返回的參數(shù)(如果有):@Override protected void onActivityResult(int
requestCode,int resultCode,Intent
data){ super.onActivityResult(requestCode, resultCode, data);if(requestCode== ACTIVITY_EDIT)
//此參數(shù)可以區(qū)分不同的調用
{
Bundle bundle = data.getExtras();if(resultCode == RESULT_OK)
//此參數(shù)可以判斷有無返回參數(shù)
{
Bundle bundle = data.getExtras();……
} if
(resultCode == RESULT_CANCELED)
{ } }
…… } ……
問題
:如何判斷被調用界面是否傳遞返回參數(shù)?如何區(qū)分返回參數(shù)是由不同的被調用界面?zhèn)鬟f的?android的這種解決方法并不是完美的。例2,在第二個界面中:
讀取第一個界面?zhèn)鬟f的參數(shù),省略;下面是向調用程序傳遞返回參數(shù): Bundle bundle
= new Bundle();bndle.pushString(“name”, “賀昌峰373780592”);Intent
setResult(RESULT_CANCELED);//傳遞參數(shù)返回
// 或setResult(RESULT_OK, in);//不傳遞參數(shù)返回 finish();注意:這時,第二個界面返回到第一個界面,可以不傳遞參數(shù)直接返回(RESULT_CANCELED),in = new Intent();
in.putExtras(bundle);也可以傳遞參數(shù)返回(RESULT_OK)。19.Activity生命周期
onCreate
---onStart
---onResume
---onPause---onStop
---onDestroy 也就是說,有: protected void oncreate(…){ ….} protected void onStart(…){ ….} protected void onResume(…){ ….} protected void onPause(…){
….} protected void onStop(…){ ….} protected
void onDestroy(…){ ….} 20.多媒體播放MediaPlayer public MediaPlayer player = new MediaPlayer();//生成語句可省略 try{ player.reset();
//重新播放音樂
player.setDataSource(“/sdcard/music/music_file_name.mp3”);
// player = MediaPlayer.create(getApplicationContext(), R.raw.music);
// 打開音樂文件
//music為音樂資源文件
player.prepare();player.start();
// player.isPlaying()
//準備播放 //播放音樂
//判斷是否正在播放
//音樂播放完成觸發(fā)事件
player.setOnCompletionListener(new OnCompletionListener){ public void onCompletion(){ //音樂播放完成后,處理代碼 } }
player.pause();player.start();player.stop();
} catch(IllegalStateException e){ ……} catch(IOException e){ ……}
//播放暫停 //繼續(xù)播放音樂 //停止播放音樂 player.release();
//釋放存儲空間
//注意:可以播放存儲卡上任意一個音樂文件;也可以播放資源列表中的音樂文件 21.日志文件在程序調試中的使用
import android.util.Log;對應的方法有:debug,verbose,info,warn,error。注意,使用簡寫。問題:如何查看系統(tǒng)日志文件?
Log.d(“這里是分類標簽”, “這里是輸出信息”);22.使用XML文件保存數(shù)據(jù)
對XML文件進行操作,形式為(key,value)。SharedPreferences
sp = get SharedPreferences(文件名,權限);
權限:MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE 例:
//1打開XML文件 SharedPreferences
//2更改數(shù)據(jù)
Editor editor = sp.eidt();
//更改數(shù)據(jù)
sp = get SharedPreferences(“myconfig”,MODE_PRIVATE);
editor.putString(“name”, “賀昌峰373780592”);editor.putInt(“age”, 48);editor.putFloat(“salary”, 2048.5);//putLong,putBoolean等;
editor.commit();
//保存數(shù)據(jù)
//3讀取數(shù)據(jù)
String myname = sp.getString(“name”, “”);
//4刪除數(shù)據(jù)
editor.remove(“name”);//刪除數(shù)據(jù) editor.commit();
editor.clear();//刪除全部數(shù)據(jù) editor.commit();
//5簡寫形式如下: Editor editor = sp.eidt()
//更改數(shù)據(jù)
//讀取數(shù)據(jù)
.putString(“name”,.commit();
“賀昌峰”)23.使用TXT文件保存數(shù)據(jù) FileOutPutStream
fout = openFileOutput(文件名, 文件權限);文件權限: MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE
1.在文件中寫入數(shù)據(jù)
try { //打開TXT文件 FileOutPutStream
BufferedOutputStream
String
//向文件中寫入數(shù)據(jù)
bufferoutput.write(s.getBytes());s = “大家跟我學習android”;
bufferoutput = new BufferedOutputStream(fout);fout = openFileOutput(“myconfig.txt”, MODE_PRIVATE);
//關閉文件 bufferoutput.close();fout.close();} Catch(Exception e){
2.從文件中讀取數(shù)據(jù)
try { FileInputStream
BufferedInputStream
byte[] bufferbytes = new byte[20];int flag = bufferoutput.read(bufferbytes);if(flag==-1){ //文件讀取到文件末尾,否則可以繼續(xù)讀出
}
//僅讀取長度為20個字節(jié)的數(shù)據(jù)
bufferoutput = new BufferedInputStream(fout);
fout = openFileInput(“myconfig.txt”);
//打開文件
e.printStackTrace();} bufferoutput.close();fout.close();} Catch(Exception e){
24.使用數(shù)據(jù)庫保存數(shù)據(jù) 1.數(shù)據(jù)庫相關類
//關閉緩沖區(qū) //關閉文件
e.printStackTrace();} import android.content.ContentValues;import android.content.Context;import android.database.Coursor;import android.database.SQLException;import android.database.sqlite.SQLiteDatabase;
2.SQLiteDataBase類
注意:數(shù)據(jù)庫操作時,要求捕獲異常,此處省略。
SQLiteDataBase db = openOrCreateDatabase(“databasename.db”, MODE_PRIVATE);//說明:數(shù)據(jù)庫權限同文件權限
// Context就是this指針 db.execSQL(sql_exp): 執(zhí)行SQL語句
Cursor cs = db.rawQuery(select_exp, null): 返回數(shù)據(jù)集。Cursor cs1 = db.query(arg0, ……): 使用較繁瑣,可用rawQuery替換。
db.insert(arg0, ……): 使用較繁瑣,可用rawQuery替換。db.delete(arg0, ……): 使用較繁瑣,可用rawQuery替換。db.update(arg0, ……):
使用較繁瑣,可用rawQuery替換
db.close(): 一般寫在onDestroy事件中。3.Cursor類 方法有:
move, moveToPosition, moveToFirst, moveToLast,moveToNext, getCount(), getInt(),getString(),isNull(), isFirst()等等。
4.ContentValues類
一般用在SQLiteDataBase.insert中, 此處省略。
ContentValues content
= new ContentValues();
content.put(“name”, “賀昌峰”);
moveToPrevious, content.put(“age”, 48);5.SimpleCursorAdapter類
SimpleCursorAdapter是界面組件如ListView和Cursor的橋梁。例, 在ListView組件listview1中,顯示數(shù)據(jù)集(有綁定功能嗎?):
Cursor cs = db.rawQuery(“select SimpleCursorAdapter
adapter
* from table”, null);
= new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2, new String[]{“id”, “name”}, new int[]{ android.R.id.text1, android.R.id.text2});// 注意:第2個參數(shù)的作用
listview1.setAdapter(cs);
//在ListView組件顯示數(shù)據(jù)集
25.時間組件
1.常用組件AnalogClock,DigitClock 用法比較簡單,無需過多設置,僅僅顯示當前時間:機械式,數(shù)字式
2.計時組件:Chronometer 常用方法:start開始計時, stop停止計時, setBase設置時間 setFormat(“秒表:%s”):設置組件時間顯示格式。
附:與時間格式有關的函數(shù) SimpleDateFormat String
sformat = new SimpleDateFormats(“hh:mm:ss”);
//得得當前時間 s = sformat.format(new Date());
例,Chronometer對象是chroTime: chroTime.setOnChronometerTickListeter(chrolisteten);
private Chronometer.onChronometerTickListeter Chronometer.onChronometerTickListeter(){ @Override public
void OnChronometerTickListeter(Chronometer chronomoter){ //每秒執(zhí)行一次該方法 } }
3.計時組件Timer和TimerTask
chrolisteten = new 常用函數(shù):schedule(TimerTask對象, Timer對象延遲時間, TimerTask對象間隔時間);
TimerTask對象用法: private TimerTask { public void run(){ //按設定間隔調用執(zhí)行 handle.sendMessage(msg);//特別注意:此處不能對界面進行更新,因為影響計時精度,所有需要使用Handle配合。見下。} }
4.Handle和Message的配合使用 Handle handle { public void handleMessage(){ super.handleMessage();//進行其它處理 }
= new Handle()
timetask = new TimerTask()} Message
msg.what = “******”;handle.sendMessage(msg);
26.線程Thread
1.Thread的定義
public class ClockThread extends Thread{ @Override public void run(){ //進行其它處理
//注意:不會自動重復執(zhí)行多次的 } } 2.Thread的啟動、延時啟動、停止 使用Handle對線程進行控制: msg = new Message();Handle handle = new Handle();
ClockThread clock = new ClockThread();
handle.post(clock);
//啟動線程 5000);
//延時5000ms啟動線程 //停止線程 handle.postDelayed(clock, handle.removeCallbacks(clock);
問題:使用Handle有什么優(yōu)點? 27.視頻播放VideoView 支持的文件格式:H.264的mp4, wmv, 3gp等。1.視頻播放
private VideoView
videoview.setVideoPath(“/sdcard/robot.mp4”);//增加控制面板
videoview.setMediaController(new MediaController(getApplicationContext()));
videoview
= new VideoView();videoview.start();//開始播放
2.視頻準備播放事件
videoview.setOnPreparedListener(videoPreparedListener);videoview.setOnCompletionListener(videoCompletionListener);
private MediaPlayer.onPreparedListener videoPreparedListener = new MediaPlayer.onPreparedListener(){ @Override public
void onPrepared(MediaPlayer
mp){ //視頻準備播放 } }
3.視頻播放完成事件
private MediaPlayer.onCompletionListener videoCompletionListener = MediaPlayer.onCompletionListener(){ @Override public
void onCompletion(MediaPlayer
mp){
new //視頻播放完成 } }
28.MediaPlayer,SurfaceView和SurfaceHolder播放視頻
MediaPlayer也可以播放視頻,需要SurfaceView和SurfaceHolder配合,其中SurfaceView為可視化組件可以播放視頻,SurfaceHolder為橋梁。
private SurfaceView surfview = new SurfaceView();//此組件可視化設計,無需這里聲明 private MediaPlayer
surfholder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);mediaplayer.setDisplay(surfholder);
mediaplayer.setDataSource(“/sdcard/vedio.mp4”);mediaplayer.reset();
//打開視頻文件
mediaplayer = new MediaPlayer();
= surfview.getHolder();private SurfaceHolder surfholder
//重新播放視頻 mediaplayer.prepare();mediaplayer.start();mediaplayer.stop();mediaplayer.release();
//準備播放視頻 //播放視頻
29.錄制音頻MediaRecorder MediaRecorder
mediaRecorder.SetAudioSource(MediaRecorder.AudioSource.MIC);mediaRecorder.SetAudioEncode(MediaRecorder.AudioEncode.DEFAULT);mediaRecorder.SetOutputFormat(MediaRecorder.OutputFormat.DEFAULT);mediaRecorder.SetOutputFile(“/sdcard/recorder.amr”);mediaRecorder.prepare();mediaRecorder.start();
注意:要有寫入SD卡的權限,在AndroidManifest.xml文件中:
//準備錄音 //開始錄音
mediaRecorder = new MediaRecorder(); :
1.附1:ImageView.setAlpha(50)的含義?設置透明色 2.附2:遍歷目錄下所有文件: private File pathfile;pathfile = Environment.getExternalStorageDirectory();
//疑問:pathfile + ”/myfilename.txt” 這個用法正確嗎? for(File file: pathfile.listFiles()){ if {(file.getName().toLowerCase().endsWith(“.amr”))……
// File.getAbsolutePath(), File.getName()的區(qū)別 } } 30.菜單組件 //添加系統(tǒng)菜單 protected protected static final int MENU_ABOUT
= Menu.FIRST;static final int MENU_QUIT = Menu.FIRST + 1;
//得到SD卡路經 protected
@Override static final int MENU_EDIT = Menu.FIRST + 2;public boolean onCreateOptionsMenu(Menu menu){ menu.add(0,MENU_ABOUT,0,“關于本軟件...”).setShortcut('0','A');
menu.add(0,MENU_QUIT,1,“結束”).setShortcut('1','E');
menu.add(0,MENU_EDIT,2,“編輯”).setShortcut('2','D');
menu.add(0,MENU_FILE,3,“文件”).setShortcut('3','F');
return super.onCreateOptionsMenu(menu);} //添加菜單響應事件 @Override public boolean onOptionsItemSelected(MenuItem switch(item.getItemId()){ case MENU_ABOUT: // 響應處理 break;case MENU_QUIT: // 響應處理 break;}
return super.onOptionsItemSelected(item);}
//添加快捷菜單 protected static final int MENU_BACKCOLOR protected static final int MENU_SMALLSIZE =
item){
= Menu.FIRST;
Menu.FIRST + 1;//定義快捷菜單組件 private LinearLayout private TextView
layout;
txtview1,txtview2;在onCreate中, 增加以下語句: layout =(LinearLayout)findViewById(R.id.layout);txtview1 =(TextView)findViewById(R.id.txtview1);txtview2 =(TextView)findViewById(R.id.txtview2);registerForContextMenu(txtview1);registerForContextMenu(txtview2);
在java文件類中, 增加以下語句: @Override public boolean onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){ //注意:父類函數(shù)先調用,或最后調用? super.onCreateOptionsMenu(menu, v, menuInfo);
if(v == txtview1)menu.add(0, MENU_BACKCOLOR,0,“設置背景顏色”); if(v == txtview2)menu.add(0, MENU_SMALLSIZE,1,“較小字體”);
}
//添加菜單響應事件 @Override public boolean onContextItemSelected(MenuItem switch(item.getItemId()){ case MENU_BACKCOLOR: // 響應處理
layout.setBackgroundColor(Color.BLUE);break;case MENU_SMALLSIZE: // 響應處理
txtview2.setTextSize(12);break;}
return super.onContextItemSelected(item);}
item){