Android 一个类实现录音与播放(MediaRecorder)

时间:2025-03-08 22:41:07
public class MainActivity extends AppCompatActivity { private static final String LOG_TAG = "MainActivity"; //语音文件保存路径 private String FileName = null; //界面控件 private Button startRecord; private Button startPlay; private Button stopRecord; private Button stopPlay; //语音操作对象 private MediaPlayer mPlayer = null; private MediaRecorder mRecorder = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); requestPermission();//请求麦克风权限 //开始录音 startRecord = findViewById(R.id.startRecord); //绑定监听器 startRecord.setOnClickListener(new startRecordListener()); //结束录音 stopRecord = findViewById(R.id.stopRecord); stopRecord.setOnClickListener(new stopRecordListener()); //开始播放 startPlay = findViewById(R.id.startPlay); //绑定监听器 startPlay.setOnClickListener(new startPlayListener()); //结束播放 stopPlay = findViewById(R.id.stopPlay); stopPlay.setOnClickListener(new stopPlayListener()); //设置sdcard的路径 FileName = Environment.getExternalStorageDirectory().getAbsolutePath(); FileName += "/test.mp3"; } private void requestPermission() { PermissionGen.with(this) .addRequestCode(100) .permissions(Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.WAKE_LOCK) .request(); } //开始录音 class startRecordListener implements View.OnClickListener { @Override public void onClick(View v) { mRecorder = new MediaRecorder(); mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mRecorder.setOutputFile(FileName); mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); try { mRecorder.prepare(); mRecorder.start(); } catch (IOException e) { Log.e(LOG_TAG, "prepare() failed ---" + e.getMessage()); } } } //停止录音 class stopRecordListener implements View.OnClickListener { @Override public void onClick(View v) { mRecorder.stop(); mRecorder.release(); mRecorder = null; } } //播放录音 class startPlayListener implements View.OnClickListener { @Override public void onClick(View v) { mPlayer = new MediaPlayer(); try { mPlayer.setDataSource(FileName); mPlayer.prepare(); mPlayer.start(); } catch (IOException e) { Log.e(LOG_TAG, "播放失败"); } } } //停止播放录音 class stopPlayListener implements View.OnClickListener { @Override public void onClick(View v) { mPlayer.release(); mPlayer = null; } } }