关闭

关闭

封号提示

内容

首页 android多媒体和图形图像.ppt

android多媒体和图形图像.ppt

android多媒体和图形图像.ppt

上传者: pushkin 2012-12-24 评分 5 0 183 25 832 暂无简介 简介 举报

简介:本文档为《android多媒体和图形图像ppt》,可适用于IT/计算机领域,主题内容包含Android多媒体和图形图像Android多媒体和图形图像MediaPlayerMediaPlayer)如何获得MediaPlayer实例:   符等。

Android多媒体和图形图像Android多媒体和图形图像MediaPlayerMediaPlayer)如何获得MediaPlayer实例:   可以使用直接new的方式:   MediaPlayer mp= new MediaPlayer()   也可以使用create的方式如:MediaPlayermp=MediaPlayercreate(this,Rrawtest)这时就不用调用setDataSource了) 如何设置要播放的文件:   MediaPlayer要播放的文件主要包括个来源:a 用户在应用中事先自带的resource资源   例如:MediaPlayercreate(this,Rrawtest)b 存储在SD卡或其他文件路径下的媒体文件例如:mpsetDataSource("sdcardtestmp")chplaympc 网络上的媒体文件  ()mpsetDataSource("http:wwwcitynorthcnmusicconfuciusmp")()Stringpath=“http:wwwcitynorthcnmusicconfuciusmp”MediaPlayercreate(this,Uriprase(path)) MediaPlayer的setDataSource一共四个方法:       setDataSource(Stringpath)       setDataSource(FileDescriptorfd)       setDataSource(Contextcontext,Uriuri)   setDataSource(FileDescriptorfd,longoffset,longlength)在Android中我们有三种方式来实现视频的播放。、使用其自带的播放器。指定Action为ACTIONVIEW,Data为UriType为其MIME类型。 、使用VideoView来播放。在布局文件中使用VideoView结合MediaController来实现对其控制。 、使用MediaPlayer类和SurfaceView来实现。这种方式最灵活也最复杂。Idle 状态:当使用new()方法创建一个MediaPlayer对象或者调用了其reset()方法时该MediaPlayer对象处于idle状态。这两种方法的一个重要差别就是:如果在这个状态下调用了getDuration()等方法(相当于调用时机不正确)通过reset()方法进入idle状态的话会触发OnErrorListeneronError()并且MediaPlayer会进入Error状态如果是新创建的MediaPlayer对象则并不会触发onError(),也不会进入Error状态。End 状态:通过release()方法可以进入End状态只要MediaPlayer对象不再被使用就应当尽快将其通过release()方法释放掉以释放相关的软硬件组件资源这其中有些资源是只有一份的(相当于临界资源)。如果MediaPlayer对象进入了End状态则不会在进入任何其他状态了。Initialized 状态:这个状态比较简单MediaPlayer调用setDataSource()方法就进入Initialized状态表示此时要播放的文件已经设置好了。Prepared状态:初始化完成之后还需要通过调用prepare()或prepareAsync()方法这两个方法一个是同步的一个是异步的只有进入Prepared状态才表明MediaPlayer到目前为止都没有错误可以进行文件播放。Preparing 状态:这个状态比较好理解主要是和prepareAsync()配合如果异步准备完成会触发OnPreparedListeneronPrepared()进而进入Prepared状态。Started 状态:显然MediaPlayer一旦准备好就可以调用start()方法这样MediaPlayer就处于Started状态这表明MediaPlayer正在播放文件过程中。可以使用isPlaying()测试MediaPlayer是否处于了Started状态。如果播放完毕而又设置了循环播放则MediaPlayer仍然会处于Started状态类似的如果在该状态下MediaPlayer调用了seekTo()或者start()方法均可以让MediaPlayer停留在Started状态。Paused 状态:Started状态下MediaPlayer调用pause()方法可以暂停MediaPlayer从而进入Paused状态MediaPlayer暂停后再次调用start()则可以继续MediaPlayer的播放转到Started状态暂停状态时可以调用seekTo()方法这是不会改变状态的。Stop 状态:Started或者Paused状态下均可调用stop()停止MediaPlayer而处于Stop状态的MediaPlayer要想重新播放需要通过prepareAsync()和prepare()回到先前的Prepared状态重新开始才可以。PlaybackCompleted 状态:文件正常播放完毕而又没有设置循环播放的话就进入该状态并会触发OnCompletionListener的onCompletion()方法。此时可以调用start()方法重新从头播放文件也可以stop()停止MediaPlayer或者也可以seekTo()来重新定位播放位置。Error 状态:如果由于某种原因MediaPlayer出现了错误会触发OnErrorListeneronError()事件此时MediaPlayer即进入Error状态及时捕捉并妥善处理这些错误是很重要的可以帮助我们及时释放相关的软硬件资源也可以改善用户体验。通过setOnErrorListener(androidmediaMediaPlayerOnErrorListener)可以设置该监听器。如果MediaPlayer进入了Error状态可以通过调用reset()来恢复使得MediaPlayer重新返回到Idle状态。)对播放器的主要控制方法:Android通过控制播放器的状态的方式来控制媒体文件的播放其中:prepare()和prepareAsync()  提供了同步和异步两种方式设置播放器进入prepare状态需要注意的是如果MediaPlayer实例是由create方法创建的那么第一次启动播放前不需要再调用prepare()了因为create方法里已经调用过了。start()是真正启动文件播放的方法pause()和stop()比较简单起到暂停和停止播放的作用seekTo()是定位方法可以让播放器从指定的位置开始播放需要注意的是该方法是个异步方法也就是说该方法返回时并不意味着定位完成尤其是播放的网络文件真正定位完成时会触发OnSeekCompleteonSeekComplete()如果需要是可以调用setOnSeekCompleteListener(OnSeekCompleteListener)设置监听器来处理的。release()可以释放播放器占用的资源一旦确定不再使用播放器时应当尽早调用它释放资源。reset()可以使播放器从Error状态中恢复过来重新会到Idle状态。)设置播放器的监听器:  MediaPlayer提供了一些设置不同监听器的方法来更好地对播放器的工作状态进行监听以期及时处理各种情况如: setOnCompletionListener(MediaPlayerOnCompletionListener listener)、setOnErrorListener(MediaPlayerOnErrorListener listener)等,设置播放器时需要考虑到播放器可能出现的情况设置好监听和处理逻辑以保持播放器的健壮性。MediaRecorderMediaRecorderAndroid的MediaRecorder包含了Audio和video的记录功能在Android的界面上Music和Video两个应用程序都是调用MediaRecorder实现的。MediaRecorder在底层是基于OpenCore(PacketVideo)的库实现的为了构建一个MediaRecorder程序上层还包含了进程间通讯等内容这种进程间通讯的基础是Android基本库中的Binder机制。gallerygallery我们有时候在iPhone手机上或者Windows上面看到动态的图片可以通过鼠标或者手指触摸来移动它产生动态的图片滚动效果还可以根据你的点击或者触摸触发其他事件响应。同样的在Android中也提供这这种实现这就是通过Gallery在UI上实现缩略图浏览器。AndroidCameraAndroidCameraAndroid手机关于Camera的使用一是拍照二是摄像由于Android提供了强大的组件功能为此对于在Android手机系统上进行Camera的开发我们可以使用两类方法:一是借助Intent和MediaStroe调用系统CameraApp程序来实现拍照和摄像功能二是根据CameraAPI自写Camera程序。由于自写Camera需要对CameraAPI了解很充分而且对于通用的拍照和摄像应用只需要借助系统CameraApp程序就能满足要求了AndroidAudioManagerAndroidAudioManagerAudioManager类位于androidMedia包中该类提供访问控制音量和钤声模式的操作。通过getSystemService(ContextAUDIOSERVICE)方法获得AudioManager实例对象。AudioManageraudiomanage=(AudioManager)contextgetSystemService(ContextAUDIOSERVICE)audiomanager就是我们定义的控制系统声音的对象。audiomanagerSetStreamVolume(AA,BB,CC),是我们可以直接使用的AudioManager的成员函数个参数表示的意思:AA:有内置的常量,可以在AudioManager里面查到相关的定义我们在此用AudioManagerSTREAMMUSICBB:自己设置音量的值CC:也是一些标示量我在此设置为Android图形Android图形如何访问图片JAVA直接访问资源setImageResource()通过xml访问资源drawableBitmap和BitmapFactoryAndroid动画Android动画Tween动画Frame动画TweenTweenTween动画主要的功能是在绘制动画前设置动画绘制的轨迹包括时间位置等等。但是Tween动画的缺点是它只能设置起始点与结束点的两帧中间过程全部由系统帮我们完成。所以在帧数比较多的游戏开发中是不太会用到它的。Tween一共提供了中动画的效果    Scale:缩放动画    Rotate:旋转动画    Translate:移动动画    Alpha::透明渐变动画、AlphaAnimation:渐变动画主要控制透明度变化动画类常使用AlphaAnimation(floatfromAlpha,floattoAlpha)来构造   fromAlpha:动画开始时的透明度(取值范围为到)   toAlpha:动画结束时的透明度、ScaleAnimation:主要控制尺度变化的动画类常使用ScaleAnimation(floatfromX,floattoX,floatfromY,floattoY,intpivotXType,floatpivotXValue,intpivotYType,floatpivotYValue)来构造   fromX:动画开始X坐标上的伸缩尺度   toX:动画结束X坐标上的伸缩尺度   fromY:动画开始Y坐标上的伸缩尺度   toY:动画结束Y坐标上的伸缩尺度   pivotXType:X坐标上的伸缩模式取值有:AnimationABSOLUTE,AnimationRELATIVETOSELF,AnimationRELATIVETOPARENT   pivotXValue:X坐标上的伸缩值   pivotYType:Y坐标上的伸缩模式取值有:AnimationABSOLUTE,AnimationRELATIVETOSELF,AnimationRELATIVETOPARENT   pivotYValue:Y坐标上的伸缩值、TranslateAnimation:主要控制位置变换的动画实现类常使用TranslateAnimation(floatfromXDelta,floattoXDelta,floatfromYDelta,floattoYDelta)来构造   fromXDelta:动画开始的X坐标   toXDelta:动画结束的X坐标   fromYDelta:动画开始的Y坐标   toYDelta:动画结束的Y坐标、RotateAnimation:主要控制旋转的动画实现类常使用RotateAnimation(floatfromDegrees,floattoDegrees,intpivotXType,floatpivotXValue,intpivotYType,floatpivotYValue)来构造   fromDegrees:旋转开始角度   toDegrees:旋转结束角度   pivotXType,pivotXValue,pivotYType,pivotYValue与尺度变化动画ScaleAnimation类似Frame动画Frame动画Frame动画是一系列图片按照一定的顺序展示的过程和放电影的机制很相似我们称为逐帧动画。Frame动画可以被定义在XML文件中也可以完全编码实现。如果被定义在XML文件中我们可以放置在res下的anim或drawable目录中(resanim|drawablefilenamexml)文件名可以作为资源ID在代码中引用如果由完全由编码实现我们需要使用到AnimationDrawable对象。Paint和Color类Paint和Color类要绘图首先得调整画笔待画笔调整好之后再将图像绘制到画布上这样才可以显示在手机屏幕上。Android中的画笔是Paint类Paint中包含了很多方法对其属性进行设置主要方法如下: setAntiAlias:设置画笔的锯齿效果。   setColor:设置画笔颜色   setARGB: 设置画笔的a,r,p,g值。   setAlpha: 设置Alpha值   setTextSize:设置字体尺寸。   setStyle: 设置画笔风格空心或者实心。   setStrokeWidth:设置空心的边框宽度。   getColor: 得到画笔的颜色   getAlpha: 得到画笔的Alpha值。 CanvasCanvasCanvas类用来描绘平面图形Canvas起初是没有任何内容的就像投影仪的幻灯底片。Canvas提供多个方法可以让你画直线、矩形、圆形以及其他几何图形。在Android中显示屏是由一个Activity来呈现的Activity又是通过View来填充的View又可以通过Canvas来描绘界面。前提是你要重写ViewonDraw()该方法唯一的一个参数就是用来画图形的canvasSurfaceView介绍可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图容器。它的特性是:可以在主线程之外的线程中向屏幕绘图上。这样可以避免画图任务繁重的时候造成主线程阻塞从而提高了程序的反应速度。在游戏开发中多用到SurfaceView游戏中的背景、人物、动画等等尽量在画布canvas中画出。需要重写的方法 ()public void surfaceChanged(SurfaceHolder holder,int format,int width,int height){}     在surface的大小发生改变时激发 ()public void surfaceCreated(SurfaceHolder holder){}     在创建时激发一般在这里调用画图的线程。 ()public void surfaceDestroyed(SurfaceHolder holder) {}     销毁时激发一般在这里将画图的线程停止、释放。整个过程:继承SurfaceView并实现SurfaceHolderCallback接口>SurfaceViewgetHolder()获得SurfaceHolder对象>SurfaceHolderaddCallback(callback)添加回调函数>SurfaceHolderlockCanvas()获得Canvas对象并锁定画布>Canvas绘画>SurfaceHolderunlockCanvasAndPost(Canvascanvas)结束锁定画图并提交改变将图形显示。动画渲染动画渲染MatrixShaderMatrixMatrix图像的旋转稍微复杂:现设点P(xy)旋转θ角后的对应点为P(xy)。通过使用向量我们得到如下:x=rcosα y=rsinαx=rcos(αθ)=xcosθysinθ y=rsin(αθ)=xsinθycosθ于是我们得到矩阵:如果图像围绕着某个点(ab)旋转呢?则先要将坐标平移到该点再进行旋转然后将旋转后的图像平移回到原来的坐标原点在后面的篇幅中我们将详细介绍。ShaderShaderAndroid中提供了Shader类专门用来渲染图像以及一些几何图形Shader下面包括几个直接子类分别是BitmapShader、ComposeShader、LinearGradient、RadialGradient、SweepGradient。BitmapShader主要用来渲染图像LinearGradient用来进行梯度渲染RadialGradient用来进行环形渲染SweepGradient用来进行梯度渲染ComposeShader则是一个混合渲染可以和其它几个子类组合起来使用。    Shader类的使用都需要先构建Shader对象然后通过Paint的setShader方法设置渲染对象然后设置渲染对象然后再绘制时使用这个Paint对象即可。当然用不同的渲染时需要构建不同的对象。 下面是一个简单的示例其实用起来比较简单了只是方法参数比较多。但是还比较容易理解。大家可以去翻翻API这里就不深入讨论了以后用到再说吧。桌面快捷方式桌面快捷方式 Home是Android设备开启后第一个与用户交互的应用程序。在其他应用程序运行于前台时Home也将一直运行于后台。在屏幕分辨率为*像素的Android设备上竖屏时这个桌面有快*px的区域组成而每块区域即每屏被划分成个*像素的单元格横屏时则是由块*px的区域构成每屏也是被划分成了个单元格但每个单元格的大小为*px。(Android系统现在已经达到了五屏)。桌面插件AppWidget桌面插件AppWidgetAppWidget是在桌面上的一块显示信息的东西通过单击AppWidget跳转到程序入口类。而系统自带的程序典型的AppWidget是music这个Android内置的音乐播放小程序。这个是典型的AppWidgetapp应用。就是一个程序既可以通过AppWidget启动也可以通过App启动。AppWidget就是一个AppWidgetProvider一个UI界面显示(预先绑定了好多Intent)界面上的信息可以通过程序控制而改变单击Widget上的控件只能激发发送一个Intent或发出一个Service的启动通知。而AppWidgetProvider可以拦截这个Intent而进行相应的处理(比如显示新的信息)。 

类似资料

编辑推荐

教育论文:祖国统一的历史潮流教学设计.doc

医学统计学习题.doc

校园街舞大赛策划书(模板).doc

国学教育创业计划书.doc

蒸压加气混凝土砌块专项施工方案.doc

职业精品

精彩专题

上传我的资料

精选资料

热门资料排行换一换

  • 方剂学趣味记忆表 1.pdf

  • 高分托福文法.pdf

  • [中医治癌之光].郑文友.扫描版…

  • 认知疗法:基础与应用.pdf

  • 文史精华2009-9.pdf

  • 经济学的思维方式·第11版 (美…

  • 白清佐先生临床经验辑要-私淑黄元…

  • 八字学命理真诀之手抄笔记司萤讲义…

  • 群经见智录(恽铁樵).pdf

  • 资料评价:

    / 35
    所需积分:1 立即下载

    意见
    反馈

    返回
    顶部