Android Audio Capture

Android Audio Capture

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".MainActivity" >

   <TextView
       android:id="@+id/text1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginTop="10dp"
       android:text="Recording Point: -"
       android:textAppearance="?android:attr/textAppearanceMedium" />

   <ImageView
     android:id="@+id/micImage"
       android:layout_width="60dp"
       android:layout_height="60dp"
       android:layout_below="@+id/text1"
       android:layout_centerHorizontal="true"
       android:layout_marginTop="20dp"
       android:src="@android:drawable/presence_audio_online" />
   
   <LinearLayout  android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_marginTop="10dp"
     android:layout_below="@+id/micImage"
     android:id="@+id/linear1"
     android:orientation="horizontal" >

    <Button
        android:id="@+id/start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="start" />
 
    <Button
        android:id="@+id/stop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:enabled="false"
        android:text="stop" />
   
   </LinearLayout>
   
   <LinearLayout  android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_marginTop="10dp"
     android:layout_below="@+id/linear1"
     android:id="@+id/linear2"
     android:orientation="horizontal" >

    <Button
        android:id="@+id/play"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:enabled="false"
        android:text="play" />
    
    <Button
        android:id="@+id/stopPlay"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:enabled="false"
        android:layout_marginLeft="10dp"
        android:text="stop playing" />
 </LinearLayout> 

</RelativeLayout>

MainActivity.java


import java.io.IOException;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

   private MediaRecorder myRecorder;
   private MediaPlayer myPlayer;
   private String outputFile = null;
   private Button startBtn;
   private Button stopBtn;
   private Button playBtn;
   private Button stopPlayBtn;
   private TextView text;
   
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      text = (TextView) findViewById(R.id.text1);
      // store it to sd card
      outputFile = Environment.getExternalStorageDirectory().
        getAbsolutePath() + "/javacodegeeksRecording.3gpp";

      myRecorder = new MediaRecorder();
      myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
      myRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
      myRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
      myRecorder.setOutputFile(outputFile);
      
      startBtn = (Button)findViewById(R.id.start);
      startBtn.setOnClickListener(new OnClickListener() {
  
  @Override
  public void onClick(View v) {
   // TODO Auto-generated method stub
   start(v);
  }
      });
      
      stopBtn = (Button)findViewById(R.id.stop);
      stopBtn.setOnClickListener(new OnClickListener() {
    
    @Override
    public void onClick(View v) {
     // TODO Auto-generated method stub
     stop(v);
    }
      });
      
      playBtn = (Button)findViewById(R.id.play);
      playBtn.setOnClickListener(new OnClickListener() {
    
    @Override
    public void onClick(View v) {
     // TODO Auto-generated method stub
    play(v); 
    }
      });
      
      stopPlayBtn = (Button)findViewById(R.id.stopPlay);
      stopPlayBtn.setOnClickListener(new OnClickListener() {
    
    @Override
    public void onClick(View v) {
     // TODO Auto-generated method stub
     stopPlay(v);
    }
      });
   }

   public void start(View view){
    try {
          myRecorder.prepare();
          myRecorder.start();
       } catch (IllegalStateException e) {
          // start:it is called before prepare()
       // prepare: it is called after start() or before setOutputFormat() 
          e.printStackTrace();
       } catch (IOException e) {
           // prepare() fails
           e.printStackTrace();
        }
    
       text.setText("Recording Point: Recording");
       startBtn.setEnabled(false);
       stopBtn.setEnabled(true);
       
       Toast.makeText(getApplicationContext(), "Start recording...", 
         Toast.LENGTH_SHORT).show();
   }

   public void stop(View view){
    try {
       myRecorder.stop();
       myRecorder.release();
       myRecorder  = null;
       
       stopBtn.setEnabled(false);
       playBtn.setEnabled(true);
       text.setText("Recording Point: Stop recording");
       
       Toast.makeText(getApplicationContext(), "Stop recording...",
         Toast.LENGTH_SHORT).show();
    } catch (IllegalStateException e) {
   //  it is called before start()
   e.printStackTrace();
    } catch (RuntimeException e) {
   // no valid audio/video data has been received
   e.printStackTrace();
    }
   }
  
   public void play(View view) {
    try{
     myPlayer = new MediaPlayer();
     myPlayer.setDataSource(outputFile);
     myPlayer.prepare();
     myPlayer.start();
     
     playBtn.setEnabled(false);
     stopPlayBtn.setEnabled(true);
     text.setText("Recording Point: Playing");
     
     Toast.makeText(getApplicationContext(), "Start play the recording...", 
       Toast.LENGTH_SHORT).show();
    } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
   }
   
   public void stopPlay(View view) {
    try {
        if (myPlayer != null) {
         myPlayer.stop();
            myPlayer.release();
            myPlayer = null;
            playBtn.setEnabled(true);
            stopPlayBtn.setEnabled(false);
            text.setText("Recording Point: Stop playing");
            
            Toast.makeText(getApplicationContext(), "Stop playing the recording...", 
        Toast.LENGTH_SHORT).show();
        }
    } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
   }

}


In Manifest.xml

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

I Am Not The Owner Of These Code .I Merely Have Copied Them From Various Sources. The Only Thing I Did Is That I Am Going To Present Them In More Easy Way To Understand.

Comments

Popular posts from this blog

LED Blinking using 8051 Microcontroller and Keil C – AT89C51

Android Camera Example 2

Java Script to make text change text color