Android开发(17) 录音和播放音频

需求

使用android手机录音

了解MediaRecorder

 mRecorder = new MediaRecorder();

mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(newFileName());
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
    mRecorder.prepare();
} catch (IOException e) {
    Log.e(LOG_TAG, "prepare() failed");
}
mRecorder.start();

步骤

  1. 设定声音来源。这里指定为 麦克风
  2. 指定输出格式 。
  3. 指定输出文件。
  4. 指定音频编码格式。
  5. 预备。
  6. 启动录音。

代码

配合启动录音的过程,就会有终止录音的过程,代码:

mRecorder.stop();

mRecorder.release();
mRecorder = null;
结束,并释放资源。

播放

录音完成后,总得要听听吧。我们看播放的过程:

mPlayer = new MediaPlayer();

try {
    mPlayer.setDataSource(fileName);
    mPlayer.prepare();
    mPlayer.start();
} catch (IOException e) {
    Log.e(LOG_TAG, "prepare() failed");
}

终止播放呢

 mPlayer.release();
 mPlayer = null;

完整代码

class SoundRecorder {   
MediaRecorder mRecorder;

    boolean isRecording;

    public void startRecording() {
        mRecorder = new MediaRecorder();
        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        mRecorder.setOutputFile(newFileName());
        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        try {
            mRecorder.prepare();
        } catch (IOException e) {
            Log.e(LOG_TAG, "prepare() failed");
        }
        mRecorder.start();

    }

    public void stopRecording() {
        mRecorder.stop();
        mRecorder.release();
        mRecorder = null;
    }

    public String newFileName() {
        String mFileName = Environment.getExternalStorageDirectory()
                .getAbsolutePath();

        String s = new SimpleDateFormat("yyyy-MM-dd hhmmss")
                .format(new Date());
        return mFileName += "/rcd_" + s + ".3gp";
    }
}


 

  public class SoundPlayer {  
    MediaPlayer mPlayer;


    public void startPlaying(String fileName) {
        mPlayer = new MediaPlayer();
        try {
            mPlayer.setDataSource(fileName);
            mPlayer.prepare();
            mPlayer.start();
        } catch (IOException e) {
            Log.e(LOG_TAG, "prepare() failed");
        }
    }

    public void stopPlaying() {
        mPlayer.release();
        mPlayer = null;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值