欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    [计算机软件及应用]android中音频视频开发教程含代码.doc

    • 资源ID:1991446       资源大小:286KB        全文页数:33页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [计算机软件及应用]android中音频视频开发教程含代码.doc

    本文简介媒体包提供了可管理各种媒体类型的类。这些类可提供用于执行音频和视频操作。除了基本操作之外,还可提供铃声管理、脸部识别以及音频路由控制。本文说明了音频和视频操作。范围:本文旨在针对希望简单了解Android编程的初学者而设计。本文将指导你逐步开发使用媒体(音频和视频)的应用程序。本文假定你已安装了可开发应用程序的Android和必要的工具,同时还假定你已熟悉Java或掌握面向对象的编程概念。如欲查询更多有关Android的详情,请参阅三星移动创新者园地(SMI)知识库网站。http:/innovator.samsungmobile.com/cn/platform.main.do?platformId=1 简介通过“android.media”包支持音频和视频操作。除了基本操作之外,还可以提供用于铃声管理、脸部识别以及音频路由控制的各种类。Android通过MediaPlayer类支持播放音频和视频。MediaPlayer类处于Android media包的核心位置。除了MediaPlayer类之外,SoundPool和JetPlayer类也可提供用来播放音频文件。播放音频文件MediaPlayer是播放媒体文件最为广泛使用的类。MediaPlayer已设计用来播放大容量的音频文件以及同样可支持播放操作(停止、开始、暂停等)和查找操作的流媒体。其还可支持与媒体操作相关的监听器。通过以下方式可完成播放MediaPlayer中的音频和视频:· 从源文件播放。· 从文件系统播放。· 从流媒体播放。 MediaPlayer监听器定义了部分监听器,如OnCompletionListener、OnPrepareListener、OnErrorListener、OnBufferingUpdateListener、OnInfoListener,OnVideoSizeChangedListener和OnSeekCompleteListener。当在播放过程中到达媒体源末端时,可调用OnCompletionListener onCompletion(MediaPlayer mp)事件。你也可使用监听器事件来从列表中播放下一首歌曲或释放媒体播放器对象。当准备播放媒体源时,将可调用OnPrepareListener onPrepared(MediaPlayer mp)事件。你可以开始播放onPrepared()方法中的歌曲。当在异步操作过程中出现错误时(其他错误将在调用方法时抛出异常),将可调用OnErrorListener boolean onError(MediaPlayer mp, int what, int extra)事件。参数what指明了已发生错误的类型。这可能为MEDIA_ERROR_UNKNOWN or MEDIA_ERROR_SERVER_DIED。参数extra指明了与错误相关的附加信息。从res播放音频这是播放音频文件最普通的方法。在此情况下,音频文件应存在于该项目的raw或assets文件夹中,如图1中所示。 如欲访问一个原资源,仅需使用无扩展名的小写文件名称:context appContext = getApplicationContext();MediaPlayer mMediaPlayer = MediaPlayer.create(appContext,R.raw.samplemp3);mMediaPlayer.start();或MediaPlayer mMediaPlayer = MediaPlayer.create(this, R.raw.samplemp3);mMediaPlayer.start();如欲停止播放,调用stop()。如果你希望重播该媒体,则须在再次调用start()之前reset()(重置()并prepare()(准备()该MediaPlayer对象。(create()首次调用prepare()。)如欲暂停播放,调用pause()。使用start()可从你已暂停的地方恢复播放。从文件系统播放音频访问音频文件的第二种方法是从文件系统,即SD卡。大多数音频资源均存在于SD卡中。在研究如何通过SD卡访问音频文件之前,让我们看一下如何在SD卡中加载文件。通过窗口> 显示视图> 其他,可打开Eclipse IDE中的FileExplorer视图。其将打开显示视图。如图2中所示,选择Android >FileExplorer。一旦选择File Explorer(文件管理器),即将会打开File Explorer视图,如图3所示。现在,可将文件推入SD卡中,在File Explorer中选择sdcard文件夹,并使用位于右上角的右箭头来选择按钮。此操作可开启对话框,可使你选择文件。选择你所需上传至SD卡中的文件。将文件推入SD卡中后,如图4中显示了可用的内容。通过以下方式来从SD卡访问文件String pathToFile = "/sdcard/samplemp3.mp3"/create mediaplayermediaPlayer = new MediaPlayer();/set audio file pathtry mediaPlayer.setDataSource(pathToFile); catch (IllegalArgumentException e) e.printStackTrace(); catch (IllegalStateException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();/Prepare mediaplayertry mediaPlayer.prepare(); catch (IllegalStateException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();/start mediaPlayermediaPlayer.start();首先,创建一个新的MediaPlayer实例。其次,将待播放的音频文件(文件路径)设置为MediaPlayer实例的数据源。在播放器开始播放歌曲之前,必须准备好MediaPlayer对象。prepare()方法为阻塞方法,并可阻塞直至媒体播放器准备播放歌曲。非阻塞方法prepareAsync()也可进行提供。如果媒体播放器用来从流媒体中播放歌曲,并且在播放歌曲之前需要缓冲数据,则应使用非阻塞prepare方法。现在使用以下内容来播放控制方法,如Start()、stop()等。在可设置用于部分其他歌曲文件之前,媒体播放器对象须进行重置。媒体播放器在其使用后须予以释放。此操作使用release()方法来完成。Release()方法可释放与MediaPlayer对象相关联的资源。当你使用MediaPlayer来完成操作时,这被认为是调用此方法的最佳实践。我们也可通过以下方式来创建媒体播放器String pathToFile = "/sdcard/samplemp3.mp3"MediaPlayer filePlayer = MediaPlayer.create( appContext, Uri.parse(pathToFile) );此处可通过解析给定的已编译URI字符串来使用URI类创建Uri。从网页播放音频使用与用于访问SD卡中存有的音频文件的相同代码,可完成访问网站中的音频文件。唯一的变化就是文件路径。此处的路径将为网站URL,其指向音频资源文件。此处最重要的部分就是使用互联网提取数据,因此必须获取访问互联网的许可。在AndroidManifest.xml文件中设置互联网许可<uses-permission android:name="android.permission.INTERNET"></uses-permission>除了URL路径外,该代码保持相同String urlPath = "http:/www.xyz.com/samplemp3.mp3"/create new mediaplayermediaPlayer = new MediaPlayer();/set audio file pathtry mediaPlayer.setDataSource(urlPath); catch (IllegalArgumentException e) e.printStackTrace(); catch (IllegalStateException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();/Prepare mediaplayertry mediaPlayer.prepare(); catch (IllegalStateException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();/Start mediaplayermediaPlayer.start();或者,我们也可通过以下方式创建媒体播放器String urlPath = "http:/www.xyz.com/samplemp3.mp3"MediaPlayer filePlayer = MediaPlayer.create( appContext, Uri.parse(urlPath) );此处可通过解析给定的已编译URI字符串来使用URI类创建Uri。类与MediaPlayer类相对。该类设计用于快速播放一套预先定义的相对较短的声音示例。它是示例的集合,这些示例可从APK内部的资源或从文件系统的文件载入内存中。最典型的用例是在要求低延时的游戏中的音效池。除了预先加载和播放声音等基本操作外,SoundPool类还支持以下功能:SoundPoolSoundPool· 设置可同时播放的最高的声音数· 优先处理声音,以便达到最大极限时将会减弱优先级别低的声音· 在完成播放之前暂停和停止声音· 循环声音· 更改播放速率(实际上是指每个声音音调)· 设置立体声音量(左声道和右声道不同) 如图1所示,通过SoundPool类使用.ogg文件来播放音频文件。以下代码片段说明了SoundPool类的用法。private int BIG_WAVE = 1;/* Initialize SoundPool1 number of sounds that will be loaded.AudioManager.STREAM_MUSIC- Stream type0 Quality of the sound. Currently no effect*/ SoundPool soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0); /Create HashMapHashMap soundPoolMap = new HashMap(); /Create AudioManagerAudioManager mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE); OR AudioManager mAudioManager = (AudioManager)getContext().getSystemService(AUDIO_SERVICE); /Load audio fileint soundID = mSoundPool.load(this, R.raw.bigwave, 1); /Put key value pair in HashMapsoundPoolMap.put(BIG_WAVE, soundID); /Play soundint streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);int actualVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); soundPool.play( mSoundPoolMap.get(BIG_WAVE), streamVolume, streamVolume, 1, 0, 1f); 从res播放音频使用SoundPool类load (Context context, int resId, int priority)方法可从原文件夹加载音频文件。如果你希望从原资源文件“bigwave.mp3”加载声音,则应将“R.raw.bigwave”指定为资源ID。返回可被使用的整数值SoundID来播放声音。从文件系统播放音频使用SoundPool类load (String path, int priority)方法可从原文件夹加载音频文件。如果你希望从原资源文件“bigwave.mp3”加载声音,则应将“R.raw.bigwave”指定为资源ID。此操作能返回可被使用的整数值SoundID来播放声音。ToneGenerator该类提供了可播放双音多频(DTMF)音、呼叫监控音和专有音的各种方法。对象要求一个输出流类型和音量。startTone()可用来播放声音。startTone()方法可在指定的时间段开始播放指定类型的声音。ToneGenerator/Output Stream Type and VolumeToneGenerator tg=new ToneGenerator(AudioManager.STREAM_RING, 100);/Play Tonetg.startTone(ToneGenerator.TONE_CDMA_ABBR_ALERT); 播放视频文件 VideoViewAndroid提供了专业化的视图控制android.widget.VideoView,其可压缩创建并初始化MediaPlayer。VideoView类可从各种源(如资源或内容提供商)加载图片,并且可负责从该视频计算其尺寸,以便其可在任何布局管理器中使用。同样,该类还可提供各种显示选项,如缩放比例和着色。可用来显示SDCard FileSystem中存在的视频文件或联机存在的文件。如欲添加VideoView控件,res文件夹中存在的布局文件将可能出现如下情况VideoView<LinearLayout xmlns:android="http:/schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"<VideoView android:id="+id/videoView" android:layout_width="fill_parent" android:layout_height="fill_parent"/></LinearLayout> 并且显示如下代码片段/Create VideoViewVideoView videoView = (VideoView)this.findViewById(R.id.videoView);/Create MediaControllerMediaController mc = new MediaController(this);/Set MediaController to VideoViewvideoView.setMediaController(mc);/Set video path of SD CardvideoView.setVideoURI(Uri.parse("file:/sdcard/samplemp4.mp4");OR/Set video web pathvideoView.setVideoURI(Uri.parse("http:/www.xyz.com/./sample3gp.3gp");/Set requestFocusvideoView.requestFocus();/Play VideovideoView.start();从文件系统播放视频从将访问视频文件的地方设置视频路径。此处指定了文件系统的路径。使用Uri.parse(String path)静态方法,其可将该字符串转换为Uri。从网页播放视频此操作与从文件系统播放视频的方法相同,唯一的区别就是路径。此处的路径指向网站。VideoView setVideoURI(Uri uri)SurfaceView可允许我们指定我们自己的显示面,并可允许直接操控媒体播放器基础实例。如欲使用媒体播放器来查看视频内容,首先要准备一个将可显示该视频的显示面。媒体播放器要求一个SurfaceHolder对象来显示视频内容,该对象可使用setDisplay()方法来予以分配。如欲在UI布局中包括Surface Holder,使用存在于res文件夹中的布局文件中的SurfaceView控件。SurfaceView<LinearLayout xmlns:android="http:/schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <SurfaceView android:id="+id/surface" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"> </SurfaceView></LinearLayout>以下代码片段说明了如何创建SurfaceView和SurfaceHolder。 /create SurfaceViewSurfaceView surfaceView = (SurfaceView) findViewById(R.id.surface);/get SurfaceHolderSurfaceHolder holder = mPreview.getHolder();/add callbackholder.addCallback(this);/set Surface Typeholder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);/set Surface sizeHolder.setFixedSize(width, height); /specify the width and height here如欲显示视频,需要执行SurfaceHolder.Callback接口。SurfaceHolder.Callback接口有三种方法Overridepublic void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) Overridepublic void surfaceCreated(SurfaceHolder holder) Overridepublic void surfaceDestroyed(SurfaceHolder arg0) 类有助于我们控制表面(如果表面发生变化,包括大小或表面的格式)。一旦已创建表面,即可调用surfaceCreated(SurfaceHolder holder)。然后,创建一个MediaPlayer对象并设定其他参数。SurfaceHolder从res播放视频此处需要使用MediaPlayer 静态方法MediaPlayer create (Context context, int resid)来创建MediaPlayer对象。该媒体播放器要求一个SurfaceHolder对象来显示视频内容,该对象可使用setDisplay()方法来予以分配。/Create MediaPlayer from resMediaPlayer mMediaPlayer = MediaPlayer.create(this, R.raw.samplemp4);/Set the displaymMediaPlayer.setDisplay(holder);/Set other parametersmMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);/start the playermMediaPlayer.start(); 从文件系统播放视频在此情况下,需要使用setDataSource (String path)方法来将文件路径设置为MediaPlayer。然后,需要使用prepare()方法来准备mediaplayer。prepare()方法可同步准备播放器进行播放。设置datasource和显示面后,你需要调用prepare()或prepareAsync()。使用trycatch Exception语句,因为特定的方法(如setDataSource()、prepare())可能会抛出异常。String pathToFile = "/sdcard/samplemp4.mp4"/ Create a new media player and set the listenersMediaPlayer mMediaPlayer = new MediaPlayer();mMediaPlayer.setDataSource(pathToFile);mMediaPlayer.setDisplay(holder);mMediaPlayer.prepare();/ set listeners, if required by applicationmMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);mMediaPlayer.start(); 从网页播放视频在此情况下,文件路径需要予以变更,并设置至可访问视频的网站。其他的仍保持相同。String pathToFile = "http:/www.xyz.com/./samplemp4.mp4"/ Create a new media player and set the listenersMediaPlayer mMediaPlayer = new MediaPlayer();mMediaPlayer.setDataSource(pathToFile);mMediaPlayer.setDisplay(holder);mMediaPlayer.prepare();/ set listeners, if required by applicationmMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);mMediaPlayer.start(); 示例以下示例说明了可播放res文件夹、系统文件和互联网中存在的音频和视频文件的ediaPlayer、SoundPool、 ToneGenerator、VideoView、SurfaceView类和MediaPlayer监听器的用法。一旦开启,该应用程序即可显示两个选项,即音频或视频。Xml和代码如下所列出main.xml<<LinearLayout xmlns:android="http:/schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <<Button android:text="Audio" android:id="+id/button1" android:layout_height="wrap_content" android:layout_width="match_parent"> <</Button> <<Button android:text="Video" android:id="+id/button2" android:layout_height="wrap_content" android:layout_width="match_parent"> <</Button></LinearLayout> AudioVideoPlayerpackage com.samsung.player;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class AudioVideoPlayer extends Activity implements OnClickListenerprivate Button btnAudio;private Button btnVideo;public static final int AUDIO = 1;public static final int VIDEO = 2;public static final String PLAY_WHAT = "AUDIO_VIDEO"public static final String PLAY_AUDIO = "AUDIO"public static final String PLAY_VIDEO = "VIDEO" /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); btnAudio = (Button)findViewById(R.id.button1); btnAudio.setOnClickListener(this); btnVideo = (Button)findViewById(R.id.button2); btnVideo.setOnClickListener(this); public void onClick(View v) if(v = btnAudio) Intent intent = new Intent(this.getApplication(),MyPlayerMenu.class); intent.putExtra(PLAY_WHAT, AUDIO); startActivity(intent); else if(v = btnVideo) Intent intent = new Intent(this.getApplication(),MyPlayerMenu.class); intent.putExtra(PLAY_WHAT, VIDEO); startActivity(intent); 一旦选择音频,该应用程序即可显示以下所列出的音频菜单myplayermenu.xml<LinearLayout xmlns:android="http:/schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:text="Play Audio from res" android:id="+id/menubutton1" android:layout_height="wrap_content" android:layout_width="match_parent"> </Button> <Button android:text="Play Audio from filesystem" android:id="+id/menubutton2" android:layout_height="wrap_content" android:layout_width="match_parent"> </Button> <Button android:text="Play Audio from web stream" android:id="+id/menubutton3" android:layout_height="wrap_content" android:layout_width="match_parent"> </Button> <Button android:text="Play Audio Tone (ToneGenerator)" android:id="+id/menubutton4" android:layout_height="wrap_content" android:layout_width="match_parent"> </Button> <Button android:text="SoundPool" android:id="+id/menubutton5" android:layout_height="wrap_content" android:layout_width="match_parent"> </Button></LinearLayout> MyPlayerMenupackage com.samsung.player;import android.app.Activity;import android.content.Intent;import android.media.AudioManager;import android.media.ToneGenerator;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MyPlayerMenu extends Activity implements OnClickListener private Button btnRes; private Button btnFile; private Button btnWeb; private Button btnTone; private Button btnSoundPool; private int value; public static final int PLAY_AUDIO_FROM_RES = 3; public static final int PLAY_AUDIO_FROM_FILESYSTEM = 4; public static final int PLAY_AUDIO_FROM_WEB = 5; public static final int PLAY_AUDIO_FROM_TONE = 6; public static final int PLAY_AUDIO_FROM_SOUNDPOOL = 7; public static final int PLAY_VIDEO_FROM_RES = 8; public static final int PLAY_VIDEO_FROM_FILESYSTEM = 9; public static final int PLAY_VIDEO_FROM_WEB = 10; /* Called when the activity is first created. */ Over

    注意事项

    本文([计算机软件及应用]android中音频视频开发教程含代码.doc)为本站会员(音乐台)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开