Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android錄音應用實例教程

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:text />
 
</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程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved