免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1838 | 回复: 0
打印 上一主题 下一主题

android中音频视频开发(一) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-03 21:25 |只看该作者 |倒序浏览
视频录制功能正在走来。在android SDK中有与之相关的类:android.media.MediaRecorder当然,因为模拟器上没有需要的硬件设施,所以在学习过程中并不能实现。Media能够播放来自任何地方发文件:一个非常粗糙的资源文件、系统中的一个文件或者是一个可以使用的网络链接。下面介绍如何在自己应用程序中播放一个粗糙的、不是非常正规的media音频:1、将文件放到你的工程的res/raw文件夹中,在这个文件夹中,Eclipse插件将会找到它,同时,会将这个资源与你的R类相关联起来;2、创建一个MediaPlayer,并使用MediaPlayer.create与资源相关联起来,之后在实例中使用start()方法。例如:MediaPlayer mp=MediaPlayer.create(context,R.raw.sound_file_1);mp.start();如果要想停止播放,使用stop()方法。如果你想稍后重新播放这段media,你必须在再次使用start()方法之前使用reset()方法和prepare()方法来操作MediaPlayer对象。(create()第一次调用prepare())如果想暂停播放,可以使用pause()方法。在你暂停的地方恢复播放功能使用start()方法即可实现。播放一个文件下面介绍如何播放一个文件:1、用new创建一个MediaPlayer实例;2、调用setDataSource()方法,这个方法有一个String类型的参数,这个String类型的参数包含了你所要播放的文件的路径-本地文件系统或者是URL;3、之后,先调用prepare()方法,然后才是start()方法。例如:MediaPlayer mp=new MediaPlayer();mp.setDataSource(PATH_TO_FILE);mp.prepare();mp.start();需要注意的一点是:如果你传递的是一个URL方式的文件,那么这个文件必须是可以下载的,并且是不间断的,简单地说就是在播放的同时进行着下载。下面介绍如何录制media音频资源:1、使用new创建一个实例android.media.MediaRecorder;2、创建一个android.content.ContentValues实例并设置一些标准的属性,像TITLE,TIMESTAMP,最重要的是MIME_TYPE;3、创建一个要放置的文件的路径,这可以通过android.content.ContentResolver在内容数据库中来创建一个入口,并且自动地标志一个取得这个文件的路径。4、使用MediaRecorder.setAudioSource()方法来设置音频资源;这将会很可能使用到MediaRecorder.AudioSource.MIC;5、使用MediaRecorder.setOutputFormat()方法设置输出文件格式;6、用MediaRecorder.setAudioEncoder()方法来设置音频 encoder;7、最后,prepare()和start()所录制的音频,stop()和release()当你想要结束的时候。 下面是一个实例:recorder=new MediaRecorder();ContentValues values=new ContentValues(3);values.put(MediaStore.MediaColumns.TITLE,SOME_NAME_HERE);values.put(MediaStore.MediaColumns.TIMESTAMP,System.currentTimeMillis());values.put(MediaStore.MediaColumns.MIME_TYPE,recorder.getMimeContentType();ContentResolver contentResolver=new ContentResolver();Uri base=MediaStore.Audio.INTERNAL_CONTENT_URI;Uri newUri=contentResolver.insert(base,values);  //在所给定的URL中向一个表格插入一列数据//函数原型:final Uri insert(Url,ContentValues values);if(newUri==null){    //这里需要异常处理,我们在这里不能创建一个新的内容入口}String path=contentResolver.getDataFilePath(newUri);//可以使用setPreviewDisplay()来陈列一个preview 来使View适合recorder.setAudioSource(MediaRecorder.AudioSource.MIC);recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);recorder.setOutputFile(path);recorder.prepare();recorder.start();停止录制:recorder.stop();recorder.release();在录制音频资源的过程中,使用到了ContentValues这个类,下面来解说这个类。ContentValues这个类是用来存储一系列的值的,这些值要求ContentResolver能够process的。ContentValues(int size)构造函数使用所给定的初始值创建一个空系列的值。ContentValues(ContentValues from)这个构造函数创建一个从给定的ContentValues中来进行复制所产生的值。这个类有如下的常用的方法:void clear()  删除所有的值boolean containsKey(String key) 如果这个对象有已命名的值就返回真int describeContents() 描述值类型Object get(String key) 获得值void put(String key,Integer value)增加一个值到对应的set中还有一个类就是ContentResolver,这个类想内容模型提供了应用程序数据。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/73521/showart_1678317.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP