基于安卓平台的程序设计:多媒体

上传人:努力****83 文档编号:186997930 上传时间:2023-02-10 格式:PPT 页数:63 大小:575.50KB
收藏 版权申诉 举报 下载
基于安卓平台的程序设计:多媒体_第1页
第1页 / 共63页
基于安卓平台的程序设计:多媒体_第2页
第2页 / 共63页
基于安卓平台的程序设计:多媒体_第3页
第3页 / 共63页
资源描述:

《基于安卓平台的程序设计:多媒体》由会员分享,可在线阅读,更多相关《基于安卓平台的程序设计:多媒体(63页珍藏版)》请在装配图网上搜索。

1、1.使用MediaPlayer播放音频MediaPlayer类有以下三个成员函数:start()开始播放stop()停止播放pause()暂停播放用以控制播放过程装载播放文件则用:static MediaPlayer create(Context context,Uri uri)Static MediaPlayer create(Context context,int resid)1.使用MediaPlayer播放音频用同一个MediaPlayer对象播放不同文件,使用其void setDataSource(String path)void setDataSource(FileDescript

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

3、MediaPlayer 还有一些事件可以监听setOnCompletionListener 监听播放完成setOnErrorListener 监听播放错误setOnPreparedListener 监听 prepare被调用这件事setOnSeekCompleteListener 监听seek()被调用seek用来定位播放位置1.使用MediaPlayer播放音频MediaPlayer 常用方法:getCurrentPosition:得到当前播放位置getDuration:获得文件时间长度getVideoHeight:获得视频高度getVideoWidthisPlaying:是否正在播放see

4、kTo:定位到某处setVolume:设置音量1.使用MediaPlayer播放音频如果要随时检测当前播放位置,可以用一个Timer 和一个Handler,每隔一段时间就调用MediaPlayer的getCurrentPosition编写MP3+LRC 同步播放程序时可这么做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 mPlayer=MediaPlayer.create(

5、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.start();1.使用MediaPlayer播放音频3)播放外存上

6、的声音:MediaPlayer mPlayer=new MediaPlayer();mPlayer.setDataSource(“/mnt/sdcard/mysong.mp3”);mPlayer.prepare();mPlayer.start();4)播放网络音频:Uir uri=Uri.parse(http:/www.crazyit.org/abc.mp3);MediaPlayer.mPlayer=new MediaPlayer();mPlayer.setDataSource(this,uri);mPlayer.prepare();mPlayer.start();2.基于Service的音乐

7、播放器(P419,MusicBox)播放 assets文件夹下三个文件:wish.mp3,promise.mp3,beautiful.mp32.基于Service的音乐播放器(P419,MusicBox)MusicBox.javapublic class MusicBox extends Activityimplements OnClickListener/获取界面中显示歌曲标题、作者文本框TextView title,author;/播放/暂停、停止按钮ImageButton play,stop;ActivityReceiver activityReceiver;public static

8、final String CTL_ACTION=org.crazyit.action.CTL_ACTION;public static final String UPDATE_ACTION=org.crazyit.action.UPDATE_ACTION;/定义音乐的播放状态,0 x11代表没有播放;0 x12代表正在播放;0 x13代表暂停int status=0 x11;public class MusicBox extends Activityimplements OnClickListener/获取界面中显示歌曲标题、作者文本框TextView title,author;/播放/暂停、

9、停止按钮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;/定义音乐的播放状态,0 x11代表没有播放;0 x12代表正在播放;0 x13代表暂停int status=0 x11;String titleStrs=new String心愿,约定,美丽新世

10、界;String authorStrs=new String未知艺术家,周蕙,伍佰;Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);/获取程序界面界面中的两个按钮play=(ImageButton)this.findViewById(R.id.play);stop=(ImageButton)this.findViewById(R.id.stop);title=(TextView)findViewById(

11、R.id.title);author=(TextView)findViewById(R.id.author);/为两个按钮的单击事件添加监听器play.setOnClickListener(this);stop.setOnClickListener(this);activityReceiver=new ActivityReceiver();/创建IntentFilterIntentFilter filter=new IntentFilter();/指定BroadcastReceiver监听的Actionfilter.addAction(UPDATE_ACTION);/注册BroadcastRe

