android audio

package com.javacodegeeks.android.audiocapturetest;



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();

        }

   }



}

 

你可能感兴趣的:(android)