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> 

效果图:

     

当点击录音时

 

 

posted on 2012-07-16 10:28  vus520  阅读(1052)  评论(1编辑  收藏  举报

导航