12、ceiverregisterReceiver(activityReceiver,filter);Intent intent=new Intent(this,MusicService.class);/启动后台ServicestartService(intent);/自定义的BroadcastReceiver,负责监听从Service传回来的广播public class ActivityReceiver extends BroadcastReceiverOverridepublic void onReceive(Context context,Intent intent)/获取Intent中的up

13、date消息,update代表播放状态int update=intent.getIntExtra(update,-1);/获取Intent中的current消息,current代表当前正在播放的歌曲int current=intent.getIntExtra(current,-1);if(current=0)title.setText(titleStrscurrent);author.setText(authorStrscurrent);switch(update)case 0 x11:play.setImageResource(R.drawable.play);status=0 x11;br

14、eak;/控制系统进入播放状态case 0 x12:/播放状态下设置使用暂停图标play.setImageResource(R.drawable.pause);/设置当前状态status=0 x12;break;/控制系统进入暂停状态case 0 x13:/暂停状态下设置使用播放图标play.setImageResource(R.drawable.play);/设置当前状态status=0 x13;break;Overridepublic void onClick(View source)/创建IntentIntent intent=new Intent(org.crazyit.action.

15、CTL_ACTION);switch(source.getId()/按下播放/暂停按钮case R.id.play:intent.putExtra(control,1);break;/按下停止按钮case R.id.stop:intent.putExtra(control,2);break;/发送广播,将被Service组件中的BroadcastReceiver接收到sendBroadcast(intent);MusicService.javapublic class MusicService extends ServiceMyReceiver serviceReceiver;AssetMan

16、ager am;String musics=new Stringwish.mp3,promise.mp3,beautiful.mp3;MediaPlayer mPlayer;/当前的状态,0 x11 代表没有播放;0 x12代表 正在播放;0 x13代表暂停int status=0 x11;/记录当前正在播放的音乐int current=0;Overridepublic IBinder onBind(Intent intent)return null;Overridepublic void onCreate()am=getAssets();/创建BroadcastReceiverservice

17、Receiver=new MyReceiver();/创建IntentFilterIntentFilter filter=new IntentFilter();filter.addAction(MusicBox.CTL_ACTION);registerReceiver(serviceReceiver,filter);/创建MediaPlayermPlayer=new MediaPlayer();/为MediaPlayer播放完成事件绑定监听器mPlayer.setOnCompletionListener(new OnCompletionListener()Overridepublic void

18、 onCompletion(MediaPlayer mp)current+;if(current=3)current=0;/*发送广播通知Activity更改文本框*/Intent sendIntent=new Intent(MusicBox.UPDATE_ACTION);sendIntent.putExtra(current,current);/发送广播,将被Activity组件中的BroadcastReceiver接收到sendBroadcast(sendIntent);/准备、并播放音乐prepareAndPlay(musicscurrent););super.onCreate();pu

19、blic class MyReceiver extends BroadcastReceiverOverridepublic void onReceive(final Context context,Intent intent)int control=intent.getIntExtra(control,-1);switch(control)/播放或暂停case 1:/原来处于没有播放状态if(status=0 x11)/准备、并播放音乐prepareAndPlay(musicscurrent);status=0 x12;/原来处于播放状态else if(status=0 x12)/暂停mPla

20、yer.pause();/改变为暂停状态status=0 x13;/原来处于暂停状态else if(status=0 x13)/播放mPlayer.start();/改变状态status=0 x12;break;/停止声音case 2:/如果原来正在播放或暂停if(status=0 x12|status=0 x13)/停止播放mPlayer.stop();status=0 x11;/*发送广播通知Activity更改图标、文本框*/Intent sendIntent=new Intent(MusicBox.UPDATE_ACTION);sendIntent.putExtra(update,st

21、atus);sendIntent.putExtra(current,current);/发送广播,将被Activity组件中的BroadcastReceiver接收到sendBroadcast(sendIntent);private void prepareAndPlay(String music)try /打开指定音乐文件AssetFileDescriptor afd=am.openFd(music);mPlayer.reset();/使用MediaPlayer加载指定的声音文件。mPlayer.setDataSource(afd.getFileDescriptor(),afd.getSta

22、rtOffset(),afd.getLength();/准备声音mPlayer.prepare();/播放mPlayer.start();catch(IOException e)e.printStackTrace();3.使用SoundPool播放音效(P432,SoundPool)MediaPlayer占用资源多。SoundPool适用于播放多个短促的音效。1)创建SoundPool对象:SoundPool(int maxStreams,int streamType,in srcQuality)2)用load 方法加载声音int load(Context context,int resid,

23、int priority)int load(FileDescriptor fd,long offset Context context,int resid,int priority)int load(AssetFileDescriptor afd,int priority)int load(String path,int priority)priority 参数为1.load加载声音后会返回声音的id,以后可以通过id来指定要播放的声音。3.使用SoundPool播放音效(P432,SoundPool)3)play播放声音int play(int soundID,float leftVolum

24、e,float rightVolume,int priority,int loop,float rate)rate指定播放速度public class SoundPoolTest extends Activityimplements OnClickListenerButton bomb,shot,arrow;/定义一个SoundPoolSoundPool soundPool;HashMap soundMap=new HashMap();Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInsta

