一個簡單的安卓音樂播放器_第1頁
一個簡單的安卓音樂播放器_第2頁
一個簡單的安卓音樂播放器_第3頁
一個簡單的安卓音樂播放器_第4頁
一個簡單的安卓音樂播放器_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、嵌入式高級編程大作業(yè)HIHEIMUSIC學(xué)院:計算機(jī)與信息工程學(xué)院班級:計算機(jī)與科學(xué)技術(shù)系學(xué)號:1姓名:楊建利HIHEIMUSIC摘要使用Java語言,利用Eclipse和Android SDK 開發(fā)工具,完成對Android版本的音樂播放器的開發(fā)。開發(fā)中使用ContentProvider獲取音樂信息,利用Service+MediaPlayer完成音樂的播放,最后在界面中使用intent完成界面的跳轉(zhuǎn)中的信息傳遞。主要實(shí)現(xiàn)歌曲的播放,進(jìn)度控制以及來去電話時候?qū)Ω枨淖詣訒和2僮鞴δ?,最后使用自定義歌詞組件完成歌詞對歌曲的同步顯示。關(guān)鍵詞:Android 、Service、MediaPlayer

2、、ContentProvider 目錄1. 引言41.1 項(xiàng)目介紹41.2 開發(fā)環(huán)境42. 系統(tǒng)需求分析42.1 用戶需求42.2 功能需求43. 系統(tǒng)總體設(shè)計43.1 功能劃分(系統(tǒng)總體框架)53.2 功能說明53.3 系統(tǒng)數(shù)據(jù)流程圖63.4 數(shù)據(jù)流程說明73.5 界面布局設(shè)計83.6 界面切換描述94. 系統(tǒng)詳細(xì)設(shè)計104.1 結(jié)構(gòu)設(shè)計10 4.2 函數(shù)設(shè)計115. 系統(tǒng)實(shí)現(xiàn)195.1 運(yùn)行結(jié)果196. 結(jié)論217. 參考文獻(xiàn)211. 引言 1.1 項(xiàng)目介紹由于學(xué)習(xí)Android中的各種控件,機(jī)制以及完成課程設(shè)計的要求。所以,制作該音樂播放器。 1.2 開發(fā)環(huán)境Windows7系統(tǒng)下,使用

3、Eclipse+ADT(Android4.2.2)+Java JDK開發(fā)環(huán)境。2. 系統(tǒng)需求分析 2.1 用戶需求(1)查看手機(jī)上的歌曲(2)點(diǎn)擊播放歌曲 (3)對歌曲進(jìn)行播放/暫停/上一曲/下一曲/播放模式以及進(jìn)度實(shí)時顯示以及控制(4)播放歌曲同時同步滾動顯示歌詞 2.2 功能需求(1) 一共有兩個界面,歌曲信息界面和歌詞界面。(2) 歌曲信息界面有標(biāo)題(本地歌曲),中部有歌曲信息(歌曲圖標(biāo)、歌曲名稱、時長,歌手名稱),底部簡單歌曲控制(進(jìn)度條(允許拖拉控制歌曲進(jìn)度)、當(dāng)前歌曲名稱、播放/暫停按鈕、下一曲)(3) 點(diǎn)擊當(dāng)前歌曲名稱(底部簡單歌曲控制中)跳轉(zhuǎn)到歌詞界面(4) 歌詞界面頂部當(dāng)前歌

4、曲名稱,中部歌詞顯示,底部控制選項(xiàng)(5) 歌詞顯示要求能夠?qū)崟r同步滾動顯示歌詞,即演唱到哪句就哪句變?yōu)楦吡?,并且?yīng)當(dāng)在屏幕可見位置,歌詞應(yīng)該有滾動效果,允許用戶上下拖拉去查看歌詞,并且不會影響歌曲正常播放,最后歌詞應(yīng)該可以自己調(diào)整位置,保證用戶歌詞查看方便。(6) 底部控制要求具有播放模式選擇(進(jìn)度條(實(shí)時顯示歌曲進(jìn)度,允許用戶通過進(jìn)度條控制歌曲播放進(jìn)度)、全部循環(huán)/單曲循環(huán)(共用一個按鈕)、上一曲、播放/暫停(共用一個按鈕)、下一曲,返回歌曲列表) 2.3 性能需求獲取本地歌曲的時間小于2s,做到歌曲的控制可以實(shí)時響應(yīng)(小于0.5s)。3. 系統(tǒng)總體設(shè)計 3.1 功能劃分(系統(tǒng)總體框架)3.

