Android开发-MediaRecorder使用

本文主要讲解的是关于Android的录音功能的编程介绍,在Android中提供了一个MediaRecorder类,

在其中我们主要使用一下以下的几个方法实现录音功能:

开启Android的录音功能

MediaRecorder recorder = new MediaRecorder();

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB);

recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);

recorder.setOutputFile(PATH_NAME);

recorder.prepare();

recorder.start();

停止Android的录音功能:

recorder.stop();

recorder.reset();

recorder.release();

个人写的一个实例软件如下:

布局文件:

<Button
        android:id="@+id/btnStart"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Start"/>
    
    <Button
        android:id="@+id/btnStop"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Stop" />

代码中实现如下:

private MediaRecorder mediaRecorder=null;
    
    private OnClickListener onClickListener = new View.OnClickListener() {
        
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.btnStart:
                
                if (mediaRecorder==null) {
                    recordStart();
                }
                
                break;
                
            case R.id.btnStop:
                
                if (mediaRecorder!=null) {
                    recordStop();
                }
                
                break;

            default:
                break;
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        findViewById(R.id.btnStart).setOnClickListener(onClickListener);
        findViewById(R.id.btnStop).setOnClickListener(onClickListener );
    }
    /**
     * 此方法是开始录制语音信息
     */
    public void recordStart() {
        
        File dir=new File(Environment.getExternalStorageDirectory(), "sound");
        if (!dir.exists()) {
            dir.mkdirs();
        }
        
        File file=new File(dir, System.currentTimeMillis()+".amr");
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        mediaRecorder=new MediaRecorder();
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB);
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);
        mediaRecorder.setOutputFile(file.getAbsolutePath());
        
        try {
            
            mediaRecorder.prepare();
            
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        mediaRecorder.start();
    }
    
    /**
     * 此方法是停止录制语音信息
     */
    public void recordStop() {
        
        mediaRecorder.stop();
        mediaRecorder.reset();
        mediaRecorder.release();
        
    }

在我们最后不要忘了在配置文件中添加相应的使用权限

原文地址:https://www.cnblogs.com/YangMT/p/4744103.html