视频录制功能正在走来,在Androidsdk中有与之相关的类:android.media.MediaRecorder。固然,由于模拟器上没有提供必要的硬件设施,因此在学习过程当中并不能实现。Media可以播放来自任何地方的文件:一个实际的文件资源,系统中的一个文件或者是一个可用的网络连接。linux
2.1如何播放media音频android
一、将文件放到你的工程的res/raw文件夹中,在这个文件夹中,Eclipse插件将会找到它,同时,会将这个资源与你的R数据库
二、建立一个MediaPlayer,并使用MediaPlayer.create与资源相关联起来,以后在实例中使用start()方法。网络
例如:函数
MediaPlayer mp=MediaPlayer.create(context,R.raw.sound_file_1);学习
mp.start();编码
若是要想中止播放,使用stop()方法。插件
若是你想稍后从新播放这段media,你必须在再次使用start()方法以前使用reset()方法和prepare()方法来操做MediaPlayer对象。code
create()第一次调用prepare()。orm
若是想暂停播放,可使用pause()方法。在你暂停的地方恢复播放功能使用start()方法便可实现。
下面介绍如何播放一个文件:
一、用new建立一个MediaPlayer实例;
二、调用setDataSource()方法,这个方法有一个String类型的参数,这个String类型的参数包含了你所要播放的文件的路径-本地文件系统或者是URL;
三、以后,先调用prepare()方法,而后才是start()方法。
Java代码:
1.MediaPlayer mp=new MediaPlayer();
2.mp.setDataSource(PATH_TO_FILE);
3.mp.prepare();
4.mp.start();
5.须要注意的一点是:若是你传递的是一个URL方式的文件,那么这个文件必须是能够下载的,而且是不间断的,简单地说就是在播放的同时进行着下载。
2.2如何录制media音频资源
一、使用new建立一个实例android.media.MediaRecorder;
二、建立一个android.content.ContentValues实例并设置一些标准的属性,像TITLE,TIMESTAMP,最重要的是MIME_TYPE;
三、建立一个要放置的文件的路径,这能够经过android.content.ContentResolver在内容数据库中来建立一个入口,而且自动地标志一个取得这个文件的路径。
四、使用MediaRecorder.setAudioSource()方法来设置音频资源;这将会极可能使用到MediaRecorder.AudioSource.MIC;
五、使用MediaRecorder.setOutputFormat()方法设置输出文件格式;
六、用MediaRecorder.setAudioEncoder()方法来设置音频编码;
七、最后,prepare()和start()所录制的音频,stop()和release()在要结束的时候调用。
2.3实例分析
Java代码:
1.recorder=new MediaRecorder();
2.ContentValues values=newContentValues(3);
3.values.put(MediaStore.MediaColumns.TITLE,SOME_NAME_HERE);
4.values.put(MediaStore.MediaColumns.TIMESTAMP,System.currentTimeMillis());
5.values.put(MediaStore.MediaColumns.MIME_TYPE,recorder.getMimeContentType();
6.ContentResolver contentResolver=newContentResolver();
7.Uri base=MediaStore.Audio.INTERNAL_CONTENT_URI;
8.Uri newUri=contentResolver.insert(base,values);
9.//在所给定的URL中向一个表格插入一列数据
10.//函数原型:final Uri insert(Url,ContentValues values);
11.if(newUri==null){
12.//这里须要异常处理,咱们在这里不能建立一个新的内容入口
13.}
14.Stringpath=contentResolver.getDataFilePath(newUri);
15.//可使用setPreviewDisplay()来陈列一个preview来使View适合
16.recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
17.recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
18.recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
19.recorder.setOutputFile(path);
20.recorder.prepare();
21.recorder.start();
中止录制:
Java代码:
1.recorder.stop();
2.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,这个类想内容模型提供了应用程序数据。