5、2 功能說明3.2.1 歌曲信息獲取從手機(jī)的數(shù)據(jù)庫中找到歌曲的信息,然后封裝好。以供其他組件調(diào)取。3.2.2 歌曲基本控制l 進(jìn)度條(SeekBar)進(jìn)度條保證實(shí)時顯示(10次/s),更新歌曲播放的進(jìn)度。通過拖拽進(jìn)度條可以完成對歌曲的進(jìn)度的控制。l 當(dāng)前歌曲顯示當(dāng)前歌曲的名稱(歌曲名太長時自動滾動顯示)。點(diǎn)擊直接跳轉(zhuǎn)至歌詞界面l 播放/暫??刂瓢粹o對當(dāng)前歌曲進(jìn)行播放/暫??刂?。并且要求當(dāng)播放狀態(tài)時,點(diǎn)擊暫停,并且按鈕圖標(biāo)進(jìn)行變化,暫停轉(zhuǎn)向播發(fā)狀態(tài)時也是如此。l 下一曲按鈕點(diǎn)擊即播放下一曲,最后一首歌時自動播放第一首。3.2.3歌曲信息顯示將獲取的歌曲信息,將歌名,時間,歌手的關(guān)鍵信息顯示在手機(jī)

6、界面上,并且當(dāng)屏幕裝不下時可以滑動手機(jī)顯示,當(dāng)點(diǎn)擊歌曲所屬行時,歌曲播放。3.2.4音樂播放服務(wù)實(shí)現(xiàn)歌曲的后臺播放服務(wù),能夠?qū)崟r相應(yīng)各種控件對于歌曲播放的控制,并且當(dāng)界面不可見或者界面切換時不會影響歌曲的播放,播放器退出時,歌曲自動停止。3.2.5 歌曲名稱顯示顯示當(dāng)前正在播放的歌曲名稱3.2.6 控制組件l 進(jìn)度條(SeekBar)進(jìn)度條保證實(shí)時顯示(10次/s),更新歌曲播放的進(jìn)度。通過拖拽進(jìn)度條可以完成對歌曲的進(jìn)度的控制。l 播放模式按鈕點(diǎn)擊轉(zhuǎn)換播放模式,并且圖標(biāo)改變,并伴隨著提示。一共兩種播放模式,全部循環(huán)以及單曲循環(huán)。l 上一曲按鈕點(diǎn)擊播放上一曲歌曲,如果當(dāng)前是第一曲,則自動播放最后

7、一曲。l 播放/暫停按鈕對當(dāng)前歌曲進(jìn)行播放/暫??刂?。并且要求當(dāng)播放狀態(tài)時,點(diǎn)擊暫停,并且按鈕圖標(biāo)進(jìn)行變化,暫停轉(zhuǎn)向播發(fā)狀態(tài)時也是如此。l 下一曲按鈕點(diǎn)擊即播放下一曲,最后一首歌時自動播放第一首。l 返回列表按鈕點(diǎn)擊返回到歌曲信息界面(跟當(dāng)前界面的back鍵功能相同)。3.2.7歌詞顯示能夠同步滾動顯示當(dāng)前的歌詞。并且可以拖動歌詞,從而查看其他的歌詞。3.2.8 電話狀態(tài)監(jiān)聽檢測當(dāng)前電話狀態(tài),如果是要撥打/接聽電話的時候,音樂自動暫停,當(dāng)電話掛斷之后,重新播放歌曲。3.3 系統(tǒng)數(shù)據(jù)流程圖3.4 數(shù)據(jù)流程說明 在流程圖中出現(xiàn)的所有的模塊,一共分為兩類(1) 可見的控制模塊(2) 不可見的服務(wù)控制

