1
回答
Android中的录音效果
极速云服务器,低至1.04元/天>>>   

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

<?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.pare(); } 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>

效果图:

     

当点击录音时

 

 


原文链接:http://www.cnblogs.com/vus520/archive/2012/07/16/2593158.html
<无标签>
举报
长平狐
发帖于5年前 1回/547阅
顶部