視頻錄制功能正在走來,在Androidsdk中有與之相關的類:android.media.MediaRecorder。當然,因為模擬器上沒有提供必要的硬件設施,所以在學習過程中並不能實現。Media能夠播放來自任何地方的文件:一個實際的文件資源,系統中的一個文件或者是一個可用的網絡鏈接。
2.1如何播放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()方法。
Java代碼:
1.MediaPlayer mp=new MediaPlayer();
2.mp.setDataSource(PATH_TO_FILE);
3.mp.prepare();
4.mp.start();
5.需要注意的一點是:如果你傳遞的是一個URL方式的文件,那么這個文件必須是可以下載的,並且是不間斷的,簡單地說就是在播放的同時進行着下載。
2.2如何錄制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()方法來設置音頻編碼;
7、最后,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,這個類想內容模型提供了應用程序數據。