8、模塊可見的控制模塊與用戶進(jìn)行交互,調(diào)取相應(yīng)的不可見的服務(wù)控制模塊,從而實(shí)現(xiàn)對整個音樂服務(wù)的控制。數(shù)據(jù)流前提要求:每次進(jìn)入新界面,需要對當(dāng)前可見的模塊的狀態(tài)的更新,信息從Application的全局類中獲取。每次通過控件去控制服務(wù)時都需要去更新全局變量。每個控件都處于等待用戶操作狀態(tài)歌詞與進(jìn)度條以及時間顯示標(biāo)簽屬于實(shí)時更新,全部屬于一個線程當(dāng)中。主要數(shù)據(jù)流程如下:進(jìn)入軟件主界面(歌曲信息界面)對當(dāng)前各種組件進(jìn)行更新根據(jù)用戶操作完成對音樂播放服務(wù)的基本控制點(diǎn)擊到歌詞名組件時進(jìn)入歌詞界面對界面各種組件進(jìn)行更新各種組件等待用戶進(jìn)行控制點(diǎn)擊返回按鈕返回上層進(jìn)入軟件主界面(歌曲信息界面)對當(dāng)前各種組件進(jìn)行

9、更新點(diǎn)擊退出(back)彈出對話框殺死服務(wù)進(jìn)程退出軟件 3.5 界面布局設(shè)計布局1:軟件主界面布局2: 歌詞界面 3.6 界面切換描述點(diǎn)擊在界面1下方的播放按鈕旁邊的歌詞的顯示,然后直接會跳轉(zhuǎn)到歌詞界面。4. 系統(tǒng)詳細(xì)設(shè)計 4.1 結(jié)構(gòu)設(shè)計l 文件結(jié)構(gòu)1No.文件夾描述1src存放本軟件的所有源代碼appclass.java全局變量類AudioUtils.java音樂文件獲取類LyricObject.java歌詞類LyricView.java歌詞顯示組件類MainActivity.java主界面類MediaInfomation.java歌曲信息抽象類MusicService.java歌曲播放服

10、務(wù)類Play_Activity.java歌詞界面類Play_Menu_Layout.java主界面中的控制組件類2genADT插件自動生成的代碼文件保存路徑以及資源IDBuildConfig.javaR.java3Android.4.2.2安卓版本4assert大型資源文件(暫無)5res本項(xiàng)目中所有的資源文件6res/drawable-hdpi所有的圖標(biāo)文件all.png 全部循環(huán)標(biāo)志file.png返回歌單front.png上一曲icon0.png播放歌曲旁邊的logolone.png單曲循環(huán)music_icon.png歌曲l圖標(biāo)next.png下一曲pause.png暫停play.png

11、播放7AndroidManifest軟件信息以及各種權(quán)限的添加記錄 4.2 函數(shù)設(shè)計4.2.1自定義抽象類l MediaInfomation類類名:MediaInfomation功能:將歌曲的各種信息封裝成一個歌曲信息的抽象類。歌曲信息需要擁有的變量:參數(shù)類型解釋filenameString文件名稱titleString歌曲名稱durationint總時長singerString歌手albumString專輯yearString年份typeString類型sizeString大小fileUrlString文件路徑isMusicboolean是否是音樂l LyricObject類 類名:Lyri

12、cObject 功能:將每一行歌詞封裝成一個對象,方便引用 變量:參數(shù)類型解釋begintimeint開始時間endtimeint結(jié)束時間timelineint單句用時lrclrc單句歌詞l play_menu_Layout類3 類名:play_menu_Layout 功能:將歌曲列表的信息下面的功能條封裝成了一個功能條,實(shí)現(xiàn)多個界面調(diào)用時可以重復(fù)使用。 該信息需要的變量:1 布局樣式2 變量參數(shù)類型解釋seekbarSeekBar顯示歌曲進(jìn)度以及控制歌曲進(jìn)度play_menu_nameTextView當(dāng)前選中歌曲的名稱(具有跑馬燈效果,點(diǎn)擊可跳轉(zhuǎn)界面)play_b_playButton播放/

