亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android App調(diào)用MediaRecorder實(shí)現(xiàn)錄音功能的實(shí)例

 更新時(shí)間:2016年04月12日 14:29:58   作者:chenzheng_java  
這篇文章主要介紹了Android App調(diào)用MediaRecorder實(shí)現(xiàn)錄音功能的實(shí)例,MediaRecorder非常強(qiáng)大,不僅能夠用來(lái)錄制音頻還可以錄制視頻,需要的朋友可以參考下

MediaRecorder

Android的MediaRecorder包含了Audio和video的記錄功能,在Android的界面上,Music和Video兩個(gè)應(yīng)用程序都是調(diào)用MediaRecorder實(shí)現(xiàn)的。
MediaRecorder在底層是基于OpenCore(PacketVideo)的庫(kù)實(shí)現(xiàn)的,為了構(gòu)建一個(gè)MediaRecorder程序,上層還包含了進(jìn)程間通訊等內(nèi)容,這種進(jìn)程間通訊的基礎(chǔ)是Android基本庫(kù)中的Binder機(jī)制。
以開(kāi)源的Android為例MediaRecorder的代碼主要在以下的目錄中:
JAVA程序的路徑:

packages/apps/Camera/src/com/android/camera/VideoCamera.java

JAVA Framework的路徑:

frameworks/base/media/java/android/media/MediaRecorder.java

JAVA本地調(diào)用部分(JNI):

frameworks/base/media/jni/android_media_MediaRecorder.cpp

這部分內(nèi)容編譯成為目標(biāo)是libmedia_jni.so。
主要的頭文件在以下的目錄中:

frameworks/base/include/media/

多媒體底層庫(kù)在以下的目錄中:

frameworks/base/media/libmedia/ 

這部分的內(nèi)容被編譯成庫(kù)libmedia.so。
多媒體服務(wù)部分:

frameworks/base/media/libmediaplayerservice/

MediaRecorder和MeidaPlayer使用相同的服務(wù)。
基于OpenCore部分

external/opencore/android/author

這部分內(nèi)容被編譯成庫(kù)libopencoreauthor.so。

基本的錄音功能實(shí)現(xiàn):
好了,了解了大概的路徑,具體的調(diào)用MediaRecorder的內(nèi)容便可以深入各文件中去研究,接下來(lái)我們便直接來(lái)看例子,這個(gè)錄音器的代碼實(shí)現(xiàn)的說(shuō)明都寫(xiě)在了注釋中,非常簡(jiǎn)單:
  

import java.io.IOException; 
 
import android.app.Activity; 
import android.media.MediaRecorder; 
import android.os.Bundle; 
/** 
 * @description 對(duì)通過(guò)android系統(tǒng)手機(jī)進(jìn)行錄音的一點(diǎn)說(shuō)明測(cè)試 
 * @author chenzheng_java 
 * @since 2011/03/23 
 */ 
public class MediaRecordActivity extends Activity { 
  
 MediaRecorder mediaRecorder ; 
 @Override 
 public void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.main); 
   
  mediaRecorder = new MediaRecorder(); 
  record(); 
   
 } 
  
 /** 
  * 開(kāi)始錄制 
  */ 
 private void record(){ 
  /** 
   * mediaRecorder.setAudioSource設(shè)置聲音來(lái)源。 
   * MediaRecorder.AudioSource這個(gè)內(nèi)部類(lèi)詳細(xì)的介紹了聲音來(lái)源。 
   * 該類(lèi)中有許多音頻來(lái)源,不過(guò)最主要使用的還是手機(jī)上的麥克風(fēng),MediaRecorder.AudioSource.MIC 
   */ 
  mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
  /** 
   * mediaRecorder.setOutputFormat代表輸出文件的格式。該語(yǔ)句必須在setAudioSource之后,在prepare之前。 
   * OutputFormat內(nèi)部類(lèi),定義了音頻輸出的格式,主要包含MPEG_4、THREE_GPP、RAW_AMR……等。 
   */ 
  mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
  /** 
   * mediaRecorder.setAddioEncoder()方法可以設(shè)置音頻的編碼 
   * AudioEncoder內(nèi)部類(lèi)詳細(xì)定義了兩種編碼:AudioEncoder.DEFAULT、AudioEncoder.AMR_NB 
   */ 
  mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 
  /** 
   * 設(shè)置錄音之后,保存音頻文件的位置 
   */ 
  mediaRecorder.setOutputFile("file:///sdcard/myvido/a.3pg"); 
   
  /** 
   * 調(diào)用start開(kāi)始錄音之前,一定要調(diào)用prepare方法。 
   */ 
  try { 
   mediaRecorder.prepare(); 
   mediaRecorder.start(); 
  } catch (IllegalStateException e) { 
   e.printStackTrace(); 
  } catch (IOException e) { 
   e.printStackTrace(); 
  } 
   
 } 
  
 /*** 
  * 此外,還有和MediaRecorder有關(guān)的幾個(gè)參數(shù)與方法,我們一起來(lái)看一下: 
  * sampleRateInHz :音頻的采樣頻率,每秒鐘能夠采樣的次數(shù),采樣率越高,音質(zhì)越高。 
  * 給出的實(shí)例是44100、22050、11025但不限于這幾個(gè)參數(shù)。例如要采集低質(zhì)量的音頻就可以使用4000、8000等低采樣率 
  * 
  * channelConfig :聲道設(shè)置:android支持雙聲道立體聲和單聲道。MONO單聲道,STEREO立體聲 
  * 
  * recorder.stop();停止錄音 
  * recorder.reset(); 重置錄音 ,會(huì)重置到setAudioSource這一步 
  * recorder.release(); 解除對(duì)錄音資源的占用 
  */ 
} 

 

這里,一定要注意一點(diǎn),那就是如果我們想要錄音的話,那么首先得添加錄音權(quán)限到AndroidManiferst.xml中:

<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>

相關(guān)文章

最新評(píng)論