基于安卓平臺的程序設(shè)計(jì):多媒體_第1頁
基于安卓平臺的程序設(shè)計(jì):多媒體_第2頁
基于安卓平臺的程序設(shè)計(jì):多媒體_第3頁
基于安卓平臺的程序設(shè)計(jì):多媒體_第4頁
基于安卓平臺的程序設(shè)計(jì):多媒體_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1. 使用MediaPlayer播放音頻MediaPlayer類有以下三個(gè)成員函數(shù):start() 開始播放stop() 停止播放pause() 暫停播放用以控制播放過程裝載播放文件則用:static MediaPlayer create(Context context,Uri uri)Static MediaPlayer create(Context context,int resid) 1. 使用MediaPlayer播放音頻用同一個(gè)MediaPlayer對象播放不同文件,使用其void setDataSource(String path)void setDataSource(FileDe

2、scriptor fd,long offset,long length)void setDataSource(FileDescriptor fd)void setDataSource(Context contex,Uri uri)然后再調(diào)用 prepare1. 使用MediaPlayer播放音頻try mPlayer.reset();mPlayer.setDataSource(“/mnt/sdcard/next.mp3”);mPlayer.prepare();mPlayer.start();catch( IOException e) e.printStackTrace();1. 使用Media

3、Player播放音頻MediaPlayer 還有一些事件可以監(jiān)聽setOnCompletionListener 監(jiān)聽播放完成setOnErrorListener 監(jiān)聽播放錯(cuò)誤setOnPreparedListener 監(jiān)聽 prepare被調(diào)用這件事setOnSeekCompleteListener 監(jiān)聽seek()被調(diào)用seek用來定位播放位置1. 使用MediaPlayer播放音頻MediaPlayer 常用方法:getCurrentPosition : 得到當(dāng)前播放位置getDuration: 獲得文件時(shí)間長度getVideoHeight: 獲得視頻高度getVideoWidthisPl

4、aying :是否正在播放seekTo: 定位到某處setVolume: 設(shè)置音量1. 使用MediaPlayer播放音頻如果要隨時(shí)檢測當(dāng)前播放位置,可以用一個(gè)Timer 和一個(gè)Handler, 每隔一段時(shí)間就調(diào)用MediaPlayer的getCurrentPosition編寫MP3+LRC 同步播放程序時(shí)可這么做00:10.26book n.書,書本00:14.79book n.書,書本00:16.37n.書,書本00:20.35* ruler 尺子00:25.77ruler 尺子00:27.56尺子1. 使用MediaPlayer播放音頻1) 播放資源文件:MediaPlayer mPla

5、yer = MediaPlayer.create(this,R.raw.song);mPlayer.start();2) 播放asset文件夾下文件:AssetManager am = getAssets();AssetFileDescriptor afd = am.openFd(music);MediaPlayer.mPlayer = new MediaPlayer();mPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength();mPlayer.prepare();mPlayer.sta

6、rt();1. 使用MediaPlayer播放音頻3) 播放外存上的聲音:MediaPlayer mPlayer = new MediaPlayer();mPlayer.setDataSource(“/mnt/sdcard/mysong.mp3”);mPlayer.prepare();mPlayer.start();4) 播放網(wǎng)絡(luò)音頻:Uir uri = Uri.parse(/abc.mp3);MediaPlayer.mPlayer = new MediaPlayer();mPlayer.setDataSource(this,uri);mPlayer.prepare();mPlayer.sta

7、rt();2. 基于Service的音樂播放器(P419,MusicBox)播放 assets文件夾下三個(gè)文件:wish.mp3,promise.mp3,beautiful.mp32. 基于Service的音樂播放器(P419,MusicBox)MusicBox.javapublic class MusicBox extends Activityimplements OnClickListener/ 獲取界面中顯示歌曲標(biāo)題、作者文本框TextView title , author;/播放/暫停、停止按鈕ImageButton play , stop;ActivityReceiver activ

8、ityReceiver;public static final String CTL_ACTION = org.crazyit.action.CTL_ACTION;public static final String UPDATE_ACTION = org.crazyit.action.UPDATE_ACTION;/ 定義音樂的播放狀態(tài),0 x11代表沒有播放;0 x12代表正在播放;0 x13代表暫停int status = 0 x11;public class MusicBox extends Activityimplements OnClickListener/ 獲取界面中顯示歌曲標(biāo)題、

