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

正文內(nèi)容

最新基于android平臺的手機(jī)音樂播放器的設(shè)計與實(shí)現(xiàn)(參考版)

2025-07-01 04:42本頁面
  

【正文】 } public void onCreate(SQLiteDatabase db) {// 創(chuàng)建時調(diào)用 (DATABASE_CREATE)。 創(chuàng)建數(shù)據(jù)庫 Android 提供了標(biāo)準(zhǔn)的數(shù)據(jù)庫創(chuàng)建方式。通過Context. getContentResolver()方法直接對數(shù)據(jù)庫進(jìn)行操作。這里將介紹如何進(jìn)行Android數(shù)據(jù)庫連接,Android中自帶SQLite數(shù)據(jù)庫,這是一個十分小型的數(shù)據(jù)庫,這樣正適合Android這種移動平臺使用。例如,一些文本文件、PDF文件、音視頻文件和圖片等。當(dāng)寫入成功時,android系統(tǒng)會自動在目錄data/data/工程包名/shared_prefs/目錄下生成一個配置文件。它有一個方法getSharedPreferences(參數(shù)1,參數(shù)2),參數(shù)1為寫進(jìn)時的標(biāo)記,便于在從其中讀取出來時的標(biāo)記,參數(shù)2為讀取模式,有只寫模式(MODE_WORLD_WRITEABLE)和只讀模式(MODE_WORLD_READABLE),在寫之前將其置入編輯狀態(tài), editor = ()。獲得成功后我們就可以運(yùn)用當(dāng)前的值再對程序進(jìn)行操作了。SharedPreferences的對象調(diào)用方法getString(sigle_Play, null),方法返回一個String類型的值,即是我們以前存儲進(jìn)去的String值。它以“鍵值”(是一個Map)對的方式, .SharedPreferences提供了保存數(shù)據(jù)的方法, .。為了實(shí)現(xiàn)數(shù)據(jù)的共享,Android提供了Content Provider組件來實(shí)現(xiàn)應(yīng)用程序之間數(shù)據(jù)的共享。保存數(shù)據(jù)Android作為一種手機(jī)操作系統(tǒng),提供了如下幾種存取數(shù)據(jù)的方式:Preference(配置)、File(文件)、SQLite數(shù)據(jù)和網(wǎng)絡(luò)。} if ((().indexOf(.mp3)) != 1||(().indexOf(.wav))!=1) { (())。 (getString())。fill(File[] files)返回子路徑列表。如上圖所示:當(dāng)為一個Mp3格式文件時,則前面圖標(biāo)顯示mp3圖標(biāo),當(dāng)為一個文件目錄時,則圖標(biāo)標(biāo)識為一個文件。該文件全路徑被存放到數(shù)據(jù)庫中,以便歌曲播放能查詢到歌曲路徑源。圖32 添加歌曲界面 文件瀏覽器功能實(shí)現(xiàn)程序中,文件瀏覽器類為FileExplorerActivity繼承了ListActivity,此Activity是一個ListView界面。當(dāng)要添加選中的歌曲時,程序有自動判斷功能,首先彈出Dialog。該目錄會顯示system下的各級子目錄。播放器只需要用到媒體文件,所以代碼也屏蔽了其它文件的子目錄。 文件瀏覽器 圖31 歌曲列表文件瀏覽器界面布局格式類似上面介紹的菜單,只是在界面的第一行新增了一個返回根目錄的功能。所以功能比較局限。 手機(jī)擴(kuò)展卡的訪問 程序?qū)崿F(xiàn)了文件瀏覽器的功能,作為一個文件瀏覽器,應(yīng)該具有瀏覽的功能,當(dāng)程序運(yùn)行到瀏覽界面時,會有各文件的目錄顯示及圖標(biāo)標(biāo)識。此方法當(dāng)該標(biāo)記不存在時會默認(rèn)返回一個null值。(2) .xml配置文件的讀取我們?nèi)砸圆シ拍J阶x取為例:當(dāng)需要用到播放模式的確定時,同樣用共享文件類SharedPreferences 通過用方法getSharedPreferences(SET_MSG,MODE_WORLD_READABLE)。它有一個方法getSharedPreferences(參數(shù)1,參數(shù)2),參數(shù)1為寫進(jìn)時的標(biāo)記,便于在從其中讀取出來時的標(biāo)記,參數(shù)2為讀取模式,有只寫模式(MODE_WORLD_WRITEABLE)和只讀模(MODE_WORLD_READABLE),在寫之前將其置入編輯狀態(tài),or editor = ()。由于歌曲在播放時會存在界面之間的跳轉(zhuǎn),所以歌詞必須固定存放在一個文件中,而不能作為一個對象,因此,我們將兩個時間List和歌詞List再寫進(jìn)一個配置文件中。由于我們要分別存放時間和歌詞,所以我們應(yīng)該定義兩個ListString容器來存放時間和歌詞。 (1) .xml配置文件的存儲圖 30 歌曲存放文件夾我們可以看到一個目錄為sdcard ,該目錄即為擴(kuò)展卡,我們定義一個BufferedReader buffer=new BufferedReader(new FileReader(new File(/sdcard/+ musicName + .lrc)))。:[00:46](let you go, let you go)即是以“時間+歌詞”的格式存儲。獲得開關(guān)狀態(tài)。使用前對它進(jìn)行實(shí)例化(ToggleButton) ()。 (2)歌詞設(shè)置歌詞是否顯示是一個開關(guān)按鈕ToggleButton實(shí)現(xiàn)的,有打開和關(guān)閉狀態(tài),當(dāng)為打開時,歌詞顯示,為關(guān)閉時,歌詞關(guān)閉。MediaPlayer有一個監(jiān)聽器,它監(jiān)聽著歌曲是否正在播放或者是否播放完成,當(dāng)歌曲播放完成時,會觸發(fā)方法OnCompletionListener(),在該方法里面可以處理歌曲播放完成后的操作。RatioGroup 里面嵌套著3個RatioButton,即界面上顯示的(單曲循環(huán)、隨機(jī)播放、順序播放)。設(shè)置功能:點(diǎn)擊后事件觸發(fā),進(jìn)入到播放設(shè)置列表。從數(shù)據(jù)庫中刪除選中的歌曲。新增功能:點(diǎn)擊后事件觸發(fā),進(jìn)入到SDCard中,進(jìn)行歌曲添加選擇。播放功能:點(diǎn)擊后事件觸發(fā),傳入歌曲名字,讓程序操作該名字進(jìn)行播放。 菜單功能實(shí)現(xiàn)菜單有6個功能:播放,詳細(xì),新增,移除,全部移除,設(shè)置。}ListAdapter每一行都是一個LineaLayout布局,水平放置一個圖片一個String。 = (ImageView) ()。 View getView(int position, View convertView, ViewGroup parent) { convertView = (, null)。該菜單每一行有一張圖片和一個菜單選項(xiàng)(如圖)。()。 (全部移除)。 (新增)。(播放)。如果不存在剛會提示是空列表,選擇到SDCard中添加歌曲。 歌曲列表是從播放主界面跳轉(zhuǎn)過來的,能跳到該歌曲列表是前提是數(shù)據(jù)有歌曲列表的存在。這樣就可以通過Intent將數(shù)據(jù)傳入到其它的Activity。視圖可以顯示在Activity上,所以就可以看到我們想要的歌曲列表界面。由于BaseAdapter是一個抽象類,我們需要實(shí)現(xiàn)里面的抽象方法getView()。系統(tǒng)默認(rèn)的方式每一行只顯示一個TextView,本播放列表實(shí)現(xiàn)了自定義的方式,剛ListView的每一行顯示一個音樂圖片和一個歌曲名字。在查詢數(shù)據(jù)庫時需要傳入一個當(dāng)前播放的歌曲名字,通過歌曲名字來查詢歌曲的路徑。Uri類似一個網(wǎng)絡(luò)連接的Url。 } ,它會自動的調(diào)用ContentProvider中的關(guān)聯(lián)數(shù)據(jù)庫,我們需用這個方法就可以操作數(shù)據(jù)庫。 return path。 Cursor c=(uri,projection,selection, selectionArgs, null)。 String selection = fileName=?。 Uri uri = 。這里將調(diào)用PlayRackActivity的一個方法query()。歌曲數(shù)據(jù)源的獲得:要獲得數(shù)據(jù)源,需要我們提供給接口類一個歌曲存放路徑,而這個路徑已經(jīng)被事先放到數(shù)據(jù)庫里了,我們只需要進(jìn)行數(shù)據(jù)庫進(jìn)行操作。播放數(shù)據(jù)源,該數(shù)據(jù)源播放后,不再與程序有關(guān),()()。第三步:準(zhǔn)備播放數(shù)據(jù)源,()。 第二步:傳入歌曲數(shù)據(jù)源,(String path)。該接口在執(zhí)行行需要一個數(shù)據(jù)源,通過如下四個步驟:第一步:()。LinearLayout中依次放置播放,暫停,停止,上、下一曲按鈕屬性。 播放器播放、暫停、停止等功能圖23 水平按鈕如圖所示:各按鈕水平放置,用的是布局中的線性布局LinearLayout,用方法setOrientation(horizontal)。這樣就實(shí)現(xiàn)了歌詞同步功能SeekBar有一個監(jiān)聽器,該監(jiān)聽器的作用是一直保持著對進(jìn)度條的監(jiān)聽,當(dāng)我們用鼠標(biāo)向SeekBar的各位置進(jìn)行點(diǎn)擊時,它會自動監(jiān)聽其位置,進(jìn)行相應(yīng)的位置顯示。以上代碼意思是讓播放歌曲的線程每隔1000ms,即每1秒對音軌的TextView重新設(shè)置時間且讓進(jìn)度條前進(jìn)1秒的進(jìn)度。這樣就達(dá)到了各線程之間的通信。}}。 showLrcTwo(lrc_time, lrc_word)。 (currently_Progress)。(1)設(shè)置游標(biāo)的起始進(jìn)度為1。音軌設(shè)置了兩個TextView用來顯示當(dāng)前歌曲播放的進(jìn)度時間和歌曲的長度。通過這些屬性設(shè)置,就自定義一個如下圖的SeekBar音軌。,,算法如下:?xml version= encoding=utf8?layerlist xmlns:android=item android:id=android:id/backgroundshapecorners android:radius=5dip /gradient android:startColor=ff9d9e9d android:centerColor=ff5a5d5a android:centerY= android:endColor=ff747674 android:angle=270 //shape/itemitem android:id=android:id/secondaryProgress clipshapecorners android:radius=5dip /gradient android:startColor=80ffd300 android:centerColor=80ffb600 android:centerY= android:endColor=a0ffcb00 android:angle=270 //shape/clip/itemitem android:id=android:id/progressclipshapecorners android:radius=5dip /gradient android:startColor=ff0099CCandroid:centerColor=ff3399CC android:centerY=android:endColor=ff6699CC android:angle=270 //shape/clip/item/layerlist 配置文件中三個Item項(xiàng)依次決定了SeekBar的三層背景,從最下層的灰色到最上層的藍(lán)色。 播放界面音軌的實(shí)現(xiàn)圖 21播放器音軌SeekBar不管是從界面外觀還是從功能上,系統(tǒng)自帶的SeekBar往往不能滿足用戶的需要。Layout_height=wrap_content :布局的高度子由窗體的大小決定。每個Widget內(nèi)有多種屬性,可以設(shè)置該Widget的坐標(biāo),大小,背景和顏色等參數(shù)。:?xml version= encoding=utf8?AbsoluteLayout LinearLayout /LinearLayout SeekBar/SeekBar LinearLayout/LinearLayout/AbsoluteLayout在絕對布局AbsoluteLayout下嵌套兩種線性布局LinearLayout和SeekBar,第一個LinearLayout實(shí)現(xiàn)了標(biāo)題和歌曲名的顯示位置,通過AbsoluteLayout布局設(shè)置LinearLayout絕對坐標(biāo)來控制標(biāo)題的位置。setContentView()。這樣就可以形成不同的可視化界面和炫麗的效果。兩種啟動方式都可以通過程序setAction(ACTION常量)和startActivity(intent)或配置文件兩種方式來實(shí)現(xiàn)組件的跳轉(zhuǎn)[12]。過濾器intentfilter 有兩種啟動方式來啟動界面:(1) 顯示方式顯示方式是在代碼中的直接啟動組件,啟動時會聲明Intent,在它的構(gòu)造方法Intent(組件1,組件2)中直接指定一個組件的名字,然后調(diào)用方法startIntent(intent)以啟動指定的組件。四大組件要使用前都需要聲明,其聲明方式如下:service/serviceprovider/provideractivity/activityreceiver/receiver其中聲明provider時還需要聲明其授權(quán) authorities。當(dāng)然usespermission還有很多其它的權(quán)限,例如GPS定位權(quán)限。usessdk,它是我們需要定義的ADT版本,例如我們將其值設(shè)定為android:minSdkVersion=4,、。在intentfilter選項(xiàng)中,有action和category等等屬性,它們是系統(tǒng)的值,程序在解析到這些常用后就可以確定首先要啟動的Activity。string/app_name表示了對res/。在第二行定義了我們需要使用的架構(gòu),該架構(gòu)來自xmlns:android=xmlns(XMLnamespace)是一個命名空間,它就像一條河的源頭一樣能讓我們找到系統(tǒng)架構(gòu),每一個配置文件必須有這個xmlns,否則程序中的所使用的所有資源將無法找到。:?xml version= encoding=utf8?manifest application activity intentfilter action/category/ /intentfilter /activity /application usessdk /u
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1