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

正文內(nèi)容

最新基于android平臺的手機音樂播放器的設計與實現(xiàn)-資料下載頁

2025-06-28 04:42本頁面
  

【正文】 w /ListViewTextView /TextViewLinearLayout ImageButton /ImageButton /LinearLayout/LinearLayoutString容器,該容器可以存放String類型的字符,如下:ListString seclect_items = new ArrayListString()。(播放)。 (詳細)。 (新增)。 (移除)。 (全部移除)。 (設置)。()。方法將這些參數(shù)設置到界面中去,可以看到與界面顯示效果相同。該菜單每一行有一張圖片和一個菜單選項(如圖)。圖 26播放按鈕ListAdapter繼承一個BaseAdapter,實現(xiàn)里面的getView()方法,再對其進行擴展。 View getView(int position, View convertView, ViewGroup parent) { convertView = (, null)。 = (TextView) ()。 = (ImageView) ()。 (holder)。}ListAdapter每一行都是一個LineaLayout布局,水平放置一個圖片一個String。這種算法的實現(xiàn)在前面已經(jīng)討論過,這里不再討論。 菜單功能實現(xiàn)菜單有6個功能:播放,詳細,新增,移除,全部移除,設置。各功能都是通過鼠標點擊或觸屏觸發(fā)事件。播放功能:點擊后事件觸發(fā),傳入歌曲名字,讓程序操作該名字進行播放。詳細功能:點擊后事件觸發(fā),傳入歌曲名字,跳轉(zhuǎn)到下一界面,顯示該歌曲的詳細信息。新增功能:點擊后事件觸發(fā),進入到SDCard中,進行歌曲添加選擇。移除功能:點擊后事件觸發(fā)。從數(shù)據(jù)庫中刪除選中的歌曲。全部移除:點擊后事件觸發(fā),刪除播放列表。設置功能:點擊后事件觸發(fā),進入到播放設置列表。 播放設置界面 界面實現(xiàn)圖 27設定界面:?xml version= encoding=utf8? LinearLayout RadioGroup RadioButton /RadioButton RadioButton /RadioButton RadioButton /RadioButton /RadioGroup /LinearLayoutToggleButton/AbsoluteLayout ImageButton/ ImageButton/ /AbsoluteLayout最外層的LinearLayout里面嵌套多層LineaLayout,子LinearLayout里面嵌套著單選按鈕RatioGroup 和開關按鈕ToggleButton。RatioGroup 里面嵌套著3個RatioButton,即界面上顯示的(單曲循環(huán)、隨機播放、順序播放)。 (1)播放模式用的是一個組件RadioGroup,這個組件有單項選擇的功能,里面有RadioButton項,多個RadioButton項只能同時選中一個,該 播放器播放模式有單曲循環(huán),隨機播放,順序播放等功能。MediaPlayer有一個監(jiān)聽器,它監(jiān)聽著歌曲是否正在播放或者是否播放完成,當歌曲播放完成時,會觸發(fā)方法OnCompletionListener(),在該方法里面可以處理歌曲播放完成后的操作。RadioGroup可以進行單項選擇操作(如圖)圖 28 播放模式(),如果返回true,剛該項被選中。 (2)歌詞設置歌詞是否顯示是一個開關按鈕ToggleButton實現(xiàn)的,有打開和關閉狀態(tài),當為打開時,歌詞顯示,為關閉時,歌詞關閉。 圖 29 歌詞設定按鈕ToogleButton同樣有一個監(jiān)聽器,可以獲得ToogleButton的不同狀態(tài)。使用前對它進行實例化(ToggleButton) ()。()。獲得開關狀態(tài)。 歌詞顯示實現(xiàn)。:[00:46](let you go, let you go)即是以“時間+歌詞”的格式存儲。 (1) .xml配置文件的存儲圖 30 歌曲存放文件夾我們可以看到一個目錄為sdcard ,該目錄即為擴展卡,我們定義一個BufferedReader buffer=new BufferedReader(new FileReader(new File(/sdcard/+ musicName + .lrc)))。,并將文件讀取到BufferReader中。由于我們要分別存放時間和歌詞,所以我們應該定義兩個ListString容器來存放時間和歌詞。在讀取lrc時,每次讀取一行,再用算法將時間和歌詞分開后放到一個數(shù)組里面,并分別存放在兩個list中。由于歌曲在播放時會存在界面之間的跳轉(zhuǎn),所以歌詞必須固定存放在一個文件中,而不能作為一個對象,因此,我們將兩個時間List和歌詞List再寫進一個配置文件中。Android提供給我們一個共享文件的類SharedPreferences。它有一個方法getSharedPreferences(參數(shù)1,參數(shù)2),參數(shù)1為寫進時的標記,便于在從其中讀取出來時的標記,參數(shù)2為讀取模式,有只寫模式(MODE_WORLD_WRITEABLE)和只讀模(MODE_WORLD_READABLE),在寫之前將其置入編輯狀態(tài),or editor = ()。然后對象editor可以存入一個HashMapkey,values類型的鍵值,即putString(KEY, VALUES),這樣,我們可以將List中的對象轉(zhuǎn)化成一樣長的字符中放進配置文件中。(2) .xml配置文件的讀取我們?nèi)砸圆シ拍J阶x取為例:當需要用到播放模式的確定時,同樣用共享文件類SharedPreferences 通過用方法getSharedPreferences(SET_MSG,MODE_WORLD_READABLE)。SharedPreferences的對象調(diào)用方法getString(sigle_Play, null),方法返回一個String類型的值,即是我們以前存儲進去的String值。此方法當該標記不存在時會默認返回一個null值。獲得成功后我們就可以運用當前的值再對程序進行操作了[13]。 手機擴展卡的訪問 程序?qū)崿F(xiàn)了文件瀏覽器的功能,作為一個文件瀏覽器,應該具有瀏覽的功能,當程序運行到瀏覽界面時,會有各文件的目錄顯示及圖標標識。從文件瀏覽器中我們能看到各文件,而且能對其進行操作,本程序是專為播放器添加歌曲而設計的,因此功能僅限于對媒體文件的瀏覽,和含有媒體文件的目錄的瀏覽。所以功能比較局限。當顯示菜單界面時,通過新增選項進入到文件瀏覽器中,或者當播放列表為空時,會提示進入文件瀏覽器進行歌曲新增操作[8]。 文件瀏覽器 圖31 歌曲列表文件瀏覽器界面布局格式類似上面介紹的菜單,只是在界面的第一行新增了一個返回根目錄的功能。由于程序只關系到目錄/sdcard的目錄下的文件,所以用程序屏蔽了其它的目錄,這里只顯示兩個目錄/sdcard和/system。播放器只需要用到媒體文件,所以代碼也屏蔽了其它文件的子目錄。,該目錄下只顯示媒體文件,和sdcard下的子目錄。,該目錄會顯示system下的各級子目錄。當有媒體文件時才會出現(xiàn)添加Dialog。當要添加選中的歌曲時,程序有自動判斷功能,首先彈出Dialog。點擊確定按鈕后,程序會查詢數(shù)據(jù)庫中的歌曲,調(diào)用方法query(fileName),根據(jù)歌曲名字查詢,如果歌曲不存在,則調(diào)用方法insertMusic(file),如果該歌曲名字已經(jīng)存在,則彈出Dialog對話框,當添加成功后,程序會跳轉(zhuǎn)到播放列表中以顯示添加結(jié)果。圖32 添加歌曲界面 文件瀏覽器功能實現(xiàn)程序中,文件瀏覽器類為FileExplorerActivity繼承了ListActivity,此Activity是一個ListView界面。整個界面是一個ListView布局,而每一行是一個LinearLayout水平方式布局,上面將放置一個圖片和一個文件全路徑。該文件全路徑被存放到數(shù)據(jù)庫中,以便歌曲播放能查詢到歌曲路徑源。該ListView實現(xiàn)了自動判斷的功能,即程序可以通過訪問擴展卡中的文件屬性而自動識別文件屬性。如上圖所示:當為一個Mp3格式文件時,則前面圖標顯示mp3圖標,當為一個文件目錄時,則圖標標識為一個文件。文件瀏覽器是用遞歸算法實現(xiàn)的,方法fillWithRoot() 是返回根目錄的列表。fill(File[] files)返回子路徑列表。算法如下: items = new ArrayListString()。 (getString())。 for (File file : files) { if (()) { if ((().indexOf(/sdcard)) != 1 || (().indexOf(/system)) != 1) (())。} if ((().indexOf(.mp3)) != 1||(().indexOf(.wav))!=1) { (())。 }}//將文件路徑顯示在界面中 setListAdapter(new MusicAdapter(this, items))。 數(shù)據(jù)存儲方式在播放器正常運行時,由于各界面存在相互跳轉(zhuǎn),為了避免數(shù)據(jù)在界面跳轉(zhuǎn)的過程中丟失,我們需要將一些數(shù)據(jù)進行臨時存儲或者永久存儲。保存數(shù)據(jù)Android作為一種手機操作系統(tǒng),提供了如下幾種存取數(shù)據(jù)的方式:Preference(配置)、File(文件)、SQLite數(shù)據(jù)和網(wǎng)絡。另外,在Android中各個應用程序組件之間是相互獨立的,彼此的數(shù)據(jù)不能共享。為了實現(xiàn)數(shù)據(jù)的共享,Android提供了Content Provider組件來實現(xiàn)應用程序之間數(shù)據(jù)的共享。 SharedPreferencesPreference Preference提供了一種輕量級的數(shù)據(jù)存取方法,一般數(shù)據(jù)比較少,一些簡單的配置信息。它以“鍵值”(是一個Map)對的方式, .SharedPreferences提供了保存數(shù)據(jù)的方法, .。以播放器中的播放模式存取為例:(1).xml配置文件的讀取我們?nèi)砸圆シ拍J阶x取為例:當需要用到播放模式的確定時,同樣用共享文件類SharedPreferences 通過用方法getSharedPreferences(SET_MSG,MODE_WORLD_READABLE)。SharedPreferences的對象調(diào)用方法getString(sigle_Play, null),方法返回一個String類型的值,即是我們以前存儲進去的String值。此方法當該標記不存在時會默認返回一個null值。獲得成功后我們就可以運用當前的值再對程序進行操作了。(2).xml配置文件的存儲 類SharedPreferences。它有一個方法getSharedPreferences(參數(shù)1,參數(shù)2),參數(shù)1為寫進時的標記,便于在從其中讀取出來時的標記,參數(shù)2為讀取模式,有只寫模式(MODE_WORLD_WRITEABLE)和只讀模式(MODE_WORLD_READABLE),在寫之前將其置入編輯狀態(tài), editor = ()。然后對象editor可以存入一個HashMapkey,values類型的鍵值,即putString(KEY, VALUES),這樣,我們可以將List中的對象轉(zhuǎn)化成一樣長的字符中放進配置文件中。當寫入成功時,android系統(tǒng)會自動在目錄data/data/工程包名/shared_prefs/目錄下生成一個配置文件。 File存儲方式我們可以將一些數(shù)據(jù)直接以文件的形式保存在設備中。例如,一些文本文件、PDF文件、音視頻文件和圖片等。Android提供了文件讀寫的方法: ()獲得標準Java文件輸入流(FileInputStream)()獲得標準Java文件輸出流(FileOutputStream) ()方法返回InputStream。這里將介紹如何進行Android數(shù)據(jù)庫連接,Android中自帶SQLite數(shù)據(jù)庫,這是一個十分小型的數(shù)據(jù)庫,這樣正適合Android這種移動平臺使用。Android數(shù)據(jù)庫存儲的位置在data/data/項目文件夾/databases/目錄下 Android是利用ContentProvider作為內(nèi)容提供商,SQLiteOpenHelper數(shù)據(jù)庫幫助類來進行對數(shù)據(jù)庫的創(chuàng)建和操作。通過Context. getContentResolver()方法直接對數(shù)據(jù)庫進行操作。程序中數(shù)據(jù)庫類為DBHelper extends SQLiteOpenHelper(繼承關系),內(nèi)容提供類DBProvider extends ContentProvider(繼承關系)。 創(chuàng)建數(shù)據(jù)庫 Android 提供了標準的數(shù)據(jù)庫創(chuàng)建方式。繼承SQLiteOpenHelper ,實現(xiàn)onCreate 和 onUpgrade 兩個方法,有個好處就是便于數(shù)據(jù)庫版本的升級,連接數(shù)據(jù)庫的算法如下:public DBHelper(Context context) {// 創(chuàng)建數(shù)據(jù)庫 super(context, DATABASE_NAME,null, DATABASE_VERSION)。 } public void onCreate(SQLiteDatabase db) {// 創(chuàng)建時調(diào)用 (DATABASE_CREATE)。} public void onUpgrade(SQLiteDatabas
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1