9、作者文本框TextView title , author;/播放/暫停、停止按鈕ImageButton play , stop;ActivityReceiver activityReceiver;public static final String CTL_ACTION = org.crazyit.action.CTL_ACTION;public static final String UPDATE_ACTION = org.crazyit.action.UPDATE_ACTION;/ 定義音樂的播放狀態(tài),0 x11代表沒有播放;0 x12代表正在播放;0 x13代表暫停int status

10、= 0 x11;String titleStrs = new String心愿,約定,美麗新世界;String authorStrs = new String未知藝術(shù)家,周蕙,伍佰; Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);/ 獲取程序界面界面中的兩個(gè)按鈕play = (ImageButton) this.findViewById(R.id.play);stop = (ImageButton) t

11、his.findViewById(R.id.stop);title = (TextView) findViewById(R.id.title);author = (TextView) findViewById(R.id.author);/ 為兩個(gè)按鈕的單擊事件添加監(jiān)聽器play.setOnClickListener(this);stop.setOnClickListener(this);activityReceiver = new ActivityReceiver();/ 創(chuàng)建IntentFilterIntentFilter filter = new IntentFilter();/ 指定Br

12、oadcastReceiver監(jiān)聽的Actionfilter.addAction(UPDATE_ACTION);/ 注冊BroadcastReceiverregisterReceiver(activityReceiver, filter);Intent intent = new Intent(this, MusicService.class);/ 啟動(dòng)后臺ServicestartService(intent);/ 自定義的BroadcastReceiver,負(fù)責(zé)監(jiān)聽從Service傳回來的廣播public class ActivityReceiver extends BroadcastRece

13、iverOverridepublic void onReceive(Context context, Intent intent)/ 獲取Intent中的update消息,update代表播放狀態(tài)int update = intent.getIntExtra(update, -1);/ 獲取Intent中的current消息,current代表當(dāng)前正在播放的歌曲int current = intent.getIntExtra(current, -1);if(current = 0)title.setText(titleStrscurrent);author.setText(authorStrs

14、current);switch (update)case 0 x11:play.setImageResource(R.drawable.play);status = 0 x11;break;/ 控制系統(tǒng)進(jìn)入播放狀態(tài)case 0 x12:/ 播放狀態(tài)下設(shè)置使用暫停圖標(biāo)play.setImageResource(R.drawable.pause);/ 設(shè)置當(dāng)前狀態(tài)status = 0 x12;break;/ 控制系統(tǒng)進(jìn)入暫停狀態(tài)case 0 x13:/ 暫停狀態(tài)下設(shè)置使用播放圖標(biāo)play.setImageResource(R.drawable.play); / 設(shè)置當(dāng)前狀態(tài)status = 0 x

15、13;break;Overridepublic void onClick(View source)/ 創(chuàng)建IntentIntent intent = new Intent(org.crazyit.action.CTL_ACTION);switch (source.getId()/ 按下播放/暫停按鈕case R.id.play:intent.putExtra(control, 1);break;/ 按下停止按鈕case R.id.stop:intent.putExtra(control, 2);break;/ 發(fā)送廣播 ,將被Service組件中的BroadcastReceiver接收到sen

16、dBroadcast(intent);MusicService.javapublic class MusicService extends ServiceMyReceiver serviceReceiver;AssetManager am;String musics = new Stringwish.mp3,promise.mp3,beautiful.mp3;MediaPlayer mPlayer;/當(dāng)前的狀態(tài),0 x11 代表沒有播放 ;0 x12代表 正在播放;0 x13代表暫停int status = 0 x11;/ 記錄當(dāng)前正在播放的音樂int current = 0;Override

17、public IBinder onBind(Intent intent)return null;Overridepublic void onCreate()am = getAssets();/ 創(chuàng)建BroadcastReceiverserviceReceiver = new MyReceiver();/ 創(chuàng)建IntentFilterIntentFilter filter = new IntentFilter();filter.addAction(MusicBox.CTL_ACTION);registerReceiver(serviceReceiver, filter);/ 創(chuàng)建MediaPla

18、yermPlayer = new MediaPlayer();/ 為MediaPlayer播放完成事件綁定監(jiān)聽器mPlayer.setOnCompletionListener(new OnCompletionListener()Overridepublic void onCompletion(MediaPlayer mp)current+;if (current = 3)current = 0;/* 發(fā)送廣播通知Activity更改文本框 */Intent sendIntent = new Intent(MusicBox.UPDATE_ACTION);sendIntent.putExtra(c

19、urrent, current);/ 發(fā)送廣播 ,將被Activity組件中的BroadcastReceiver接收到sendBroadcast(sendIntent);/ 準(zhǔn)備、并播放音樂prepareAndPlay(musicscurrent););super.onCreate();public class MyReceiver extends BroadcastReceiverOverridepublic void onReceive(final Context context, Intent intent)int control = intent.getIntExtra(control

20、, -1);switch (control)/ 播放或暫停case 1:/ 原來處于沒有播放狀態(tài)if (status = 0 x11)/ 準(zhǔn)備、并播放音樂prepareAndPlay(musicscurrent);status = 0 x12;/ 原來處于播放狀態(tài)else if (status = 0 x12)/ 暫停mPlayer.pause();/ 改變?yōu)闀和顟B(tài)status = 0 x13;/ 原來處于暫停狀態(tài)else if (status = 0 x13)/ 播放mPlayer.start();/ 改變狀態(tài)status = 0 x12;break;/ 停止聲音case 2:/ 如果原來