13、暫停按鈕play_b_nextButton下一曲3 具體功能函數(shù)函數(shù)名功能public void setTextView(String name)設(shè)置當(dāng)前播放歌曲的名稱,并使之獲得焦點(diǎn)4.2.2 appclass類4類名:appclass功能:(1) 存儲整個播放器中的一些全局變量,用于各個界面的初始化以及更新組件使用。(2) 獲得歌曲信息,并且將其封裝以便于其他組件調(diào)用主要信息包含:參數(shù)類型解釋mediainfomationMediainfomation歌曲列表LENGTH int當(dāng)前歌曲時長(毫秒)CURENT int當(dāng)前播放進(jìn)度(毫秒)NOWACTIVITY int 當(dāng)前顯示的Activ

14、ityPOSITION int當(dāng)前歌曲在歌曲列表中位置PLAYSTATE int當(dāng)前播放狀態(tài)(未播放/正在播放/暫停)PLAYMODEL int 播放模式(全部循環(huán)播放/單曲循環(huán)播放)具體函數(shù)功能:函數(shù)名功能public void onCreate()Activity創(chuàng)造函數(shù),進(jìn)行全部功能的調(diào)取,安排public void init()初始化,獲取歌曲信息4.2.3 AudioUtils類2類名:AudioUtils功能:利用Content Provider機(jī)制從android的媒體庫中獲取所有歌曲的信息,并將其封裝成一個ArrayList,以供調(diào)用。變量:參數(shù)類型解釋MediaInfomat

15、ionsArrayList歌曲列表具體函數(shù)功能:函數(shù)名返回值功能publicstaticArrayListgetAllMediaInfomations(Context context)MediaInfomations從媒體庫中讀取出所有的歌曲信息,并封裝成為MediaInfomations4.2.4 LyricView類類名:LyricView功能:從外界讀取歌詞文件,將其解析,同時配合外界的刷新函數(shù),完成對歌詞界面的同步顯示,以及完成用戶上下滑動查看歌詞。變量:參數(shù)類型解釋lrc_mapTreeMap 歌詞的存儲方式mxfloat屏幕x軸中點(diǎn)offsetYfloat歌詞在Y軸的偏移量,隨著歌

16、詞的滾動變小blLrcstatic boolean判讀是否有歌詞文件touchXfloat按下時候的橫坐標(biāo)touchYfloat按下時候的縱坐標(biāo)lrcIndexint保存歌詞TreeMap的下標(biāo)SIZEWORDint文字大小INTERVALint歌詞間隔paintPaint普通歌詞的畫筆paintHLPaint正在播放的歌詞的畫筆具體函數(shù)功能函數(shù)名返回值功能public LyricView(Context context)無構(gòu)造函數(shù)public LyricView(Context context, AttributeSet attrs)無構(gòu)造函數(shù)protected void onDraw(Ca

17、nvas canvas)無覆寫的onDraw()用于刷新viewpublic void init()無初始化函數(shù),完成對歌詞樹的創(chuàng)建意見畫筆的屬性設(shè)置public void SetTextSize()無設(shè)置歌詞的字體大?。J(rèn)40)protected void onSizeChanged(int w, int h, int oldw, int oldh)無覆寫view自帶的字體改變函數(shù)public boolean onTouchEvent(MotionEvent event)boolean完成用于用手指操控view組件時的操作(可以上下滑動,獲得最新的touchY,用于下一次更新view時使用

18、)public int SelectIndex(int time)int查找當(dāng)前時間所對應(yīng)的歌詞在TreeMap中的下標(biāo)public Float SpeedLrc()Float滾動速度,當(dāng)前正在播放的歌詞所對應(yīng)的位置超過屏幕的1/2時,2s內(nèi)滑動到屏幕正中央。public static void read(String file)無讀取歌曲文件,構(gòu)建Tree_Map樹。public static boolean isBlLrc() boolean返回是否有歌詞文件public float getOffsetY()float得到當(dāng)前的offsetYpublic void setOffsetY(f

19、loat offsetY)float設(shè)置當(dāng)前的offsetYpublic int getSIZEWORD()int返回歌詞文字大小public void setSIZEWORD(int sIZEWORD)int設(shè)置歌詞文字大小public int getINTERVAL()int得到當(dāng)前歌詞間隔4.2.5 MusicService類類名:MusicService功能:將MediaPlayer類封裝到其中,然后實(shí)現(xiàn)整個歌曲的播放,暫停,下一曲,上一曲,播放模式的設(shè)置,以及進(jìn)度的獲取,對外界進(jìn)度組件的設(shè)置等。同時實(shí)現(xiàn)接打電話時候歌曲的自動暫停以及再播放。變量:參數(shù)類型解釋TAGstatic fin

