Android应用程序开发之七——移动多媒体

上传人:小*** 文档编号:242960313 上传时间:2024-09-12 格式:PPT 页数:36 大小:812.50KB
返回 下载 相关 举报
Android应用程序开发之七——移动多媒体_第1页
第1页 / 共36页
Android应用程序开发之七——移动多媒体_第2页
第2页 / 共36页
Android应用程序开发之七——移动多媒体_第3页
第3页 / 共36页
点击查看更多>>
资源描述
,Android,应用开发课程,*,Click to edit Master title,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,Android,应用程序开发,移动多媒体,音频播放,1.,播放音频资源,:,android.media.MediaPlayer p = MediaPlayer.create(Context,R.raw.XXX);,p.prepare();,p.start() ;/,播放,2.,播放外部音频文件,MediaPlayer p = new MediaPlayer();,p.setDataSource(url) url,可以是,/sdcard/XXX,也可以是网络中的,URL,p.prepare(); p.start(),MediaPlayer,的生命周期,创建,-setDatasourse-prepare-start-pause-start-stop-release,调用,stop,进入停止状态,再播放要先调用,prepare,再调用,start,try ,MediaPlayer player= new MediaPlayer();,player.setDataSource(/sdcard/nx.mp3);,player.prepare();,player.start();,Thread.,sleep(15000);,player.stop();,Thread.,sleep(5000);,player.prepare();,player.start();,Thread.sleep(20000);,player.stop(); player.release();,catch (Exception e) e.printStackTrace();,音频采集 录音,创建,MediaRecorder,对象,rec (,来自,android.media,包,),开始录音,:,创建,File,对象,扩展名为,amr,rec.setOutputFile(f.getAbsoulutePath(),rec.setAudioSource(MediaRecorder.AudioSource.MIC)/,设置声源,rec.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT)/,输出格式,rec.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT)/,音频格式,rec.prepare() rec.start(),结束录音,: rec.stop() rec.release() rec=null,权限,: android.permission.RECORD_AUDIO,start.setOnClickListener(new View.OnClickListener() ,public void onClick(View v) ,if (Environment.,getExternalStorageState().equals(Environment.MEDIA_MOUNTED),try ,myFile = File.,createTempFile(huxz, .amr, Environment.getExternalStorageDirectory();,rec = new MediaRecorder();,rec.setAudioSource(MediaRecorder.AudioSource.,MIC);,rec.setOutputFormat(MediaRecorder.OutputFormat.,DEFAULT);,rec.setAudioEncoder(MediaRecorder.AudioEncoder.,DEFAULT);,rec.setOutputFile(myFile.getAbsolutePath();,rec.prepare();,rec.start();, catch (Exception e) ,);,stop.setOnClickListener(,new View.OnClickListener() ,public void onClick(View v) ,if (myFile!=null),rec.stop();,rec.release();,rec=,null;,);,视频采集,与音频采集类似,也使用,MediaRecorder,权限,:,android.permission.RECORD_AUDIO,android.permission.CAMERA,WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);/,获取窗口服务,Display display = wm.getDefaultDisplay();/,获取屏幕信息,recorder = new MediaRecorder();,recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); /,从照相机采集视频,recorder.setAudioSource(MediaRecorder.AudioSource.MIC);,recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);,recorder.setVideoSize(display.getWidth(), display.getHeight(); /,大小为屏幕的宽和高,recorder.setVideoFrameRate(3); /,每秒,3,帧,recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); /,设置视频编码方式,recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);,recorder.setOutputFile(/sdcard/huxz.3gp);,recorder.previewDisplay(holder.getSurface();/,设置预览组件,recorder.prepare();/,预期准备,recorder.start(); /,开始刻录,图像采集,android.hardware.Camera,类,open(),得到,Camera,对象,getParameters() setParameters(),获取,/,设置参数,setPreviewDisplay(),设置预览视图 参数为,SurfaceHolder,对象,startPreview() stopPreview(),开始,/,停止预览,takePicture(),拍照,takePicture(),参数,Camera.ShutterCallback,快门 空实现,Camera.PictureCallback,raw,图像 空实现,Camera.PictureCallback,pic,实现,onPictureTaken(byte data,Camera c),data,数组中储存了采集的图像数据,SurfaceView,一个视图,系统会用一个独立的线程来绘制,用于相机应用或录像机应用中的预览视图,后台由,SurfaceHolder,对象控制,调用,getHolder,得到,SurfaceHolder,可以添加事件监听,SurfaceHolder.Callback,定义当,Surface,创建,改变和销毁时的处理,holder.setType(SurfaceHolder.,SURFACE_TYPE_PUSH_BUFFERS);,/,依靠屏幕的渲染引擎推送内容,public class CameraActivity extends Activity implements SurfaceHolder.Callback, OnClickListener,SurfaceView mySurfaceView;/SurfaceView,的引用,SurfaceHolder mySurfaceHolder;/SurfaceHolder,的引用,Button button1;/,打开按钮,Button button2;/,关闭按钮,Button button3;/,拍照按钮,Camera myCamera;/Camera,的引用,boolean isView = false;/,是否在浏览中,相机应用 示例,public void onCreate(Bundle savedInstanceState) ,super.onCreate(savedInstanceState);,/,全屏,requestWindowFeature(Window.,FEATURE_NO_TITLE);,getWindow().setFlags(WindowManager.LayoutParams.,FLAG_FULLSCREEN ,WindowManager.LayoutParams.,FLAG_FULLSCREEN);,setContentView(R.layout.,main);,mySurfaceView = (SurfaceView) findViewById(R.id.,mySurfaceView);/,得到,SurfaceView,的引用,button1 = (Button) findViewById(R.id.,button1);/,得到按钮的引用,button2 = (Button) findViewById(R.id.,button2);/,得到按钮的引用,button3 = (Button) findViewById(R.id.,button3);/,得到按钮的引用,button1.setOnClickListener(,this);/,为按钮添加监听,button2.setOnClickListener(,this);/,为按钮添加监听,button3.setOnClickListener(,this);/,为按钮添加监听,mySurfaceHolder = mySurfaceView.getHolder();/,获得,SurfaceHolder,mySurfaceHolder.addCallback(,this);/,添加接口的实现,mySurfaceHolder.setType(SurfaceHolder.,SURFACE_TYPE_PUSH_BUFFERS);,public void onClick(View v) ,if(v = button1)/,打开按钮,initCamera();/,初始化相机,else if(v = button2),if(myCamera != null & isView)/,当正在显示时,isView =,false;,myCamera.stopPreview();,myCamera.release();,myCamera =,null;,else if(v = button3)/,拍照,myCamera.takePicture(myShutterCallback, myRawCallback, myjpegCallback);,public void initCamera(),if(!isView),myCamera = Camera.,open();,if(myCamera != null & !isView),try ,Camera.Parameters myParameters = myCamera.getParameters();,myParameters.setPictureFormat(PixelFormat.,JPEG);,myParameters.set(orientation,portrait);,myCamera.setParameters(myParameters);,myCamera.setPreviewDisplay(mySurfaceHolder);,myCamera.startPreview();/,立即运行,Preview,catch (IOException e) /,捕获异常,e.printStackTrace();/,打印错误信息,isView =,true;,ShutterCallback myShutterCallback = new ShutterCallback(),public void onShutter(),;,PictureCallback myRawCallback = new PictureCallback(),public void onPictureTaken(byte data, Camera camera) ,;,PictureCallback myjpegCallback = new PictureCallback(),public void onPictureTaken(byte data, Camera camera) ,Bitmap bm = BitmapFactory.,decodeByteArray(data, 0, data.length);,ImageView myImageView = (ImageView) findViewById(R.id.,myImageView);,myImageView.setImageBitmap(bm);/,将图片显示到,ImageView,中,isView = false;,myCamera.stopPreview();,myCamera.release();,myCamera = null;,initCamera();/,初始化相机,;,/,实现,SurfaceHolder.Callback,接口中的方法,Override,public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) ,Override,public void surfaceCreated(SurfaceHolder holder) ,Override,public void surfaceDestroyed(SurfaceHolder holder) ,视频播放,使用,android.widget.VideoView,MediaController mc = new MediaController(Context),videoView.setMediaController(mc);,videoView.setVideoPath(“/sdcard/XXX.mp4”);,videoView.start();,videoView.pause();,public void onCreate(Bundle savedInstanceState) ,requestWindowFeature(Window.,FEATURE_NO_TITLE);,t,his.getWindow().setFlags(,WindowManager.LayoutParams.,FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);,super.onCreate(savedInstanceState);,setContentView(R.layout.,main);,VideoView vv = (VideoView),this.findViewById(R.id.,video);,vv.setMediaController(,new MediaController(this);,vv.setVideoPath(/sdcard/hujc.mp4);,vv.start();,Google,地图,获取,Google Key,获取,Google Key,Eclipse window-preferences-android-build,得到,keystore,的位置,在命令行下,keytool list alias androiddebugkey keystore keystore,位置,storepass android keypass android,得到,MD5,认证指纹,获取,Google Key, Key,为,0YI48AYoAgrp0EoF_DYWKybum0btyr55r8_kWgQ,创建运行环境,安装,Google API,创建模拟器,target,为,Google API,创建,Android Project ,选择,target,为,Google API,配置文件,AndroidManifest.xml,application,标签中,:,manifest,标签中 加入,INTERNET,权限,main.xml,布局文件,定义,com.google.android.maps.MapView,除了常规属性外 还要定义,android:apiKey,取值为从,google,获得的密钥,. android:clickable,是否支持触屏操作,MapView,定义一个类继承,MapActivity,得到,MapView,对象,调用,getController,获得,MapController,对象,controller,创建,GeoPoint,对象,参数为纬度,*1E6,和经度,*1E6,调用,controller.animateTo(geoPoint),设置地图的经纬度,controller.setZoom(16),设置缩放尺度,覆盖,isRouteDisplayed(),是否显示导航路线,MapView,的方法,setSatellite :,是否显示卫星视图,setBuiltInZoomControls,是否显示缩放按钮,监听,GPS,数据,使用的类来自,android.location,包,为应用添加权限,: android.permission.ACCESS_FINE_LOCATION,程序中,:,getSystemService(Context.LOCATION_SERVICE),获得,LocationManager,对象,manager.requestLocationUpdates(LocationManager.GPS_PROVIDER,时间间隔,位置间隔,LocationListener),需要自己实现,LocationListener ,实现,onLocationChanged,方法,public class GoogleMapActivity extends MapActivity ,MapView mv;,MapController controller;,LocationManager manager;,Button btn;,EditText et1;,EditText et2;,double jingdu = 116.46;,double weidu = 39.92;,GPS,应用 示例,public void onCreate(Bundle savedInstanceState) ,super.onCreate(savedInstanceState);,setContentView(R.layout.,main);,btn = (Button),this.findViewById(R.id.,btn);,et1 = (EditText),this.findViewById(R.id.,e1);,et2 = (EditText),this.findViewById(R.id.,e2);,mv = (MapView),this.findViewById(R.id.,mapview);,controller = mv.getController();,setGeoPoint();,mv.setSatellite(,false);,mv.setBuiltInZoomControls(,true);,LocationListener listener =,new LocationListener(),public void onLocationChanged(Location location) ,weidu = location.getLatitude();,jingdu = location.getLongitude();,et1.setText(jingdu+);,et2.setText(weidu+);,setGeoPoint();,public void onProviderDisabled(String provider) ,public void onProviderEnabled(String provider) ,public void onStatusChanged(String provider, int status,Bundle extras) ,;,manager=(LocationManager),this.getSystemService(Context.,LOCATION_SERVICE);,manager.requestLocationUpdates(LocationManager.,GPS_PROVIDER, 2000, 10, listener);,btn.setOnClickListener(,new View.OnClickListener() ,public void onClick(View v) ,jingdu = Double.,parseDouble(et1.getText().toString();,weidu = Double.,parseDouble(et2.getText().toString();,setGeoPoint();,);,public void setGeoPoint(),GeoPoint gp =,new GeoPoint(int)(weidu*1E6),(int)(jingdu*1E6);,controller.animateTo(gp);,controller.setZoom(16);,public boolean isRouteDisplayed(),return false;,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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