Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android技術基礎 >> 第56章、錄制音頻(從零開始學Android)

第56章、錄制音頻(從零開始學Android)

編輯:Android技術基礎

我們可以使用MediaRecorder輕松完成音頻錄音,注意模擬器不支持,需要真機測試。具體步驟如下:

(1)創建一個android.media.MediaRecorder的新實例.
(2)使用MediaRecorder.setAudioSource()設置音頻源,一般要使用MediaRecorder.AudioSource.MIC.
(3)使用MediaRecorder.setOutputFormat()設置輸出文件的格式.
(4)使用MediaRecorder.setOutputFile()設置輸出文件的名字.
(5)使用MediaRecorder.setAudioEncoder()設置音頻編碼.
(6)調用MediaRecorder 實例的MediaRecorder.prepare().
(7)MediaRecorder.start()開始獲取音頻.
(8)調用MediaRecorder.stop().停止.
(9)調用MediaRecorder.release(),就會立即釋放資源.

 

一、設計界面

1、首先把record.png、stop.png兩張圖片復制到res/drawable-hdpi文件夾內。

\

 

2、布局文件

打開activity_main.xml文件。

輸入以下代碼:

 

[html] view plain copy  
  1. <?xml version="1.0" encoding="utf-8" ?>  
  2.   
  3. <LinearLayout   
  4.     xmlns:android="http://schemas.android.com/apk/res/android"   
  5.     android:orientation="vertical"   
  6.     android:layout_width="fill_parent"   
  7.     android:layout_height="fill_parent">  
  8.   
  9.   
  10.     <ImageButton  
  11.         android:id="@+id/record"  
  12.         android:layout_width="wrap_content"  
  13.         android:layout_height="wrap_content"  
  14.         android:src="@drawable/record" />  
  15.   
  16.     <ImageButton  
  17.         android:id="@+id/stop"  
  18.         android:layout_width="wrap_content"  
  19.         android:layout_height="wrap_content"  
  20.         android:src="@drawable/stop" />  
  21.   
  22.   
  23.   
  24. </LinearLayout>  

 

 

二、程序文件

打開“src/com.genwoxue.recordaudio/MainActivity.java”文件。

然後輸入以下代碼:

 

[java] view plain copy  
  1. package com.genwoxue.recordaudio;  
  2.   
  3. import java.io.File;  
  4. import java.io.IOException;  
  5.   
  6. import android.media.MediaRecorder;  
  7. import android.os.Bundle;  
  8. import android.os.Environment;  
  9. import android.util.Log;  
  10. import android.view.View;  
  11. import android.view.View.OnClickListener;  
  12. import android.widget.ImageButton;  
  13. import android.widget.Toast;  
  14. import android.app.Activity;  
  15.   
  16. public class MainActivity extends Activity {  
  17.   
  18.     private ImageButton btnRecord=null;  
  19.     private ImageButton btnStop=null;  
  20.       
  21.     private MediaRecorder mRecorder=null;  
  22.     private static final String TAG="RECORD";  
  23.     @Override  
  24.     protected void onCreate(Bundle savedInstanceState) {  
  25.         super.onCreate(savedInstanceState);  
  26.         setContentView(R.layout.activity_main);  
  27.           
  28.         btnRecord=(ImageButton)super.findViewById(R.id.record);  
  29.         btnStop=(ImageButton)super.findViewById(R.id.stop);  
  30.           
  31.         //開始錄音  
  32.         btnRecord.setOnClickListener(new OnClickListener(){  
  33.             public void onClick(View v){  
  34.                 //判斷外部存儲卡是否存在  
  35.                 if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){  
  36.                     Toast.makeText(getApplicationContext(), "讀取失敗,SD存儲卡不存在!", Toast.LENGTH_LONG).show();    
  37.                     return;  
  38.                 }  
  39.                   
  40.                 //判斷文件是否存在  
  41.                 String path=Environment.getExternalStorageDirectory().toString()  
  42.                         +File.separator  
  43.                         +"genwoxue"  
  44.                         +File.separator  
  45.                         +System.currentTimeMillis()  
  46.                         +".3gp";  
  47.                   
  48.                 mRecorder = new MediaRecorder();     //設置音源為Micphone     
  49.                 mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);    //設置封裝格式     
  50.                 mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);    
  51.                 mRecorder.setOutputFile(path);    
  52.                 mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);  //設置編碼格式     
  53.             
  54.                 try {    
  55.                     mRecorder.prepare();    
  56.                 } catch (IOException e) {    
  57.                     Log.e(TAG, "prepare() failed");    
  58.                 }    
  59.             
  60.                 mRecorder.start();    
  61.   
  62.             }  
  63.               
  64.         });  
  65.           
  66.         //停止錄音  
  67.         btnStop.setOnClickListener(new OnClickListener(){  
  68.             public void onClick(View v){  
  69.                 mRecorder.stop();    
  70.                 mRecorder.release();    
  71.                 mRecorder = null;    
  72.             }  
  73.         });  
  74.     }  
  75.   
  76.   
  77. }  

 

三、運行結果

\ \

單擊“錄音”按鈕,如右圖所示,將會錄下來,被保存成3gp格式的錄音文件。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved