android如何播放和錄製音頻

視頻錄製功能正在走來,在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,這個類想內容模型提供了應用程序數據。

轉自:http://www.linuxidc.com/Linux/2011-09/42420.htm

相關文章
相關標籤/搜索