SoundRecorder

最近开发了简易的录音的功能,回顾记录一下。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------


    private void startRecord() {
        mExecutorService.submit(new Runnable() {
            @Override
            public void run() {
                releaseRecorder();
                recordOperation();
            }
        });
    }

    private void recordOperation() {
        mMediaRecorder = new MediaRecorder();
        mAudioFile = new File(mFilePath + name + ".m4a");
        mAudioFile.getParentFile().mkdirs();
        try {
            mAudioFile.createNewFile();
            //Mic采集
            mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
            //格式
            mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
            //采样频率
            mMediaRecorder.setAudioSamplingRate(44100);
            //编码格式
            mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
            //编码频率
            mMediaRecorder.setAudioEncodingBitRate(96000);
            //保存
            mMediaRecorder.setOutputFile(mAudioFile.getAbsolutePath());
            mMediaRecorder.prepare();
            mMediaRecorder.start();
            startTime = System.currentTimeMillis();
            Log.i(TAG, "---------------开始录音!!!");
        } catch (IOException e) {
            e.printStackTrace();
            ru.recordFail();
        }
    }

   private void stopRecord() {
        mMediaRecorder.stop();
        releaseRecorder();
    }

    private void recordFail() {
        mAudioFile = null;
    }

   /private void releaseRecorder() {
        if (null != mMediaRecorder) {
            mMediaRecorder.release();
            mMediaRecorder = null;
        }

    }

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



private void startPlay(String mFile) {
        File file = new File(mFile);
        try {
            FileInputStream fis = new FileInputStream(file);
            mMediaPlayer = new MediaPlayer();
            //设置数据
            mMediaPlayer.setDataSource(fis.getFD());
            mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){

                @Override
                public void onCompletion(MediaPlayer mediaPlayer) {
                    playEndOrFail(true);
                }
            });
            mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
                @Override
                public boolean onError(MediaPlayer mediaPlayer, int i, int i1) {
                    playEndOrFail(true);
                    return true;
                }
            });
            mMediaPlayer.setVolume(1,1);
            mMediaPlayer.setLooping(false);
            mMediaPlayer.prepare();
            mMediaPlayer.start();
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
            Log.i(TAG,"----------  IOException :" + e.toString());
            playEndOrFail(false);
        }

    }

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值