21、正在播放或暫停if (status = 0 x12 | status = 0 x13)/ 停止播放mPlayer.stop();status = 0 x11;/* 發(fā)送廣播通知Activity更改圖標(biāo)、文本框 */Intent sendIntent = new Intent(MusicBox.UPDATE_ACTION);sendIntent.putExtra(update, status);sendIntent.putExtra(current, current);/ 發(fā)送廣播 ,將被Activity組件中的BroadcastReceiver接收到sendBroadcast(sendInte

22、nt);private void prepareAndPlay(String music) try / 打開指定音樂文件AssetFileDescriptor afd = am.openFd(music);mPlayer.reset();/使用MediaPlayer加載指定的聲音文件。mPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength();/ 準(zhǔn)備聲音mPlayer.prepare();/ 播放mPlayer.start();catch (IOException e)e.print

23、StackTrace();3. 使用SoundPool播放音效(P432,SoundPool)MediaPlayer占用資源多。SoundPool適用于播放多個(gè)短促的音效。1) 創(chuàng)建SoundPool對象:SoundPool(int maxStreams,int streamType,in srcQuality)2) 用load 方法加載聲音int load (Context context,int resid,int priority)int load (FileDescriptor fd,long offset Context context,int resid,int priority)

24、int load(AssetFileDescriptor afd, int priority)int load(String path,int priority)priority 參數(shù)為1. load加載聲音后會(huì)返回聲音的id,以后可以通過id來指定要播放的聲音。3. 使用SoundPool播放音效(P432,SoundPool)3)play播放聲音int play(int soundID,float leftVolume,float rightVolume,int priority,int loop,float rate)rate指定播放速度public class SoundPoolTes

25、t extends Activityimplements OnClickListenerButton bomb , shot , arrow;/ 定義一個(gè)SoundPoolSoundPool soundPool;HashMap soundMap = new HashMap();Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);bomb = (Button) findViewById(R.id.bomb);s

26、hot = (Button) findViewById(R.id.shot);arrow = (Button) findViewById(R.id.arrow);/ 設(shè)置最多可容納10個(gè)音頻流,音頻的品質(zhì)為5 soundPool = new SoundPool(10, AudioManager.STREAM_SYSTEM, 5);/ load方法加載指定音頻文件,并返回所加載的音頻ID。此處使用HashMap來管理這些音頻流soundMap.put(1 , soundPool.load(this, R.raw.bomb , 1);soundMap.put(2 , soundPool.load(

27、this, R.raw.shot , 1);soundMap.put(3 , soundPool.load(this, R.raw.arrow , 1);bomb.setOnClickListener(this);shot.setOnClickListener(this);arrow.setOnClickListener(this);/ 重寫OnClickListener監(jiān)聽器接口的方法Overridepublic void onClick(View source)/ 判斷哪個(gè)按鈕被單擊switch(source.getId()case R.id.bomb:soundPool.play(sou

28、ndMap.get(1), 1, 1, 0, 0, 1);break;case R.id.shot:soundPool.play(soundMap.get(2), 1, 1, 0, 0, 1);break;case R.id.arrow:soundPool.play(soundMap.get(3), 1, 1, 0, 0, 1);break;4. 使用VideoView播放視頻(P435,VedioViewTest)1) 界面布局中加入 VideoView組件2) 用VideoView的setVideoPath(String path)setVidwoURI(Uri uri)加載視頻3)用 s

29、tart(),stop(),pause()控制視頻播放videoView同樣有 getDuration,getCurrentPosition,seekTo,以及setOnCompletionListener等方法public class VedioViewTest extends ActivityVideoView videoView;MediaController mController;Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);getWindow().s

