第56章、录制音频(从零开始学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文件。

  输入以下代码:

 

<?xml version="1.0" encoding="utf-8" ?>

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">


    <ImageButton
        android:id="@+id/record"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/record" />

    <ImageButton
        android:id="@+id/stop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/stop" />



</LinearLayout>


 

二、程序文件

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

  然后输入以下代码:

 

package com.genwoxue.recordaudio;

import java.io.File;
import java.io.IOException;

import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.Toast;
import android.app.Activity;

public class MainActivity extends Activity {

	private ImageButton btnRecord=null;
	private ImageButton btnStop=null;
	
	private MediaRecorder mRecorder=null;
	private static final String TAG="RECORD";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		btnRecord=(ImageButton)super.findViewById(R.id.record);
		btnStop=(ImageButton)super.findViewById(R.id.stop);
		
		//开始录音
		btnRecord.setOnClickListener(new OnClickListener(){
			public void onClick(View v){
				//判断外部存储卡是否存在
	    		if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
	    			Toast.makeText(getApplicationContext(), "读取失败,SD存储卡不存在!", Toast.LENGTH_LONG).show();  
	    			return;
	    		}
	    		
	    		//判断文件是否存在
	    		String path=Environment.getExternalStorageDirectory().toString()
	    				+File.separator
	    				+"genwoxue"
	    				+File.separator
	    				+System.currentTimeMillis()
	    				+".3gp";
	    		
				mRecorder = new MediaRecorder(); 	 //设置音源为Micphone   
		        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);  	//设置封装格式   
		        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);  
		        mRecorder.setOutputFile(path);  
		        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);  //设置编码格式   
		  
		        try {  
		            mRecorder.prepare();  
		        } catch (IOException e) {  
		            Log.e(TAG, "prepare() failed");  
		        }  
		  
		        mRecorder.start();  

			}
			
		});
		
		//停止录音
		btnStop.setOnClickListener(new OnClickListener(){
			public void onClick(View v){
				mRecorder.stop();  
		        mRecorder.release();  
		        mRecorder = null;  
			}
		});
	}


}


三、运行结果

   

单击“录音”按钮,如右图所示,将会录下来,被保存成3gp格式的录音文件。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蒋会全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值