zoukankan      html  css  js  c++  java
  • 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();
            
        }

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

  • 相关阅读:
    吃甘蔗(中等,模拟)
    jquery对象里面的context参数
    event对象的使用注意事项
    EcmaScript源码
    对js运算符“||”和“&&”的总结
    浏览器滚动条样式
    浏览器的重绘与重排
    input[checkbox],input[radiobox]的一些问题
    height:100%
    Sublime Text 3 多行游标
  • 原文地址:https://www.cnblogs.com/YangMT/p/4744103.html
Copyright © 2011-2022 走看看