30、etFormat(PixelFormat.TRANSLUCENT);setContentView(R.layout.main);/ 獲取界面上VideoView組件videoView = (VideoView) findViewById(R.id.video);/ 創(chuàng)建MediaController對象mController = new MediaController(this);File video = new File(/mnt/sdcard/movie.mp4);if(video.exists()videoView.setVideoPath(video.getAbsolutePath()

31、;/ 設(shè)置videoView與mController建立關(guān)聯(lián)videoView.setMediaController(mController);/ 設(shè)置mController與videoView建立關(guān)聯(lián)mController.setMediaPlayer(videoView);/ 讓VideoView獲取焦點(diǎn)videoView.requestFocus();5. 使用MediaRecorder錄制音頻(P439,RecordSound)1) 創(chuàng)建MediaRecorder對象2) 調(diào)用MediaRecorder 對象的setAudioSource方法設(shè)置聲音來源,MediaRecorder.A

32、udioSource.MIC 麥克風(fēng)MediaRecorder.AudioSource.VOICE_CALL電話3) 調(diào)用 MediaRecorder 對象的setOutputFormat設(shè)置錄音的音頻文件格式4) 調(diào)用 setAudioEncoder() ,setAudioEncodingBitRate(int bitRate),setAudioSamplingRate(int samplingRate)設(shè)置編碼格式,編碼位率,采樣率等5) 用setOutputFile(String path)設(shè)置錄音文件的保存位置6) stop停止錄制,release釋放資源public class Re

33、cordSound extends Activityimplements OnClickListener / 程序中的兩個(gè)按鈕ImageButton record , stop;/ 系統(tǒng)的音頻文件File soundFile ;MediaRecorder mRecorder; Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);/ 獲取程序界面中的兩個(gè)按鈕record = (ImageButton) find

34、ViewById(R.id.record);stop = (ImageButton) findViewById(R.id.stop);/ 為兩個(gè)按鈕的單擊事件綁定監(jiān)聽器record.setOnClickListener(this);stop.setOnClickListener(this);Overridepublic void onDestroy()if (soundFile != null & soundFile.exists()/ 停止錄音mRecorder.stop();/ 釋放資源mRecorder.release();mRecorder = null;super.onDestroy

35、();Overridepublic void onClick(View source)switch (source.getId()/ 單擊錄音按鈕case R.id.record:if (!Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)Toast.makeText(RecordSound.this, SD卡不存在,請插入SD卡!, 5000).show();return;try/ 創(chuàng)建保存錄音的音頻文件soundFile = new File(Environment.getEx

36、ternalStorageDirectory().getCanonicalFile() + /sound.amr);mRecorder = new MediaRecorder();/ 設(shè)置錄音的聲音來源mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);/ 設(shè)置錄制的聲音的輸出格式(必須在設(shè)置聲音編碼格式之前設(shè)置)mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);/ 設(shè)置聲音編碼的格式mRecorder.setAudioEncoder(MediaRecord

37、er.AudioEncoder.AMR_NB);mRecorder.setOutputFile(soundFile.getAbsolutePath();mRecorder.prepare();/ 開始錄音mRecorder.start();catch (Exception e) e.printStackTrace();break;/ 單擊停止按鈕case R.id.stop:if (soundFile != null & soundFile.exists()/ 停止錄音mRecorder.stop();/ 釋放資源mRecorder.release();mRecorder = null;bre

38、ak;錄音要有權(quán)限:6. 通過Camera進(jìn)行拍照(P442,CaptureImage)用Camera的Open方法打開相機(jī)getParameters獲取拍照參數(shù),其返回Camera.Parameters對象用Camera.Parameters的方法設(shè)置拍照參數(shù)用setParameters方法,傳入Camera.Parameters對象設(shè)置拍照參數(shù)startPreview()方法預(yù)覽取景,此前要也難怪setPreviewDisplay(SurfaceHolder )方法設(shè)置顯示取景圖片的SurfaceView用 takePicture拍照用stopPreview結(jié)束取景預(yù)覽,release釋放

39、資源public class CaptureImage extends ActivitySurfaceView sView;SurfaceHolder surfaceHolder;int screenWidth, screenHeight;/ 定義系統(tǒng)所用的照相機(jī)Camera camera;/是否在瀏覽中boolean isPreview = false; Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);/ 設(shè)置全屏requestWindowFeature(Win

40、dow.FEATURE_NO_TITLE);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.main);WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);Display display = wm.getDefaultDisplay();/ 獲取屏幕的寬和高screenWidth =

