音樂播放器實習報告
《音樂播放器實習報告》由會員分享,可在線閱讀,更多相關《音樂播放器實習報告(20頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 武漢工程大學 計算機科學與工程學院 認識實習報告 專 業(yè) 計算機科學與技術 班 級 學 號 學 生 姓 名 指 導 教 師 陳艷(講師) 實 習 時 間 2014~2015學年第1學期 2014.9.1至2014.9.5 實 習 成 績 武漢工程大學計算機科學與工程學院 制 說明: 1、 實習指導教師由學院校內(nèi)教師擔任,負責組織實習、學生管理、參加實習答辯、實習成績評定、給出實習評語等工作。 2、 實習報告由武漢工程大學計算機科學
2、與工程學院提供基本格式(適用于學院各專業(yè)),各專業(yè)教研室和指導教師可根據(jù)本專業(yè)特點及實習內(nèi)容做適當?shù)恼{(diào)整,學生須按指導教師下達的實習報告格式認真進行填寫。 3、 實習成績由指導教師根據(jù)學生的實習情況給出各項分值及總評成績。 4、 指導教師評語一欄由實習指導教師就學生在整個實習期間的表現(xiàn)給出客觀、全面的評價,包括實習期間的表現(xiàn)、實習報告的質(zhì)量等。 5、 實習報告正文字數(shù)應不少于5000字,實習日記字數(shù)不少于300字/天。 6、 實習報告正文中實習目的與任務、實習地點、實習內(nèi)容和要求等項,可由指導教師統(tǒng)一給出。 認識實習成績評定表 學生姓
3、名: 學號: 班級: 類別 總分值 各項分值 評分標準 實際得分 總得分 備注 實習表現(xiàn) 30 15 按時參加各項實習活動,無曠課、遲到、早退等情況。 15 遵守實習單位紀律和安排,無違反實習單位規(guī)定的情況;聽從指導教師的安排,無不服從教師管理的現(xiàn)象。 實習報告 70 20 報告能對全過程的實習內(nèi)容進行系統(tǒng)的總結(jié),并能運用所學專業(yè)知識對問題加以分析,并有一定的見解。 20 實習報告文字通順,內(nèi)容翔實,論述充分、完整,結(jié)構嚴謹合理。 10 具有收集、加工各種信息及獲得新知識的能
4、力。 10 實習報告字數(shù)符合相關要求,實習報告工整規(guī)范,整齊劃一。 10 實習日記(筆記)次數(shù)及內(nèi)容符合要求。 總評成績: 分 補充說明: 指導教師: (簽字) 日 期: 2014 年 9 月 日 指導教師評語 指導教師:
5、 (簽字) 日 期: 2014 年 9 月 日 武漢工程大學計算機科學與工程學院 認識實習報告 一、實習目的與任務 認識實習是信息技術專業(yè)學生在完成基礎課學習轉(zhuǎn)入到專業(yè)課學習階段的一個極其重要的實踐教學環(huán)節(jié)。其目的是通過實地參觀和聽取專業(yè)報告等多種方式,使學生進一步了解本專業(yè)及相關領域的發(fā)展現(xiàn)狀,以及相關產(chǎn)品的研發(fā)過程和管理手段。通過實習,使學生通過軟件開發(fā)的實踐訓練,進一步掌握設計開發(fā)軟件的方法與技術,學會數(shù)據(jù)的組織方法,提高軟件開發(fā)的實際能力,培養(yǎng)創(chuàng)造性的工程設計能力和分析、解決問題的能力。 具體的任務包括: 1
6、.深化已學的理論知識,完成理論到實踐的轉(zhuǎn)化,讓學生對軟件開發(fā)領域的最新技術有本質(zhì)的了解,并能熟練運用。通過電子商務網(wǎng)購平臺的研發(fā),讓學生熟練操作各種開發(fā)平臺,并能按照CMM3規(guī)范,和軟件開發(fā)的流程開發(fā)一個小型項目; 2.提高分析和解決實際問題的能力,讓學生有高質(zhì)量的就業(yè)IT行業(yè)的機會。培養(yǎng)“開拓創(chuàng)新”能力。大力提倡和鼓勵在開發(fā)過程中使用新方法、新技術,激勵學生實踐的積極性和創(chuàng)造性,開拓思路,設計新算法、新創(chuàng)意,培養(yǎng)創(chuàng)造性的工程設計能力。 3.了解信息技術產(chǎn)品的研發(fā)過程、信息系統(tǒng)的設計、信息系統(tǒng)的技術與管理等專業(yè)知識;了解計算機、通信等相關領域的發(fā)展現(xiàn)狀和最新的科研成果,及在生產(chǎn)科研中的應用
7、;鞏固學生的理論知識,培養(yǎng)學生的實踐能力、創(chuàng)新能力,拓寬學生視野,樹立努力學習專業(yè)知識的信心,并為學習后續(xù)課程打下一定的實踐基礎; 4.增強勞動觀念,樹立正確的勞動觀和價值觀。 二、實習地點 軟帝(Ruandy)信息科技有限公司,武漢光谷金融港 三、實習內(nèi)容和要求 本次實習在軟帝信息科技有限公司的實習基地進行。要求學生在5天的實習期間,在教師的指導下熟悉Java Android開發(fā)平臺,掌握APP開發(fā)的基本方法和技巧,完成一個小型APP的設計和開發(fā)。 四、實習總結(jié)及分析 1)、搭建Android開發(fā)環(huán)境 Android需要運行環(huán)境才能夠運行,下面介紹Android的開發(fā)
8、環(huán)境配置。搭建開發(fā)環(huán)境需要的軟件: 1. 操作系統(tǒng):Windows XP; 2. 軟件包:Android SDK(Software Development kit Java Development kit) 、ADT(Android Development Tool) 3. IDE環(huán)境:Eclipse IDE+ADT Eclipse3.3以上 4. JDK:Java Runtime Environment虛擬機 、(JDK)Java Development kit 安裝步驟如下: 第一步:安裝Java虛擬機sun-java6-jdk版本; 第二步:安裝Eclipse3.5
9、工具; 第三步:安裝Android SDK; 第四步:安裝Android ADT插件,將地址欄中選擇android-sdk-windows所在的目錄,點擊OK;單擊new按鈕,新建一個安卓虛擬機,在name欄中輸入名字,將target選中,然后設置size,單擊create AVD按鈕,其中name欄是所創(chuàng)建虛擬機的名字,target欄是需要的ADT的版本,size用來設置安卓虛擬機的大小。單擊start按鈕隨后單擊lanuch(執(zhí)行)按鈕,就會彈出安卓虛擬機界面。 2)、Android 音樂播放器的工程 Android工程基本結(jié)構目錄包括:src (源代碼)、gen(Androi
10、d系統(tǒng)自動生成的常量)、Res(資源文件):主要存放程序界面的布局配置(.xml)文件和圖片資源。AndroidMainfes.xml 是四大組件的驅(qū)動配置文件,有它的存在,Android程序的四大組件才可以正常的跳轉(zhuǎn) 3)、Android相關組件 activity —— 應用表示層(基類activity) 應用程序中的每個屏幕都是通過繼承和擴展基類activity來實現(xiàn)的。同一應用中的每個activity是相互獨立的。程序啟動后顯示的第一幅畫面是應用程序的第一個activity(默認窗口),而后可以根據(jù)需要從這個activity啟動另一個新的activity。activity利用v
11、iew來實現(xiàn)應用中的gui(用戶直接通過gui和應用程序做交互)。activity窗口內(nèi)的可見內(nèi)容通過基類view提供。使用activity.setcontentview()方法設置當前activity中的view對象。 service —— 沒有可見的用戶界面,但能夠長時間運行于后臺(基類service)。運行于應用程序進程的主線程中,因此service不會阻塞其他組件和用戶界面。 service是不能自己啟動的,必須通過context對象(如一個activity)調(diào)用startservice或bindservice方法來啟動(用這兩種方法啟動的service的生命周期不同)。 broa
12、dcast receiver —— 用戶接收廣播通知的組件(基類broadcastreceiver)。android中的廣播要么來自于系統(tǒng),要么來自普通應用程序。很多事件都可能導致系統(tǒng)廣播,如手機所在時區(qū)發(fā)生變化,電池電量低,用戶改變系統(tǒng)語言設置等。來自普通應用程序,如一個應用程序通知其他應用程序某些數(shù)據(jù)已經(jīng)下載完畢。 content provider —— 為解決應用程序間數(shù)據(jù)通信、共享的問題(基類contentprovider) 在android中,每個應用程序都是用自己的用戶id并在自己的進程中運行。 這樣的好處是,可以有效地保護系統(tǒng)及應用程序,避免被其他不正常德應用程序所影響,每
13、個進程都擁有獨立的進程地址空間和虛擬空間。 content provider——可以將應用程序特定的數(shù)據(jù)提供給另一個應用程序使用。其數(shù)據(jù)存儲方式可以是android文件系統(tǒng)、sqlite數(shù)據(jù)庫或者其他合理的方式。當數(shù)據(jù)需要在應用程序間共享時,我們就可以利用contentprovider為數(shù)據(jù)定義一個uri。之后,其他應用程序?qū)?shù)據(jù)進行查詢或者修改時,只需要從當前上下文對象獲得一個contentresolver, 然后傳入響應的uri就可以了。 intent —— 連接組件的紐帶。以上4種基本組件中,除了content provider是通過content resolver激活外,其他3種組
14、件activity、service和broadcast receiver都是由intent異步消息激活的。intent在不同的組件之間傳遞消息,將一個組件的請求意圖傳給另一個組件。因此,intent是包含具體請求信息的對象。intent是一種運行時綁定(runtime binding)機制,它能夠在程序運行的過程中連接兩個不同的組件。通過intent,你的程序可以向android表到某種請求或者意愿,android會根據(jù)意愿的內(nèi)容選擇適當?shù)慕M件來處理請求。 4)、 Android xml文件 在安卓工程中,大量使用了xml文件,比如界面布局文件,字符資源文件,風格style文件,簡單圖
15、形文件等。比如在界面布局文件中,通過指定控件的排列方式、間隔像素、對齊方式等,達到對頁面進行布局的目的,同時使用特定編輯器,實時解析布局文件,到達所見即所得的目的。 5)、程序界面activity類的設計 程序的界面musictestactivity類是程序的主要部分,設計到界面所有控件的操作及設計、程序的流程控制及音樂播放的核心部分。 字段mediaplayer是音樂播放的核心變量,進行音樂播放,處理器mhandle是對音樂播放流程進行管理的變量,然后六個監(jiān)聽器是對按鈕及進度條的變化進行及時響應,剩下的都是輔助標記變量,標記當前播放信息,以及控制參數(shù)信息。播放音樂文件采用MediaP
16、layer,音樂的播放應在后臺進行,所以MediaPlayer應該在一個Service中,用戶操作Activity上的控件,所以當用戶操作時,應該通過Intent傳遞一些參數(shù)給Service,后者根據(jù)這些參數(shù)來控制MediaPlayer的播放。當用戶進行了操作,Service這時也響應了操作以后,需要對Activity進行的ui進行更新,這時則需要 通過BroadCastReciver來進行對Activity的更新,同時Service需要通過一個Notification被置為前臺.BroadCastReciver因為要對更新Activity,所以最好是作為需要被更新Activity的內(nèi)部類。
17、 6)、程序運行效果 在手機上運行,程序可以流暢地播放音樂,無卡頓現(xiàn)象,實時準確地顯示播放進度信息,并調(diào)整控制音量大小。按鈕上一曲、下一曲及停止都可以正確地作用,暫停按鈕在音樂播放的時候可以正確顯示并作用,當被點擊之后,即顯示為播放按鈕,此時點擊該按鈕也可以正確播放音樂。經(jīng)測試,最終得到的程序可以在手機上運行,并無任何bug及程序不響應現(xiàn)象。 7)、關鍵代碼 此代碼的主要功能是用來使音樂播放器在進行播放前,從手機存儲設備中過濾出后綴名為MP3的文件,一層一層往下找,不限于根目錄下,知道最后沒有子文件夾為止。 public class MusicFilter implement
18、s java.io.FileFilter{ public boolean accept(File pathname) { boolean b = false; if(pathname.isDirectory()){ b = true; }else{ if(pathname.getName().endsWith(".mp3")){ b = true; }else{ b = false; } } return b ; } } 下面為程序主要代碼主要實現(xiàn)的功能為:設置播放器音量大小,音樂進度拖拉條,上一首,
19、下一首,播放,停止,歌曲時間顯示;
public class MusicTestActivity extends ListActivity {
//用來存放音樂文件路徑
private ArrayList
20、; //播放對象 private MediaPlayer mediaPlayer; //音樂例表中當前要播放音樂文件的索引 private int currentListItem; //圖片按鈕的申明 private ImageButton imageStop; private ImageButton imagePause; private ImageButton imageLast; private ImageButton imageStart; private ImageButton imageNext; //關于音量的變量 private AudioMan
21、ager audioManager ; //最大音量 private int maxVolume; //當前音量 private int currentVolume; //音量拖動條 private SeekBar soundBar; //顯示時間的控件 private TextView tv ; //音樂的進度條 private SeekBar musicBar; //過慮器 private MusicFilter mf;//用來標記是否為播放狀態(tài) (0:初始狀態(tài),1:播放狀態(tài),2:暫停狀態(tài)) private int falg = 0 ; @Overrid
22、e public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mf = new MusicFilter();//播放對象初始化 mediaPlayer = new MediaPlayer(); //調(diào)用音樂綁定方法 this.musicList();//將5個按鈕進行初始化 imageStop = (Im
23、ageButton)this.findViewById(R.id.imageStop); // imagePause = (ImageButton)this.findViewById(R.id.imagePause); imageLast = (ImageButton)this.findViewById(R.id.imageLast); imageStart = (ImageButton)this.findViewById(R.id.imageStart); imageNext = (ImageButton)this.fin
24、dViewById(R.id.imageNext); //獲取系統(tǒng)聲音管理器 audioManager =(AudioManager) this.getSystemService(Context.AUDIO_SERVICE); //獲取系統(tǒng)聲音的最大值 maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); //獲取系統(tǒng)當前的聲音值 大小 currentVolume = audioManager.ge
25、tStreamVolume(AudioManager.STREAM_MUSIC); //初始化音量拖動條 soundBar = (SeekBar)this.findViewById(R.id.soundBar); //設置音量拖動條的最大值 soundBar.setMax(maxVolume); //設置音量拖動條的當前值 soundBar.setProgress(currentVolume); //時間顯示控件初始化 tv = (TextView)
26、this.findViewById(R.id.textView1); //把音樂播放進度條進行初始化 musicBar =(SeekBar) this.findViewById(R.id.musicBar); //調(diào)用listener方法 this.listener(); } //遞歸....通過遞歸把sdcard里面所有的音樂文件中的路徑和音樂名字分區(qū)保存到(musiclist和musicnamelist)中 private void showInfo(String path){ Fi
27、le f = new File(path);//先實現(xiàn)文件類對象 File [] fileList = f.listFiles(mf); if(fileList!=null){ for (int i = 0; i < fileList.length; i++) { if(fileList[i].isFile()){ musiclist.add(fileList[i].getAbsolutePath()); musicnamelist.add(fileList[i].getName()); } if(fileList[i
28、].isDirectory()){//判斷是否是一個目錄如果是就遞歸 showInfo(fileList[i].getPath()); } } } } private void musicList(){ //調(diào)用上面的遞歸方法.把sdcard里面的所有音樂文件的名字和路徑分區(qū)保存到(musiclist和musicnamelist)這兩個容器中 showInfo(MUSIC_PUTH); //1設置面板容器 2設置布局3音樂例表
29、
ArrayAdapter
30、inute / 60; int second = time % 60; minute %= 60; return String.format("%02d:%02d", minute, second); } private void playMusic(String path){ try { mediaPlayer.reset();//先重置一下 mediaPlayer.setDataSource(path);//設置音樂文件的路徑 mediaPlayer.prepare();//準備 med
31、iaPlayer.setLooping(true);//循環(huán)播放 mediaPlayer.start();//開始播放 //設置音樂拖動度的當前進度初始值 musicBar.setProgress(mediaPlayer.getCurrentPosition()); //設置音樂拖動條的最大值 musicBar.setMax(mediaPlayer.getDuration()); //System.out.println("當前正在播放的歌曲時間是:" + mediaPlayer.getDuration()); //顯示出來當
32、前音樂的時間 tv.setText( toTime(mediaPlayer.getCurrentPosition()) + " / " + toTime(mediaPlayer.getDuration())); //當歌曲開始播放時.線程也開始運行 this.startProgressUpdate(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); }
33、 catch (IOException e) { e.printStackTrace(); } } private Handler mHandle = new Handler(){ public void handleMessage(Message msg) { //對音樂顯示時間每一秒鐘付值一次 tv.setText( toTime(mediaPlayer.getCurrentPosition()) + " / " + toTime(mediaPlayer.getDuration()) ); //不斷將音樂播放的位置
34、賦值給MusicBar... musicBar.setProgress(mediaPlayer.getCurrentPosition()); } }; //申明一個線程類 public class th extends Thread{ //實例化此類的用戶會轉(zhuǎn)一個時間毫秒數(shù)進來付值給i int i ; //構造方法 public th(int i){ this.i = i; } //線程方法 public void run(){ whil
35、e(true){ try { this.sleep(i); } catch (InterruptedException e) { e.printStackTrace(); } mHandle.sendEmptyMessage(0); } } } //開辟Thread 用于定期刷新SeekBar,改變音樂時間 public void startProgressUpdate(){ th t = new th(1000);//初始化線程類轉(zhuǎn)入
36、1000毫秒 t.start();//開啟一個線程 } //當用戶返回時結(jié)束音樂并釋放音樂對象 public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK){//音樂停止 // mediaPlayer.stop(); //可以釋放播放器占用的資源,一旦確定不再使用播放器時應當盡早調(diào)用它釋放資源。 // mediaPlayer.release();//結(jié)束 // this.finish(); Sys
37、tem.exit(0); } return true; } protected void onListItemClick(ListView l, View v, int position, long id) { //獲取到當前點擊的音樂文件索引 this.currentListItem = position ; //調(diào)用playMusic方法進行音樂播放并傳入音樂的文件路徑 this.playMusic(musiclist.get(currentListItem) ) ; imageStart.setImageResource(R.dr
38、awable.pause); falg = 1; } private void listener(){//音樂播放進度條的事件處理 musicBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { public void onStopTrackingTouch(SeekBar seekBar) { //把音樂播放進度條的當前位置 的值賦給mediaPlayer.. mediaPlayer.seekTo(seekBar.getProgress()); }
39、 public void onStartTrackingTouch(SeekBar seekBar) { } public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } });//調(diào)聲音大小拖動條的事件處理 soundBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { public void onStopTrackingTouch(Seek
40、Bar seekBar) { //System.out.println("----停止"); } public void onStartTrackingTouch(SeekBar seekBar) { //System.out.println("開始----"); } public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { //System.out.println("我的值在發(fā)生改變:" + progress);
41、 //設置音量的大小 audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress,1); } }); //1.為imageStart這個圖片按鈕添加一個單擊事件 imageStart.setOnClickListener(new OnClickListener() { public void onClick(View v) { //用來標記是否為播放狀態(tài) (0:初始狀態(tài),1:播放狀態(tài),2:暫停狀態(tài)) if( falg == 0 ){//0:初始狀態(tài)
42、 //調(diào)playMusic方法進行音樂 播放 MusicTestActivity.this.playMusic(musiclist.get(currentListItem)); //把播放狀態(tài)的圖片切換成暫停狀態(tài)的圖片 imageStart.setImageResource(R.drawable.pause); falg = 1 ; }else if(falg == 1){//1:播放狀態(tài)//暫停播放 mediaPlayer.pause();//把暫停狀態(tài)的圖片切換成播放狀態(tài)的圖片 im
43、ageStart.setImageResource(R.drawable.start); falg = 2 ; }else if(falg == 2){//2:暫停狀態(tài) mediaPlayer.start();//播放 //把暫停狀態(tài)的圖片切換成播放狀態(tài)的圖片 imageStart.setImageResource(R.drawable.pause); falg = 1; } } } ); //2.停止按鈕進行事件處理() imageStop.setOnClickListene
44、r(new OnClickListener() { public void onClick(View v) { falg = 0 ; imageStart.setImageResource(R.drawable.start); mediaPlayer.seekTo(0); //musicBar.setProgress(0); mediaPlayer.stop();//停止 } }); //4.下一首 imageNext.setOnClickListener(new OnClickListener() {
45、 public void onClick(View v) { falg = 1 ; imageStart.setImageResource(R.drawable.pause); currentListItem = (currentListItem+1)%musiclist.size(); MusicTestActivity.this.playMusic(musiclist.get(currentListItem)); } }); //5.上一首 imageLast.setOnClickListener(new OnCli
46、ckListener() { public void onClick(View v) { falg = 1 ; imageStart.setImageResource(R.drawable.pause); currentListItem = (currentListItem-1+musiclist.size())%musiclist.size(); MusicTestActivity.this.playMusic(musiclist.get(currentListItem)); } }); } } 五、實習體會
47、 5天的實習生活轉(zhuǎn)眼就已過去,在這幾天里,我們都有所收獲,不管是技能上還是認識上都有所提升。5天的時間,我熟悉了android系統(tǒng)的起源和發(fā)展,掌握了android的工作方式并搭建起了android開發(fā)的環(huán)境。在大二已經(jīng)接觸學習了java語言的基礎上學習android開發(fā),相對來說輕松了許多。Java的基礎語法,面向?qū)ο蟮木幊谭椒ê退枷耄鬟f都有點熟悉。期間我學著建立android工程并做一些簡單的編程和開發(fā),包括熟悉android開發(fā)環(huán)境,android工程中各個文件及其作用,到簡單的界面布局和控件使用。在這個過程中老師耐心給我們講解,有什么問題、不懂的地方老師也會幫助解決,所以此次報
48、告的完成里不開老師的支持。 然后實習期間,我們得以初步了解我們所學專業(yè)的就業(yè)前景和工作環(huán)境,以及上班后的薪資待遇,還有關于選定方向去學習哪種語言的問題,這大概是很多同學都很迷惑的問題,大學學習的語言確實很多,就目前而言我們就學習了c、c++、Java,那么這么多的語言我們該如何取舍呢,要想在短期內(nèi)精通幾門語言無疑是相當難的,所以老師給我們的建議是選擇一門語言,盡量在一種語言上有所突出,不然如果學的太雜而零散對找工作是不利的,所以鑒于這一點,我們應該暨早確定自己主修的方向。還有是關于考研的事,現(xiàn)階段大家都很困惑,對于學習計算機的人來說考研的意義到底大不大,關于這個問題我也獲得了初步的認識,考研
49、也是一個學習的過程,在這個過程中自己的技術和熟練度當然會有所提高,同時又擁有了更高的文憑,有它有利的一面。 實習是學生了解和認識企業(yè)事業(yè)單位對專業(yè)人才需求的重要途徑,是學生進入職場之前,增加對專業(yè)認識的一個必不可少的學習階段。通過實習,增進對從事本專業(yè)的自豪感以及責任感,選好入職方向,做好人生職業(yè)規(guī)劃。為畢業(yè)之后能夠進入工作狀態(tài)并且能夠更好地工作,打好一定的基礎,所以此次實習對自己來說是一次很好的鍛煉。 最后這個音樂播放器程序還有很多不足之處,比如沒有實現(xiàn)在點擊歌曲是獲得歌曲的名字顯示在界面上,沒有同步顯示歌詞等功能,希望以后有機會逐步完善。
50、 附錄:實習日記 2014年9月1日 星期一 這是實習的第一天,一大早我們來到了實習的公司—軟帝,老師短暫的自我介紹之后,我們的實習生活正式拉開序幕。與學校不同的是老師是通過廣播授課,比起學校要費力的盯著投影的確方便很多。如慣例,初次學習當然是從最基本的學起,老師慢慢進入主題,5天的實習,我們需要學習如何進行Android軟件的開發(fā),首先老師給我們講述Android的起源,Android一詞的本義指“機器人”,同時也是Google于2007年11月5日宣布的基于Linux平臺的開源手機操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應用軟件組成,號
51、稱是首個為移動終端打造的真正開放和完整的移動軟件。 Android本是一家公司的名稱,這家公司的創(chuàng)始人名叫Andy Rubin。Andy Rubin創(chuàng)立了兩個手機操作系統(tǒng)公司:Danger和Android。Danger以5億美元賣給微軟,成為了今天的Kin,Android以4千萬美元賣給Google。Android的優(yōu)點有開放性、應用程序相互平等、應用程序之間溝通無界限和快速方便的應用程序開發(fā)。接著我們學習了Android開發(fā)環(huán)境的配置,按照老師的要求新建一個Java項目,學習過程中,我第一次見識了類似于我們手機界面的Android開發(fā)虛擬環(huán)境看見這樣一個東西,同學們都非常興奮,接下來的幾天
52、我們的任務是做一個Android軟件。 2014年9月2日 星期二 今天我們的主要任務是從開發(fā)工具到基本語法,主要是配置安卓SDK環(huán)境,建立安卓工程。接著老師給我們講了Android工程中的配置文件,主要包括R.java,main.xml,string.xml文件。其中R.java中的內(nèi)容為自動生成,無法對其進行修改,在增加或者進行修改代碼時會報錯。string類給string.xml里面的鍵值生成的ID main.xml文件, 控制Activity中空間的位置,每個Activity對應一個此布局文件 string.xml,存放鍵值對,一般用在程序的多語言版本切換(多個文件,鍵一樣,值
53、不同)String.xml用來把應用中出現(xiàn)的文字單獨存放在string.xml文中。這樣在進行修改的時候就不用修改程序內(nèi)容。另外一方面為了減少應用的體積,降低數(shù)據(jù)的冗余。Main.xml文件用來對界面進行布局。XML布局資源必須被存儲在項目目錄的/res/layout下。 另外的還有strc目錄用來存放源文件代碼,gen目錄是ADT插件生成的文件(自動生成),assets目錄存放資源文件目錄不會再R.java中生成ID,res目錄存放資源文件目錄,這里面的每個文件或值都會在R.java中生成一個ID,AndroidManifest.xml目錄是整個應用程序配置文件,儲存一些包名,版本號,程序
54、圖標程序標,defaultproperties目錄---檢查版本文件,自動生成,不能修改res、layout目錄防止布局文件(xml文件),每個Activity對應一個xml文件,res/value目錄放置存儲值的文件。 2014年9月3日 星期三 今天的實習主要是接著昨天講的main.xml文件,講述Android中的各種布局方式,時間的關系,今天只講述了一種布局方式,線性布局方式。線性布局在屏幕上垂直地或水平地組織用戶界面控件或者小工具。線性布局是最簡單,Android開發(fā)者使用得最多的布局類型之一。線性布局的作用就像它的名字一樣,當布局方向設置為垂直時,它里面的所有子控件被組織
55、在同一列上。當布局方向設置為水平時,所有子控件被組織在一行中。另外講的是用oncreatelisten()設置監(jiān)聽。然后設置圖片,進行設置圖片上一張,下一張,以及設置圖片的透明度,首先選好圖片進行設置,將圖片存放在數(shù)組中,記錄一個變量用來設置當前圖片的標號(即數(shù)組的下標),點擊下一張按鈕時,用當前下標模除數(shù)組長度,這樣可以防止下標越界的異常,同理按上一張按鈕顯示當前圖片的上一張,另外一個是設置圖片透明度,利用alpha變量設置圖片當前透明度為0,利用按鈕設置圖片透明度,每點擊一下按鈕,變量alpha的值就會減少,相應圖片透明度就會減少。同樣道理,點擊透明度增加時,alpha變量的值就會增加,相
56、應圖片透明度就會增加。 2014年9月4日 星期四 今天的做的是實現(xiàn)其播放功能,在面板容器上面添加按鈕,主要實現(xiàn)了其中三個(停止,播放,暫停)的功能,其中這些功能的實現(xiàn)都是通過MediaPlayer變量調(diào)用系統(tǒng)函數(shù)來實現(xiàn)的,點擊播放按鈕的時候,調(diào)用start()函數(shù),系統(tǒng)就會播放歌曲,點擊暫停的時候(點擊次數(shù)為基奇數(shù)次,即為停止),首先要判斷當前是否為播放狀態(tài),如果是,點擊暫停按鈕的時候會調(diào)用start()函數(shù),如不是,則會調(diào)用stop()函數(shù);在點擊停止按鈕的時候,音樂停止,這時候會調(diào)用系統(tǒng)的reset()函數(shù),所有的歌曲重置,以便再次點擊歌曲進行播放。在這整個過程中遇到一個問題,就
57、是在開始播放歌舞之前一定要先調(diào)用系統(tǒng)的prepare()函數(shù),已做準備工作,不然系統(tǒng)是不會就調(diào)用start()函數(shù)開始播放音樂的。 2014年9月5號 星期五 今天完成播放器基本功能中的上一首,下一首功能,通過設置當前播放列表中播放歌曲的值currentitem,來設置所聽歌曲。參照之前做過的圖片瀏覽例子,若想要聽下一首歌曲,將currentitem的值加1,而后模除列表長度,既可以進行播放下一曲,同理,播放上一曲時,為了防止下標越界,會首先將currentitem加列表長度,然后再減1后,對列表長度進行模除,即可得到上一曲。同時今天完成的還有設置時間,用系統(tǒng)函數(shù)setProgress
58、(currentVolume)來獲取歌曲當前時間,對于音樂時間顯示,在進行播放時,每秒鐘對當前時間重新賦值一次。同時對時間進行格式轉(zhuǎn)換,由于系統(tǒng)獲取的當前時間是以毫秒為單位,所以必須對當前獲取到的時間進行格式轉(zhuǎn)換。最后就結(jié)束了5天的Android軟件開發(fā),老師解答了大家的一些困惑,有關于就業(yè)前景的,也有關于職業(yè)發(fā)展方向的,老師以自己的經(jīng)驗給我們一一解答,聽了老師的講解我們都有所收獲。 - iii -
59、武漢工程大學計算機科學與工程學院 認識實習筆記 (實習期間學生每天需進行實習記錄,字數(shù)不少于300字/天,內(nèi)容包括:時間、地點、主要實習內(nèi)容等。宋體,小四號字,單倍行距)
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。