freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android手機(jī)平臺(tái)的音樂播放器-畢業(yè)論文-閱讀頁

2025-07-07 18:08本頁面
  

【正文】 們需要使用的架構(gòu),該架構(gòu)來自xmlns:android=xmlns(XML namespace)是一個(gè)命名空間,它就像一條河的源頭一樣能讓我們找到系統(tǒng)架構(gòu),每一個(gè)配置文件必須有這個(gè)xmlns,否則程序中的所使用的所有資源將無法找到。string/app_name表示了對res/。在intentfilter選項(xiàng)中,有action和category等等屬性,它們是系統(tǒng)的值,程序在解析到這些常用后就可以確定首先要啟動(dòng)的Activity。usessdk,它是我們需要定義的ADT版本,例如我們將其值設(shè)定為android:minSdkVersion=4,、。當(dāng)然usespermission還有很多其它的權(quán)限,例如GPS定位權(quán)限。四大組件要使用前都需要聲明,其聲明方式如下:service/serviceprovider/provideractivity/activityreceiver/receiver其中聲明provider時(shí)還需要聲明其授權(quán) authorities。過濾器intentfilter 有兩種啟動(dòng)方式來啟動(dòng)界面:(1) 顯示方式 顯示方式是在代碼中的直接啟動(dòng)組件,啟動(dòng)時(shí)會(huì)聲明Intent,在它的構(gòu)造方法Intent(組件1,組件2)中直接指定一個(gè)組件的名字,然后調(diào)用方法startIntent(intent)以啟動(dòng)指定的組件。兩種啟動(dòng)方式都可以通過程序setAction(ACTION常量)和startActivity(intent)或配置文件兩種方式來實(shí)現(xiàn)組件的跳轉(zhuǎn)。這樣就可以形成不同的可視化界面和炫麗的效果。setContentView()。:?xml version= encoding=utf8?AbsoluteLayout LinearLayout /LinearLayout SeekBar/SeekBar LinearLayout/LinearLayout/AbsoluteLayout 在絕對布局AbsoluteLayout下嵌套兩種線性布局LinearLayout和SeekBar,第一個(gè)LinearLayout實(shí)現(xiàn)了標(biāo)題和歌曲名的顯示位置,通過AbsoluteLayout布局設(shè)置LinearLayout絕對坐標(biāo)來控制標(biāo)題的位置。每個(gè)Widget內(nèi)有多種屬性,可以設(shè)置該Widget的坐標(biāo),大小,背景和顏色等參數(shù)。所以我在這里自定義了一個(gè)音軌SeekBar,SeekBar的代碼如下:SeekBar android:id=+id/seekbar android:layout_width=245px android:layout_height=20px android:layout_x=40px android:layout_y=260px android:progressDrawable=drawable/seekbar_style android:thumb=drawable/thumb android:paddingLeft=18px android:paddingRight=15pxandroid:paddingTop=5px android:paddingBottom=5px android:progress=0android:max=100 android:secondaryProgress=0/SeekBar 上面代碼中有參數(shù)android:thumb=drawable/thumb 為音軌游標(biāo)的圖片資源android:progressDrawable=drawable/seekbar_style為SeekBar條的風(fēng)格style。通過各種屬性設(shè)置了SeekBar的傾斜度,兩端圓半徑,角度,中心位置,起始,中心和結(jié)束的顏色,游標(biāo)的起始位置。音軌設(shè)置了兩個(gè)TextView用來顯示當(dāng)前歌曲播放的進(jìn)度時(shí)間和歌曲的長度() 圖 (),參數(shù)傳入歌曲的長度。然后程序運(yùn)行如下代碼: private Runnable thread_One = new Runnable() {// 線程public void run() { int currently_Progress = () + 1000。 (getFileTime( ion()))。(thread_One, 1000)。 Android的線程的開始是通過Handler類來進(jìn)行的,Handler類是線程與線程之間通信的橋梁,實(shí)現(xiàn)Runnable接口會(huì)實(shí)現(xiàn)里面的run方法,當(dāng)線程開始的時(shí)候,Runnable中的run方法會(huì)向Handler發(fā)一個(gè)Message消息,這樣,Handler類就可以接收到run方法發(fā)送過來的不同的消息進(jìn)行不同的代碼處理。要啟動(dòng)一個(gè)線程調(diào)用Handler的方法postDelayed(Runnable,1000)表示線程睡眠時(shí)間是1000ms 。對音軌進(jìn)行刷新。這也是進(jìn)度條上的游標(biāo)會(huì)不停的移動(dòng)和歌詞時(shí)間會(huì)不停的變動(dòng)的原因。將其設(shè)置為水平。配置文件代碼結(jié)構(gòu)如下:LinearLayout ImageButton /ImageButton ImageButton /ImageButton ImageButton /ImageButton ImageButton /ImageButton ImageButton /ImageButton/LinearLayout android的媒體播放原理:android源程序已經(jīng)為我們封裝好了一個(gè)接口類,叫MediaPlayer。復(fù)位操作,為以后的媒體準(zhǔn)備播放作準(zhǔn)備。參數(shù)需要傳一個(gè)路徑,該接口類在收到路徑后將其轉(zhuǎn)化為數(shù)據(jù)源。第四步:()。讓其啟動(dòng)。將里面的路徑取出。代碼算法如下:public String query() { ContentResolver cr = getContentResolver()。 String[] projection = { path }。 String[] selectionArgs = { selectName }。 if (()) { String path = (0)。 }return null。數(shù)據(jù)庫操作需要一個(gè)Uri 。Uri是數(shù)據(jù)庫唯一的標(biāo)識(shí),不同的Uri可以操作不同的數(shù)據(jù)庫表。 播放列表功能播放列表界面()圖 布局層次關(guān)系如下:?xml version= encoding=utf8?LinearLayout LinearLayout TextView/TextView /LinearLayout ListView /ListView LinearLayout ImageButton /ImageButton /LinearLayout/LinearLayout 在Android里面,有一個(gè)視圖叫ListView,其特點(diǎn)是一個(gè)有BaseAdapter的屬性,從下到下,或從左到右的顯示方式。我們定義一個(gè)類MusicAdapter 繼承了BaseAdapter,然后通過算法對這個(gè)適配器進(jìn)行擴(kuò)展,擴(kuò)展成為第一行能顯示一張圖片和一個(gè)歌曲名字。該方法返回一個(gè)View,即視圖。 ListView同樣有一個(gè)監(jiān)聽器new onItemClickListener(){Override public void onItemClick(AdapterView? arg0, View arg1, int arg2,long arg3) {}},我們只要實(shí)現(xiàn)這個(gè)方法,就可以監(jiān)聽鼠標(biāo)的點(diǎn)擊事件,當(dāng)鼠標(biāo)點(diǎn)擊到每一行時(shí),(int position)得到該行上的信息。本程序的思路是當(dāng)鼠標(biāo)點(diǎn)擊一行,會(huì)跳轉(zhuǎn)到另一個(gè)Activity里面,這個(gè)Activity和歌曲列表類似,也是一個(gè)ListView,該界面將在下一節(jié)介紹。因?yàn)槊看胃枨斜盹@示時(shí)會(huì)查詢數(shù)據(jù)庫中的歌曲列表。 Dialog的創(chuàng)建:,AlertDialog alert =()。 該 Dialog上有兩個(gè)菜單選項(xiàng),第一個(gè)為“從SD卡”,點(diǎn)擊會(huì)跳轉(zhuǎn)到SDcard界面中。(播放)。 (新增)。 (全部移除)。 ()。 View getView(int position, View convertView, ViewGroup parent) { convertView = (, null)。 = (ImageView) ()。}ListAdapter每一行都是一個(gè)LineaLayout布局,水平放置一個(gè)圖片一個(gè)String。 菜單功能實(shí)現(xiàn)菜單有6個(gè)功能:播放,詳細(xì),新增,移除,全部移除,設(shè)置。播放功能:點(diǎn)擊后事件觸發(fā),傳入歌曲名字,讓程序操作該名字進(jìn)行播放。新增功能:點(diǎn)擊后事件觸發(fā),進(jìn)入到SDCard中,進(jìn)行歌曲添加選擇。從數(shù)據(jù)庫中刪除選中的歌曲。設(shè)置功能:點(diǎn)擊后事件觸發(fā),進(jìn)入到播放設(shè)置列表。通過歌曲名字刪歌曲,算法如下:del_One(String musicName) {ContentResolver cr = getContentResolver()。 String where = fileName=?。 (uri, where, selectionArgs)。 startActivity(intent)。 播放設(shè)置界面 界面實(shí)現(xiàn)圖 :?xml version= encoding=utf8? LinearLayout RadioGroup RadioButton /RadioButton RadioButton /RadioButton RadioButton /RadioButton /RadioGroup /LinearLayoutToggleButton/AbsoluteLayout ImageButton/ ImageButton/ /AbsoluteLayout最外層的LinearLayout里面嵌套多層LineaLayout,子LinearLayout里面嵌套著單選按鈕RatioGroup 和開關(guān)按鈕ToggleButton。(1)播放模式 用的是一個(gè)組件RadioGroup,這個(gè)組件有單項(xiàng)選擇的功能,里面有RadioButton項(xiàng),多個(gè)RadioButton項(xiàng)只能同時(shí)選中一個(gè),該 播放器播放模式有單曲循環(huán),隨機(jī)播放,順序播放等功能。RadioGroup可以進(jìn)行單項(xiàng)選擇操作,如圖()圖 (),如果返回true,剛該項(xiàng)被選中。如圖():圖 ToogleButton同樣有一個(gè)監(jiān)聽器,可以獲得ToogleButton的不同狀態(tài)。()。播放模式狀態(tài)和歌詞顯示狀態(tài)的操作結(jié)果都將以一個(gè)標(biāo)志,被寫在一個(gè)配置文件中,這是關(guān)于Android的存儲(chǔ)方式,將在后面主要介紹。:[00:]呼吸著 你的香水味即是以“時(shí)間+歌詞”的格式存儲(chǔ)。并將文件讀取到BufferReader中。在讀取lrc時(shí),每次讀取一行,再用算法將時(shí)間和歌詞分開后放到一個(gè)數(shù)組里面,并分別存放在兩個(gè)list中。它有一個(gè)方法getSharedPreferences(參數(shù)1,參數(shù)2),參數(shù)1為寫進(jìn)時(shí)的標(biāo)記,便于在從其中讀取出來時(shí)的標(biāo)記,參數(shù)2為讀取模式,有只寫模式(MODE_WORLD_WRITEABLE)和只讀模式(MODE_WORLD_READABLE),在寫之前將其置入編輯狀態(tài), editor = ()。鍵名string name=random_Play/string, 而它的值是is_Radom。SharedPreferences的對象調(diào)用方法getString(sigle_Play, null),方法返回一個(gè)String類型的值,即是我們以前存儲(chǔ)進(jìn)去的String值。獲得成功后我們就可以運(yùn)用當(dāng)前的值再對程序進(jìn)行操作了。從文件瀏覽器中我們能看到各文件,而且能對其進(jìn)行操作,本程序是專為播放器添加歌曲而設(shè)計(jì)的,因此功能僅限于對媒體文件的瀏覽,和含有媒體文件的目錄的瀏覽。當(dāng)顯示菜單界面時(shí),通過新增選項(xiàng)進(jìn)入到文件瀏覽器中,或者當(dāng)播放列表為空時(shí),會(huì)提示進(jìn)入文件瀏覽器進(jìn)行歌曲新增操作。由于程序只關(guān)系到目錄/sdcard的目錄下的文件,所以用程序屏蔽了其它的目錄,這里只顯示兩個(gè)目錄/sdcard和/system。該目錄下只顯示媒體文件,和sdcard下的子目錄。當(dāng)有媒體文件時(shí)才會(huì)出現(xiàn)添加Dialog。點(diǎn)擊確定按鈕后,程序會(huì)查詢數(shù)據(jù)庫中的歌曲,調(diào)用方法query(fileName),根據(jù)歌曲名字查詢,如果歌曲不存在,則調(diào)用方法insertMusic(file),如果該歌曲名字已經(jīng)存在,則彈出Dialog對話框(),當(dāng)添加成功后,程序會(huì)跳轉(zhuǎn)到播放列表中以顯示添加結(jié)果。整個(gè)界面是一個(gè)ListView布局,而每一行是一個(gè)LinearLayout水平方式布局,上面將放置一個(gè)圖片和一個(gè)文件全路徑。如上圖所示:當(dāng)為一個(gè)Mp3格式文件時(shí),則前面圖標(biāo)顯示mp3圖標(biāo),當(dāng)為一個(gè)文件目錄時(shí),則圖標(biāo)標(biāo)識(shí)為一個(gè)文件。fill(File[] files)返回子路徑列表。 (getString())。} if ((().indexOf(.mp3)) != 1||(().indexOf(.wav))!=1) { (())。保存數(shù)據(jù)Android作為一種手機(jī)操作系統(tǒng),提供了如下幾種存取數(shù)據(jù)的方式:Preference(配置)、File(文件)、SQLite數(shù)據(jù)和網(wǎng)絡(luò) 。為了實(shí)現(xiàn)數(shù)據(jù)的共享,Android提供了Content Provider組件來實(shí)現(xiàn)應(yīng)用程序之間數(shù)據(jù)的共享 SharedPreferencesPreference Preference提供了一種輕量級(jí)的數(shù)據(jù)存取方法,一般數(shù)
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1