25、nceState);setContentView(R.layout.main);bomb=(Button)findViewById(R.id.bomb);shot=(Button)findViewById(R.id.shot);arrow=(Button)findViewById(R.id.arrow);/设置最多可容纳10个音频流,音频的品质为5 soundPool=new SoundPool(10,AudioManager.STREAM_SYSTEM,5);/load方法加载指定音频文件,并返回所加载的音频ID。此处使用HashMap来管理这些音频流soundMap.put(1,sound

26、Pool.load(this,R.raw.bomb,1);soundMap.put(2,soundPool.load(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监听器接口的方法Overridepublic void onClick(View source)/判断哪个按钮被单击switc

27、h(source.getId()case R.id.bomb:soundPool.play(soundMap.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 pat

28、h)setVidwoURI(Uri uri)加载视频3)用 start(),stop(),pause()控制视频播放videoView同样有 getDuration,getCurrentPosition,seekTo,以及setOnCompletionListener等方法public class VedioViewTest extends ActivityVideoView videoView;MediaController mController;Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(sa

29、vedInstanceState);getWindow().setFormat(PixelFormat.TRANSLUCENT);setContentView(R.layout.main);/获取界面上VideoView组件videoView=(VideoView)findViewById(R.id.video);/创建MediaController对象mController=new MediaController(this);File video=new File(/mnt/sdcard/movie.mp4);if(video.exists()videoView.setVideoPath(v

30、ideo.getAbsolutePath();/设置videoView与mController建立关联videoView.setMediaController(mController);/设置mController与videoView建立关联mController.setMediaPlayer(videoView);/让VideoView获取焦点videoView.requestFocus();5.使用MediaRecorder录制音频(P439,RecordSound)1)创建MediaRecorder对象2)调用MediaRecorder 对象的setAudioSource方法设置声音来源

31、,MediaRecorder.AudioSource.MIC 麦克风MediaRecorder.AudioSource.VOICE_CALL电话3)调用 MediaRecorder 对象的setOutputFormat设置录音的音频文件格式4)调用 setAudioEncoder(),setAudioEncodingBitRate(int bitRate),setAudioSamplingRate(int samplingRate)设置编码格式,编码位率,采样率等5)用setOutputFile(String path)设置录音文件的保存位置6)stop停止录制,release释放资源publ

32、ic class RecordSound extends Activityimplements OnClickListener /程序中的两个按钮ImageButton record,stop;/系统的音频文件File soundFile;MediaRecorder mRecorder;Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);/获取程序界面中的两个按钮record=(ImageButton)fin

