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

正文內(nèi)容

基于android系統(tǒng)的midi音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文-閱讀頁(yè)

2024-07-31 11:19本頁(yè)面
  

【正文】 濟(jì)可行性 本系統(tǒng)開(kāi)發(fā)經(jīng)費(fèi)在經(jīng)濟(jì)上是可以接受的,現(xiàn)在電腦 和手機(jī) 已經(jīng)普及, 而手機(jī)更是人人都擁有,而 Android 手機(jī)更是主流手機(jī) ,在市面上一般的 Android 系統(tǒng)手機(jī)的價(jià)錢(qián)都在千元左右,所示說(shuō)價(jià)錢(qián)并不是很昂貴 。所以本 應(yīng)用 在經(jīng)濟(jì)上是可行的。 只要開(kāi)發(fā)者有一個(gè)比較全面 的 Java 基礎(chǔ), 以及一些簡(jiǎn)單的 XML 技術(shù),對(duì)軟件的開(kāi)發(fā)流程有一定的了解, 在開(kāi)發(fā) Android 程序的時(shí)候一般是不會(huì)有太大的問(wèn)題的 。 所以 開(kāi)發(fā)者想進(jìn)行 Android 開(kāi)發(fā),準(zhǔn)備工作其實(shí)是很簡(jiǎn)單的。 綜上所述,本應(yīng)用在技術(shù)上是可行的。 本項(xiàng)目是一款基于 Android 手機(jī)平臺(tái)的音樂(lè)播放器,使 Android 手機(jī) 擁有個(gè)性的多媒體播放器,使手機(jī)顯得更生動(dòng)靈 活化,與人們更為接近,讓手機(jī)主人隨時(shí)隨地處于音樂(lè)視頻的旋律之中 , 使人們的生活更加多樣化。但符合條件的 Android 工程師屈指可數(shù),在未來(lái)幾年內(nèi), Android 開(kāi)發(fā)工程師將成為 3G 行業(yè)炙手可熱的崗位之一。 內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(畢業(yè)論文) 12 功能需求分析 根據(jù) 播放器的實(shí)現(xiàn) 目標(biāo), 可獲得 播放器 的基本需求,以下從不同角度來(lái)描述系統(tǒng)的需求,系統(tǒng)的功能需求, 分成 三 部分來(lái)概括,即播放器的基本控制需 求 ,播放列表管理需求 和 播放器友好性需求 ,如圖 所示為應(yīng)用功能需求 結(jié)構(gòu) 圖分析 。 本應(yīng)用對(duì)播放器的基本控制也全部得到了實(shí)現(xiàn),例如:暫停 、上一首、下一首和播放時(shí)間的同步顯示等,如圖 所示 播放器的基本控制功能用例圖分析。 2) 刪除音樂(lè)功能:用戶可以刪除自己添加的歌曲。 4) 播放列表中的歌曲:用戶瀏覽列表,并且可以播放選中的歌曲。 用 戶播 放 模 式 控 制 模 塊循 環(huán) 播 放隨 機(jī) 播 放順 序 播 放單 曲 循 環(huán)開(kāi) 啟關(guān) 閉 圖 播放模式模塊用例圖 內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(畢業(yè)論文) 15 性能 需求分析 根據(jù) Android 手機(jī)系統(tǒng)要求無(wú)響應(yīng)時(shí)間為 5 秒,所以就有如下性能要求: ? 當(dāng)要求歌曲播放時(shí),程序響應(yīng)時(shí)間最長(zhǎng)不能超 過(guò) 5 秒 。 ? 當(dāng)要求 添加 或 刪除歌曲 時(shí),程序響應(yīng)時(shí)間最長(zhǎng)不能超過(guò) 5 秒 。 ? 當(dāng)要求進(jìn)行 列表切換 時(shí),程序響應(yīng)時(shí)間最長(zhǎng)不能超過(guò) 5 秒 。 Android 系統(tǒng)為開(kāi)發(fā)者提供了一個(gè) MediaStore 這個(gè)類 ,它是一個(gè)多媒體數(shù)據(jù)庫(kù),Android 中多媒體信息都可以從這里 提取。 存放媒體信息如 TITLE(標(biāo)題 )、 ARTIST(藝術(shù)家)、ALBUM(專輯 封面 )、 SIZE(大小 )和 DATA(路徑)等字段。 第二張表 favourite 存放于自己創(chuàng)建的 數(shù)據(jù)庫(kù)中,用于存放用戶自己添加歌曲的信息 , 如表 所示。 程 序 初 始 化歌 曲 列 表 界 面選 擇 歌 曲 播 放退 出 程 序播 放 控 制 界 面退 出 程 序YN結(jié) 束 同 步 線 程開(kāi) 啟 同 步 線 程結(jié) 束開(kāi) 始 圖 音樂(lè)播放器系統(tǒng)流程圖 播放控制流程設(shè)計(jì) 播放控制模塊 是整個(gè)設(shè)計(jì)控制的核心部分 , 用戶只需通過(guò)簡(jiǎn)單的觸摸操作就可以實(shí)現(xiàn)對(duì)歌曲播放的控 制, 如圖 所示。 掃描完歌曲文件后, 掃描 /SDCard/目錄下的所有以 .lrc 為后綴的 歌詞文件 并且存儲(chǔ)文件名和文件的絕對(duì)路徑 。 內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(畢業(yè)論文) 19 開(kāi) 始獲 得 所 有 歌 曲 信 息獲 得 所 有 歌 曲 和 歌詞 信 息獲 取 M y m u s i c . d b 中的 信 息第 一 次 運(yùn) 行M I D I ?Y創(chuàng) 建M y m u s i c . d b列 表 顯 示N刪 除 、 搜 索 和 添 加刷 新 列 表結(jié) 束 圖 歌曲列表操作流程圖 播放模式流程設(shè)計(jì) 播放模式控制即循環(huán)播放、隨機(jī)播放、順序播放和單曲循環(huán),其中前三種播放模式采用循環(huán)切換的模式進(jìn)行選擇,單曲循環(huán)獨(dú)立開(kāi)來(lái),進(jìn)行開(kāi)啟或者關(guān)閉,如圖 所示。 UI 通常包含圖形和文字 , 應(yīng)用界面的設(shè)計(jì)是對(duì)控件進(jìn)行適當(dāng)?shù)娜∩峒肮δ艿倪x擇和處理的過(guò)程(對(duì)控件進(jìn)行事件監(jiān)聽(tīng))。 Android 的界面寫(xiě)在“ res/layout”下面的布局文件中 ,一般情況下,一個(gè)布局文件對(duì)應(yīng)一個(gè)界面,如 圖 所示,這是 MIDI 播放器所有的布局文件。 MIDI 音樂(lè)播放器的 每一個(gè)可視化界面,都有其的唯一的布局配置文件,該文件里面有各種布局方式 : 線性布局 ( Linear Layout) 和 相對(duì)布局 ( Relative Layout) 等 , 通過(guò) 各種資源文件如圖像,文字,顏色的引用 ,和這幾種布局的完美組合, 這樣就形成 了 MIDI播放器 不同的可視 化界面和 絢爛 的效果。 圖 播放器布局文件 內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(畢業(yè)論文) 21 歌曲列表界面設(shè)計(jì) 在程序初始化后, 呈現(xiàn)給用戶的界面就是歌曲列表界面,如圖 所示。 ListView android:id=+id/musiclist android:layout_height=fill_parent android:layout_width=fill_parent android:layout_marginLeft=6dp android:layout_marginRight=6dp android:cacheColorHint=00000000 android:divider=color/divider_color android:dividerHeight=1dp android:listSelector=drawable/selector_list_item android:layout_below=+id/relativeLayout1 /ListView 內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(畢業(yè)論文) 22 在歌曲播放列表 使用了 SlidingDrawer(滑動(dòng)式抽屜)這個(gè)控件, SlidingDrawer隱藏屏外的內(nèi)容,并允許用戶通過(guò) handle以顯示隱藏內(nèi)容 , 將播放控制界面放在了這個(gè)隱藏內(nèi)容中, 它可以垂直或水平滑動(dòng), 布局代碼實(shí)現(xiàn)如下所示。 /* * 獲取控件的屏幕區(qū)域 */ public Rect getRectOnScreen(View view){ Rect rect = new Rect()。 View parent = view。 } (location)。 (location[0], location[1])。 } public boolean onInterceptTouchEvent(MotionEvent event) { // 觸摸位置轉(zhuǎn)換為屏幕坐標(biāo) int[] location = new int[2]。 int y = (int)()。 x += location[0]。 if(mTouchableIds != null){ for(int id : mTouchableIds){ 內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(畢業(yè)論文) 23 View view = findViewById(id)。 if((x,y)){ if (() == ) { if (mTouchViewClickListener != null) { (view)。 } } } } //抽屜行為控件 if(() == amp。 mHandleId != 0){ View view = findViewById(mHandleId)。 if((x, y)){//點(diǎn)擊抽屜控件時(shí)交由系統(tǒng)處理 { return (event)。 } } return (event)。 } } 播放控制界面設(shè)計(jì) 在 MIDI 音樂(lè)播放器界面設(shè)計(jì)中, 將播放控制界面放在了 SlidingDrawer 這個(gè)控件的隱藏內(nèi)容中,只需點(diǎn)擊歌曲列表界面的下方的按鈕,播放控制界面會(huì)從屏幕下方滑出也可以拖動(dòng), 也可以在此隱藏,如圖 所示。 SeekBar android:id=+id/seekBar android:layout_width=fill_parent android:layout_height=wrap_content android:layout_toRightOf=id/CurTime android:layout_toLeftOf=id/TotalTime android:paddingLeft=5dp android:paddingRight=5dp android:max=100 android:progressDrawable=drawable/seekbar_style android:thumb=drawable/seekbar_thumb android:background=drawable/progress_buffering /SeekBar : ?xml version= encoding=utf8? 內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(畢業(yè)論文) 25 layerlist xmlns:android= item android:id=android:id/secondaryProgress clip android:drawable=drawable/progress_buffering / item android:id=android:id/progress clip android:drawable=drawable/progress_playing / /layerlist : ?xml version= encoding=utf8? selector xmlns:android= item android:state_pressed=true android:drawable=drawable/thumb_f / item android:drawable=drawable/thumb_normal / /selector 播放器初始化 實(shí)現(xiàn) MIDI 音樂(lè)播放器運(yùn)行之后,需要一個(gè)初始化的過(guò)程,這個(gè)過(guò)程實(shí)際就是對(duì) SD 卡中所有音樂(lè)一個(gè)掃描的過(guò)程,即獲取所有音樂(lè)的相關(guān)信息 ,如歌曲的名字和演唱者等 。 private ArrayListMusicData setMusicDatas() { // TODO Autogenerated method stub Cursor cursor=(, musicdata, null, null, null)。 int musicID=()。 int musicTime=()。 內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(畢業(yè)論文) 26 int musicPath=()。 int musicCount=()。 for (int i = 0。 i++) { musicData=new MusicData()。 ((musicTitle))。 ((musicArtist))。 ((musicALBUM_ID))。 (musicData)。 } ()。 } return musicDatasList。 (context, )。 (musicList, musicList)。 ((MiDiMusicActivity) context).startActivity(intent)。 //實(shí)現(xiàn)初始化界面淡出效果 ((MiDiMusicActivity) context).finish()。 } }。 Android 數(shù)據(jù)庫(kù)存儲(chǔ)的位置在 data/data/項(xiàng)目文件夾 /databases/目錄下 。通過(guò) ()方法直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1