20、al String調(diào)試使用的標(biāo)記ACTIONstatic final String啟動的ActionBIDint啟動本服務(wù)的按鈕的IDSTATEint播放狀態(tài)的碼(0,1,-1)PLAYOVERint播放模式(0,1)mediaMediaPlayer播放的歌曲LENGTHint當(dāng)前播放的歌曲的長度具體函數(shù)功能:函數(shù)名返回值功能public void onCreate()無Service的創(chuàng)建函數(shù),完成Service初始化public void init()無初始化操作,meida以及其他功能的初始化操作public void onDestroy()無Service的銷毀以及Media的銷毀工作

21、public void onStart(Intent intent, int startId)無每次開啟Service時的操作函數(shù),在此完成各個控件對該服務(wù)各個函數(shù)的調(diào)用public void playButton()無按下播放鍵時候的操作函數(shù)public void playMusic()無播放音樂的功能,包括對一些系統(tǒng)控件和全局變量的更新以及完成音樂的準(zhǔn)備,播放音樂public void pauseMusic()無音樂播放的暫停狀態(tài)轉(zhuǎn)為播放狀態(tài)public void tpauseMusic()無音樂播放轉(zhuǎn)為暫停狀態(tài)public void nextMusic()無下一曲 最后一曲時轉(zhuǎn)到第一區(qū)p

22、ublic void frontMusic()無上一曲 第一曲時轉(zhuǎn)到最后一曲public void modleMusic()無播放模式選擇public void changeActivity()無在界面切換之時完成對當(dāng)前界面的布局控件進(jìn)行初始化(狀態(tài)的保留)public String DealtimeFormat(int time)String工具函數(shù),完成對時間的格式處理,始終保證是兩位數(shù)本類的工具類設(shè)計l 類名:UpdateSeekBar1功能:異步處理類,開啟一個新線程,在該線程中完成對歌曲播放時候其他需要同步更新的組件進(jìn)行更新。例如:隨著歌曲播放,進(jìn)度條組件隨著歌曲進(jìn)度而實(shí)時更新。具體

23、函數(shù)功能:函數(shù)名返回值功能protected String doInBackground(Integer. params)null調(diào)用該類時候在后臺進(jìn)行操作的函數(shù)。完成刷新的定時操作(params代表時間),以及向下一函數(shù)(publishProgress)傳遞當(dāng)前歌曲進(jìn)度protected void onProgressUpdate(Integer. values)無根據(jù)參數(shù)(values-進(jìn)度)對各個組件的更新操作,包括,時間標(biāo)簽,進(jìn)度條進(jìn)度歌詞的刷新l 類名:MyReceiver3功能:廣播接收器,完成對通話狀態(tài)的監(jiān)聽,如果當(dāng)前是撥出電話或者接聽電話,則暫停歌曲(如果正在播放),掛斷狀態(tài)重

24、新播放歌曲(如果是因?yàn)樵擃悓Ω枨M(jìn)行的暫停)。變量:參數(shù)類型解釋flagboolean標(biāo)記是否是要進(jìn)行暫停歌曲false表示需要isflagboolean標(biāo)記是否原來是播放狀態(tài),true表示是函數(shù)功能函數(shù)名返回值功能public void onReceive(Context context, Intent intent)無通過接受廣播,判定是否是通話廣播,然后對其狀態(tài)進(jìn)行監(jiān)聽,完成函數(shù)調(diào)用4.2.6界面類l 類名:MainActivity功能:從全局中獲取出所有歌曲信息,將整個界面進(jìn)行填充,并且調(diào)取簡單控制組件(play_menu_layout),實(shí)現(xiàn)點(diǎn)擊歌單上的歌曲,歌曲播放,通過簡單控制組

