Android中的录音效果

其实我们要是想实现录音效果的话,大脑里第一个想的就是先把布局写好,完事以后我们在设置录音按钮点击事件。完事创建录音对象,我们还应该想到的就是设置输出格式、设置编码格式、设置输出文件。这些主要的设置完,我们的录音代码就快完成,剩下的就是一些不怎么主要的了,记住还要设置权限。下面我们就来看看代码是怎么写的吧:

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



<LINEARLAYOUT xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_parent" 

android:layout_width="fill_parent" 

androidrientation="vertical" 

android:gravity="center"> 



<BUTTON 

android:layout_height="wrap_content" 

android:layout_width="wrap_content" 

android:text="录音" 

android:textsize="30sp" 

android:id="@+id/Button01">

 

</BUTTON> 



<BUTTON 

android:layout_height="wrap_content" 

android:layout_width="wrap_content" 

android:text="停止" android:textsize="30sp" 

android:id="@+id/Button02" 

android:layout_margintop="20dp">

 

</BUTTON> 



</LINEARLAYOUT> 

下面是main代码:

package eoe.android; 



import java.io.File; 

import java.io.IOException; 

import java.util.Calendar; 

import java.util.Locale; 

import android.app.Activity; 

import android.media.MediaRecorder; 

import android.os.Bundle; 

import android.text.format.DateFormat; 

import android.view.View; 

import android.widget.Button; 

import android.widget.Toast; 



public class MainActivity extends Activity { 



private Button recordButton; 

private Button stopButton; 

private MediaRecorder mr; 



@Override 

public void onCreate(Bundle savedInstanceState) { 



super.onCreate(savedInstanceState); 

setContentView(R.layout.main); 



recordButton = (Button) this.findViewById(R.id.Button01); 

stopButton = (Button) this.findViewById(R.id.Button02); 



// 录音按钮点击事件 

recordButton.setOnClickListener(new View.OnClickListener() { 



@Override 

public void onClick(View v) { 



File file = new File("/sdcard/"  + "YY" + new DateFormat().format("yyyyMMdd_hhmmss", Calendar.getInstance(Locale.CHINA)) + ".amr"); 



Toast.makeText(getApplicationContext(), "正在录音,录音文件在"+file.getAbsolutePath(), Toast.LENGTH_LONG) .show(); 



// 创建录音对象 

mr = new MediaRecorder(); 



// 从麦克风源进行录音 

mr.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 



// 设置输出格式 

mr.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); 



// 设置编码格式 

mr.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 



// 设置输出文件 

mr.setOutputFile(file.getAbsolutePath()); 



try { 



// 创建文件 

file.createNewFile(); 



// 准备录制 

mr.prepare(); 



} catch (IllegalStateException e) { 

e.printStackTrace(); 



} catch (IOException e) { 

e.printStackTrace(); 



} 



// 开始录制 

mr.start(); 



recordButton.setText("录音中……"); 



} 

}); 



// 停止按钮点击事件 

stopButton.setOnClickListener(new View.OnClickListener() { 



@Override 

public void onClick(View v) { 



if (mr != null) { 



mr.stop(); 

mr.release(); 

mr = null; 



recordButton.setText("录音"); 



Toast.makeText(getApplicationContext(), "录音完毕", Toast.LENGTH_LONG).show(); 



} 

} 

}); 

} 

} 

下面就是很重要的了,就是在AndroidManifest.xml里设置权限,不写它你就无法实现效果。

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



<MANIFEST xmlns:android="http://schemas.android.com/apk/res/android" 

android:versioncode="1"

 

android:versionname="1.0"> 



<APPLICATION 

android:icon="@drawable/icon" 

android:label="@string/app_name" 

android:debuggable="true"> 



<ACTIVITY 

android:label="@string/app_name" 

android:name=".MainActivity" 

android:screenorientation="portrait" android:configchanges="orientation|keyboardHidden|keyboard"> 



<INTENT -filter> 



<ACTION android:name="android.intent.action.MAIN" /> 

<CATEGORY android:name="android.intent.category.LAUNCHER" /> 



</INTENT> 



</ACTIVITY> 



</APPLICATION> 



<USES android:minsdkversion="4" -sdk /> 

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

<USES android:name="android.permission.WRITE_EXTERNAL_STORAGE" -permission></USES> 



</MANIFEST> 

效果图:

Android中的录音效果     

当点击录音时

Android中的录音效果

 

 

你可能感兴趣的:(android)