41、 display.getWidth();screenHeight = display.getHeight();/ 獲取界面中SurfaceView組件sView = (SurfaceView) findViewById(R.id.sView);/ 獲得SurfaceView的SurfaceHoldersurfaceHolder = sView.getHolder();/ 為surfaceHolder添加一個(gè)回調(diào)監(jiān)聽器/ 為surfaceHolder添加一個(gè)回調(diào)監(jiān)聽器surfaceHolder.addCallback(new Callback() Overridepublic void surf

42、aceChanged(SurfaceHolder holder, int format, int width,int height) Overridepublic void surfaceCreated(SurfaceHolder holder)/ 打開攝像頭initCamera();Overridepublic void surfaceDestroyed(SurfaceHolder holder)/ 如果camera不為null ,釋放攝像頭if (camera != null)if (isPreview)camera.stopPreview();camera.release();camer

43、a = null;);/ 設(shè)置該SurfaceView自己不維護(hù)緩沖 surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);private void initCamera()if (!isPreview)camera = Camera.open();if (camera != null & !isPreview)tryCamera.Parameters parameters = camera.getParameters();/ 設(shè)置預(yù)覽照片的大小parameters.setPreviewSize(screenWidth,

44、screenHeight);/ 每秒顯示4幀parameters.setPreviewFrameRate(4);/ 設(shè)置圖片格式parameters.setPictureFormat(PixelFormat.JPEG);/ 設(shè)置JPG照片的質(zhì)量parameters.set(jpeg-quality, 85);/設(shè)置照片的大小parameters.setPictureSize(screenWidth, screenHeight);camera.setParameters(parameters);/通過SurfaceView顯示取景畫面camera.setPreviewDisplay(surfac

45、eHolder);/ 開始預(yù)覽camera.startPreview();/ 自動(dòng)對焦camera.autoFocus(null);catch (Exception e)e.printStackTrace();isPreview = true;Overridepublic boolean onKeyDown(int keyCode, KeyEvent event)switch (keyCode)/ 當(dāng)用戶單擊照相鍵、中央鍵時(shí)執(zhí)行拍照case KeyEvent.KEYCODE_DPAD_CENTER:case KeyEvent.KEYCODE_CAMERA:if (camera != null

46、& event.getRepeatCount() = 0)/ 拍照camera.takePicture(null, null , myjpegCallback);return true;break;return super.onKeyDown(keyCode, event);PictureCallback myjpegCallback = new PictureCallback()Overridepublic void onPictureTaken(byte data, Camera camera)/ 根據(jù)拍照所得的數(shù)據(jù)創(chuàng)建位圖final Bitmap bm = BitmapFactory.d

47、ecodeByteArray(data, 0, data.length);/ 加載/layout/save.xml文件對應(yīng)的布局資源View saveDialog = getLayoutInflater().inflate(R.layout.save, null);final EditText photoName = (EditText) saveDialog.findViewById(R.id.phone_name);/ 獲取saveDialog對話框上的ImageView組件ImageView show = (ImageView) saveDialog.findViewById(R.id.

48、show);/ 顯示剛剛拍得的照片show.setImageBitmap(bm);/使用對話框顯示saveDialog組件new AlertDialog.Builder(CaptureImage.this).setView(saveDialog).setPositiveButton(保存, new OnClickListener()Overridepublic void onClick(DialogInterface dialog,int which)/ 創(chuàng)建一個(gè)位于SD卡上的文件File file = new File(Environment.getExternalStorageDirect

49、ory()photoName.getText().toString() + .jpg);FileOutputStream outStream = null;try/ 打開指定文件對應(yīng)的輸出流outStream = new FileOutputStream(file);/ 把位圖輸出到指定文件中press(CompressFormat.JPEG, 100, outStream);outStream.close();catch (IOException e)e.printStackTrace();).setNegativeButton(取消, null).show();/重新瀏覽camera.st

50、opPreview();camera.startPreview();isPreview = true; 6. 通過MediaRecorder錄制視頻 (P446,RecordVideo)public class RecordVideo extends Activityimplements OnClickListener / 程序中的兩個(gè)按鈕ImageButton record , stop;/ 系統(tǒng)的視頻文件File videoFile ;MediaRecorder mRecorder;/ 顯示視頻預(yù)覽的SurfaceView SurfaceView sView; / 記錄是否正在進(jìn)行錄制 p

51、rivate boolean isRecording = false; Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);/ 獲取程序界面中的兩個(gè)按鈕record = (ImageButton) findViewById(R.id.record);stop = (ImageButton) findViewById(R.id.stop);/ 讓stop按鈕不可用。stop.setEnabled(false);/ 為兩個(gè)按鈕的單擊事件綁定監(jiān)聽器record.setOnClickListener(this);stop.setOnClickListener(this);/ 獲取程序界面中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論