25、件完成對后臺服務(wù)的簡單控制。變量:參數(shù)類型解釋appappclass 獲取全局變量all_music_listListView全部音樂的信息列表布局控件littleplaycom.example.hihei.play_menu_Layout自定義的簡單控制組件實(shí)例化allmusicsimpleadapterSimpleAdapter對列表的適配器listListmap列表中所有信息的存儲函數(shù)功能:函數(shù)名返回值功能protected void onCreate(Bundle savedInstanceState)無第一次進(jìn)入該界面時候的函數(shù),完成一些初始化的操作protected void on

26、Start()無每次進(jìn)入該界面都會啟動該函數(shù),完成對該界面一些布局或者控件狀態(tài)的更新操作private void startbar()無進(jìn)入新界面時,讓歌曲服務(wù)更新當(dāng)前進(jìn)度條的最大值以及完成對不同界面的進(jìn)度條的狀態(tài)進(jìn)行更新。private void init()無對littleplay的實(shí)例化以及控制功能的實(shí)現(xiàn)public void changetose()無跳轉(zhuǎn)到歌詞界面private void allsetlist()無對整個listview完成信息的填充,以及點(diǎn)擊監(jiān)聽的實(shí)現(xiàn)public String DealtimeFormat(int time)String時間格式化函數(shù),完成時間標(biāo)簽

27、的占據(jù)兩位的設(shè)計。列入3分表示為03private void exitDialog()無退出時的對話框設(shè)計,當(dāng)退出后,直接停止音樂服務(wù)以及銷毀該Activitypublic boolean onKeyDown(int keyCode, KeyEvent event)無對返回鍵的覆寫監(jiān)聽類:類名:OnItemClickListenerImpl功能:完成點(diǎn)擊任意選項(xiàng),便播放該歌曲函數(shù)設(shè)計: 函數(shù)名返回值功能public void onItemClick(AdapterView parent, View view, int position,long id)無點(diǎn)擊選項(xiàng)后,設(shè)置當(dāng)前播放歌曲名字,以及通

28、過音樂服務(wù),完成播放本歌曲的功能l 類名:play_Activity功能:完成對歌詞界面的布局初始化,以及每次進(jìn)入該界面時更新當(dāng)前各個組件的狀態(tài),同時在該界面,用戶可以查看歌詞,以及對歌曲完成上一曲,下一曲,播放/暫停,進(jìn)度選擇,以及播放模式的選擇的操作,并且用戶可以查看當(dāng)前播放時間以及總時長。變量:參數(shù)類型解釋songnameString正在播放的歌曲名稱play_nameTextView顯示歌曲名稱的組件seekbarSeekBar進(jìn)度條playoverButton播放模式的按鈕lyricLyricView歌詞組件playfrontButton上一曲按鈕playplayButton播放/暫

29、停按鈕playnextButton下一曲按鈕menuButton返回歌單按鈕nowtimeTextView當(dāng)前歌曲播放時間sumtimeTextView歌曲總時間appappclass全局變量獲取函數(shù)功能:函數(shù)名返回值功能protected void onCreate(Bundle savedInstanceState)無第一次創(chuàng)建該界面時完成對整個界面的初始化protected void onStart()無每次進(jìn)入該界面時對該界面的一些控件,比如進(jìn)度條狀態(tài),播放模式以及當(dāng)前歌曲時間,總時長,歌曲名稱以及歌曲狀態(tài)的更新。String DealtimeFormat(int time)String時間格式化函數(shù),完成時間標(biāo)簽的占據(jù)兩位的設(shè)計。列入3分表示為03private void startbar()無進(jìn)入新界面時,讓歌曲服務(wù)更新當(dāng)前進(jìn)度條的最大值以及完成對不同界面的進(jìn)度條的狀態(tài)進(jìn)行更新。public void init()無更新當(dāng)前的Activity標(biāo)號以及啟動Servicepublic void getIntentMessage()無得到上個界面?zhèn)鱽淼母枨Q,并且設(shè)置在對應(yīng)組件上public void SerchLrc(int position)無在歌曲所在目錄完成對其對

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論