package com.sdxzt.xueliangapp_v2.for_police;
import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.content.pm.PackageManager;
import android.media.MediaRecorder;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.sdxzt.xueliangapp_v2.R;
import com.sdxzt.xueliangapp_v2.base.CountProgress;
import java.io.File;
import java.io.IOException;
public class AudioActivity extends AppCompatActivity {
private Button audioControl,audioPlay,countdownTimerBtn ,stopCountdownTimerBtn;
private CountProgress countProgress;
private boolean isStart = false;//状态
private MediaRecorder mediaRecorder = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e("AudioActivity", "onCreate");
setContentView(R.layout.activity_audio);
audioControl = findViewById(R.id.audio);
audioPlay = findViewById(R.id.audio_play);
getPermission();
audioControl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e("setOnClickListener", "onClick");
if (isStart) {
stopRecord();
audioControl.setText("开始录制");
isStart = false;
Log.e("setOnClickListener", "isStart=ture片段,设置按钮文本为开始录制,设置isStart为false");
}else{
startRecord();
audioControl.setText("停止录制");
isStart = true;
Log.e("setOnClickListener", "isStart=false片段,设置按钮文本为停止录制,设置isStart为true");
}
}
});
}
//开始录制
private void startRecord() {
Log.e("startRecord", "开始录制");
if (mediaRecorder == null) {
//为空,需创建,先准备路径
Log.e("startRecord", "创建文件路径");
File dir = new File(Environment.getExternalStorageDirectory(), "sound");
if(!dir.exists()){
dir.mkdirs();
Log.e("startRecord", "生成文件夹");
}
Log.e("dir路径", "=" + dir.getAbsolutePath());
File soundFile = new File(dir, System.currentTimeMillis() + ".amr");
if (!soundFile.exists()) {
try{
soundFile.createNewFile();
Log.e("startRecord", "生成.amr文件");
}catch (IOException e){
e.printStackTrace();
}
}
mediaRecorder = new MediaRecorder();//初始化
Log.e("startRecord", "初始化mediaRecorder,并设置输入源/输出格式/编码格式/输出路径");
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//音频输入源
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB);//设置输出格式
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);//设置编码格式
mediaRecorder.setOutputFile(soundFile.getAbsolutePath());//设置输出文件的路径
try{
mediaRecorder.prepare();
mediaRecorder.start();
Log.e("startRecord", "开始录制音频");
} catch (IOException e) {
e.printStackTrace();
}
} Log.e("startRecord", "录制中.....");
}
//停止录制,释放资源
private void stopRecord() {
Log.e("stopRecord", "停止录制,释放资源");
if (mediaRecorder != null) {
mediaRecorder.stop();
mediaRecorder.release();
mediaRecorder = null;
Log.e("startRecord", "释放资源完成");
}
}
//获取权限
private void getPermission(){
Log.e("getPermission", "获取权限逻辑判断");
if (Build.VERSION.SDK_INT >= 23) {
int REQUEST_CODE_CONTACT = 101;
String[] permissions = {Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
//验证是否许可权限
for (String str:permissions) {
if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {
//申请权限
this.requestPermissions(permissions,REQUEST_CODE_CONTACT);
Log.e("getPermission", "申请获取权限");
return;
}
}
}
}
}
录制音频
最新推荐文章于 2023-03-28 13:39:51 发布