33、dViewById(R.id.record);stop=(ImageButton)findViewById(R.id.stop);/为两个按钮的单击事件绑定监听器record.setOnClickListener(this);stop.setOnClickListener(this);Overridepublic void onDestroy()if(soundFile!=null&soundFile.exists()/停止录音mRecorder.stop();/释放资源mRecorder.release();mRecorder=null;super.onDestroy();Overridep

34、ublic 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/创建保存录音的音频文件soundFile=new File(Environment.getExternalStorageDirecto

35、ry().getCanonicalFile()+/sound.amr);mRecorder=new MediaRecorder();/设置录音的声音来源mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);/设置录制的声音的输出格式(必须在设置声音编码格式之前设置)mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);/设置声音编码的格式mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);mRe

36、corder.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;break;录音要有权限:6.通过Camera进行拍照(P442,CaptureIma

37、ge)1)用Camera的Open方法打开相机2)getParameters获取拍照参数,其返回Camera.Parameters对象3)用Camera.Parameters的方法设置拍照参数4)用setParameters方法,传入Camera.Parameters对象设置拍照参数5)startPreview()方法预览取景,此前要也难怪setPreviewDisplay(SurfaceHolder)方法设置显示取景图片的SurfaceView6)用 takePicture拍照7)用stopPreview结束取景预览,release释放资源public class CaptureImage

38、extends ActivitySurfaceView sView;SurfaceHolder surfaceHolder;int screenWidth,screenHeight;/定义系统所用的照相机Camera camera;/是否在浏览中boolean isPreview=false;Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);/设置全屏requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().

39、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=display.getWidth();screenHeight=display.g

40、etHeight();/获取界面中SurfaceView组件sView=(SurfaceView)findViewById(R.id.sView);/获得SurfaceView的SurfaceHoldersurfaceHolder=sView.getHolder();/为surfaceHolder添加一个回调监听器/为surfaceHolder添加一个回调监听器surfaceHolder.addCallback(new Callback()Overridepublic void surfaceChanged(SurfaceHolder holder,int format,int width,i

41、nt height)Overridepublic void surfaceCreated(SurfaceHolder holder)/打开摄像头initCamera();Overridepublic void surfaceDestroyed(SurfaceHolder holder)/如果camera不为null,释放摄像头if(camera!=null)if(isPreview)camera.stopPreview();camera.release();camera=null;);/设置该SurfaceView自己不维护缓冲 surfaceHolder.setType(SurfaceHol

42、der.SURFACE_TYPE_PUSH_BUFFERS);private void initCamera()if(!isPreview)camera=Camera.open();if(camera!=null&!isPreview)tryCamera.Parameters parameters=camera.getParameters();/设置预览照片的大小parameters.setPreviewSize(screenWidth,screenHeight);/每秒显示4帧parameters.setPreviewFrameRate(4);/设置图片格式parameters.setPic

43、tureFormat(PixelFormat.JPEG);/设置JPG照片的质量parameters.set(jpeg-quality,85);/设置照片的大小parameters.setPictureSize(screenWidth,screenHeight);camera.setParameters(parameters);/通过SurfaceView显示取景画面camera.setPreviewDisplay(surfaceHolder);/开始预览camera.startPreview();/自动对焦camera.autoFocus(null);catch(Exception e)e.

44、printStackTrace();isPreview=true;Overridepublic boolean onKeyDown(int keyCode,KeyEvent event)switch(keyCode)/当用户单击照相键、中央键时执行拍照case KeyEvent.KEYCODE_DPAD_CENTER:case KeyEvent.KEYCODE_CAMERA:if(camera!=null&event.getRepeatCount()=0)/拍照camera.takePicture(null,null,myjpegCallback);return true;break;retu

