Android录音相关代码

权限申请:

    <uses-permission android:name="android.permission.RECORD_AUDIO"/><!--录音-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!--写数据-->

录音代码 [录音文件名不能包含英文冒号 会文件损坏]

    private void startRecording() {
        try {
            recorder = new MediaRecorder();// new出MediaRecorder对象
            recorder.setAudioSource(MediaRecorder.AudioSource.MIC);// 设置MediaRecorder的音频源为麦克风
            recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);// 设置MediaRecorder录制的音频格式
            recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); // 设置MediaRecorder录制音频的编码
            String recorderPath = Environment.getExternalStorageDirectory() + "/录音文件.mp3";//录音文件名不能包含英文冒号 会文件损坏
            recorder.setOutputFile(recorderPath);// 设置文件保存路径
            recorder.prepare();// 准备录制
            recorder.start();// 开始录制
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
停止录音

    private void stopRecording() {
        if (recorder != null) {
            recorder.stop();//停止捕获
            recorder.release();//释放资源
            recorder = null;
        }
    }
获取音频文件时长

    private int getDuration(String path) {
        try {
            MediaPlayer player = new MediaPlayer();
            player.setDataSource(path);
            player.prepare();//缓冲
            int duration = player.getDuration() / 1000;
            player.release();//释放资源
            player = null;
            return duration;
        } catch (Exception e) {
            return 0;
        }
    }
播放音频

    private void playRecoding(String path){
        try {
            MediaPlayer player = new MediaPlayer();
            player.setDataSource(path);
            player.prepare();//缓冲
            player.start();//开始或恢复播放
            player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer arg0) {
                    //播放结束事件
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
            //文件损坏
        }
    }
暂停播放

player.pause();//暂停
停止播放

player.stop();//停止
player.release();//释放资源
player = null;

获取当前播放时长

player.getCurrentPosition()
获取总时长

player.getDuration()















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值