Android錄音應用例項教程

Android錄音應用例項教程

本文以例項形式較為詳細的展示了Android錄音的實現方法,分享給大家供大家參考之用。具體方法如下:

首先是xml佈局檔案:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@ id/btn_talk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:enabled="false"
android:text="TALK"
android:textSize="30dp"
android:textStyle="bold" />
</LinearLayout>

執行效果如下圖所示:

MainActivity中定義按鈕的點選監聽器,按下按鈕時開始錄音,鬆開按鈕時停止錄音,類似於微信的操作方法。


// 獲得控制元件
public void get_con(){
btn_talk = (Button)findViewById(R.id.btn_talk);
btn_talk.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent e) {
if (e.getAction() == MotionEvent.ACTION_DOWN){
// 開始錄音
start_record();
}
else if (e.getAction() == MotionEvent.ACTION_UP){
// 停止錄音
stop_record();
}
return false;
}
});
}

開始錄音的方法,使用了android.media.MediaRecorder錄音。首先判斷SD卡是否存在,如果存在根據當前時間給建立一個錄音檔案,儲存到預定的目錄中,用MediaRecorder類開始錄音。


// 開始錄音
public void start_record(){
if (!Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)){     
show_status("SD卡不存在,請插入SD卡!");     
}
else{
try
{
// 獲取當前時間
cur_date = new Date(System.currentTimeMillis());
str_file = formatter.format(cur_date); 
// 建立儲存錄音的音訊檔案
send_sound_file = new File(Environment.getExternalStorageDirectory().getCanonicalFile()   "/talk/send");
// 如果目錄不存在
if (!send_sound_file.exists()){
send_sound_file.mkdirs();
}
send_sound_file = new File(Environment.getExternalStorageDirectory().getCanonicalFile()   "/talk/send/"   str_file   ".amr");
recorder = new MediaRecorder();
// 設定錄音的聲音來源
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
// 設定錄製的聲音的輸出格式(必須在設定聲音編碼格式之前設定)
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
// 設定聲音編碼的格式
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(send_sound_file.getAbsolutePath());
recorder.prepare();
// 開始錄音
recorder.start();
}
catch (Exception e)
{
show_status(e.toString());
}
}
}

停止錄音的方法,相對簡單。


// 停止錄音
public void stop_record(){
if (send_sound_file != null && send_sound_file.exists())
{
ses_id = ses_id   1;
// 停止錄音
recorder.stop();
// 釋放資源
recorder.release();
recorder = null;
}
super.onDestroy();
}

經過測試,錄製的3gp檔案可以正常播放。

希望本文所述對大家的Android程式設計有所幫助。

您可能感興趣的文章:

Android音訊錄製MediaRecorder之簡易的錄音軟體實現程式碼Android簡單的利用MediaRecorder進行錄音的例項程式碼Android應用開發:電話監聽和錄音程式碼示例Android開發四大元件之實現電話攔截和電話錄音Android 實現電話來去自動錄音的功能android程式設計實現電話錄音的方法Android許可權操作之uses-permission詳解Android許可權控制之自定義許可權Android中Root許可權獲取的簡單程式碼android程式設計判斷應用是否具有某個許可權的方法Android程式設計檢測手機錄音許可權是否開啟的方法