45、rn super.onKeyDown(keyCode,event);PictureCallback myjpegCallback=new PictureCallback()Overridepublic void onPictureTaken(byte data,Camera camera)/根据拍照所得的数据创建位图final Bitmap bm=BitmapFactory.decodeByteArray(data,0,data.length);/加载/layout/save.xml文件对应的布局资源View saveDialog=getLayoutInflater().inflate(R.l

46、ayout.save,null);final EditText photoName=(EditText)saveDialog.findViewById(R.id.phone_name);/获取saveDialog对话框上的ImageView组件ImageView show=(ImageView)saveDialog.findViewById(R.id.show);/显示刚刚拍得的照片show.setImageBitmap(bm);/使用对话框显示saveDialog组件new AlertDialog.Builder(CaptureImage.this).setView(saveDialog).

47、setPositiveButton(保存,new OnClickListener()Overridepublic void onClick(DialogInterface dialog,int which)/创建一个位于SD卡上的文件File file=new File(Environment.getExternalStorageDirectory()photoName.getText().toString()+.jpg);FileOutputStream outStream=null;try/打开指定文件对应的输出流outStream=new FileOutputStream(file);/

48、把位图输出到指定文件中press(CompressFormat.JPEG,100,outStream);outStream.close();catch(IOException e)e.printStackTrace();).setNegativeButton(取消,null).show();/重新浏览camera.stopPreview();camera.startPreview();isPreview=true;nn n n6.通过MediaRecorder录制视频(P446,RecordVideo)public class RecordVideo extends Activityimple

49、ments OnClickListener/程序中的两个按钮ImageButton record,stop;/系统的视频文件File videoFile;MediaRecorder mRecorder;/显示视频预览的SurfaceView SurfaceView sView;/记录是否正在进行录制 private boolean isRecording=false;Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.m

50、ain);/获取程序界面中的两个按钮record=(ImageButton)findViewById(R.id.record);stop=(ImageButton)findViewById(R.id.stop);/让stop按钮不可用。stop.setEnabled(false);/为两个按钮的单击事件绑定监听器record.setOnClickListener(this);stop.setOnClickListener(this);/获取程序界面中的SurfaceViewsView=(SurfaceView)this.findViewById(R.id.sView);/下面设置Surface

51、不需要自己维护缓冲区sView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);/设置分辨率 sView.getHolder().setFixedSize(320,280);/设置该组件让屏幕不会自动关闭 sView.getHolder().setKeepScreenOn(true);Overridepublic void onClick(View source)switch(source.getId()/单击录制按钮case R.id.record:if(!Environment.getExternalStorageS

52、tate().equals(android.os.Environment.MEDIA_MOUNTED)Toast.makeText(RecordVideo.this,SD卡不存在,请插入SD卡!,5000).show();return;try/创建保存录制视频的视频文件videoFile=new File(Environment.getExternalStorageDirectory().getCanonicalFile()+/myvideo.mp4);/创建MediaPlayer对象mRecorder=new MediaRecorder();mRecorder.reset();/设置从麦克风

53、采集声音mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);/设置从摄像头采集图像mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);/设置视频文件的输出格式(必须在设置声音编码格式、图像编码格式之前设置)mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);/设置声音编码的格式mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);/

54、设置图像编码的格式mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);mRecorder.setVideoSize(320,280);/每秒 4帧mRecorder.setVideoFrameRate(4);mRecorder.setOutputFile(videoFile.getAbsolutePath();/指定使用SurfaceView来预览视频/指定使用SurfaceView来预览视频mRecorder.setPreviewDisplay(sView.getHolder().getSurface();mReco

55、rder.prepare();/开始录制mRecorder.start();System.out.println(-recording-);/让record按钮不可用。record.setEnabled(false);/让stop按钮可用。stop.setEnabled(true);isRecording=true;catch(Exception e)e.printStackTrace();break;/单击停止按钮case R.id.stop:/如果正在进行录制if(isRecording)/停止录制mRecorder.stop();/释放资源mRecorder.release();mRecorder=null;/让record按钮可用。record.setEnabled(true);/让stop按钮不可用。stop.setEnabled(false);break;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!