• 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();
            }
       }
    
    }
  • 相关阅读:
    “error LNK1169: 找到一个或多个多重定义的符号”的解决方法(转载)
    std::ostringstream 转std::string
    【转载】红外感应模块+蜂鸣器实现简易报警
    分割字符串使用空格
    优秀程序员的 18 大法则【转载】
    解决win10 iot VS编程出现的无法引用错误
    [转载] 程序员如何成功追到女神?
    win8/win10/win2012r2 存储池 冗余分析
    [转载][NAS] 使用win8的“存储池”功能~
    mySQL中删除unique key的语法 (删除某个字段的唯一性)
  • 原文地址:https://www.cnblogs.com/rojas/p/4535110.html
Copyright © 2020-2023  润新知