Как убедиться, что при установленном флажке запись не начинается, пока кнопка не нажата. Таким образом, вы должны проверить и нажать кнопку, чтобы начать запись, если она не включена, и кнопка не должна записывать звук. Что я сделал, если флажок был установлен, начать запись немедленно. Мне нужно, если флажок установлен и кнопка щелкает, она начинает запись, при повторном нажатии кнопка должна прекратить запись.
toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
//Start Recording Audio
chkIos.isChecked();
// isChecked = true;
} else {
//Stop Recording Audio
onStop();
// isChecked = false;
}
}
});
public void addListenerOnChkIos() {
chkIos = (CheckBox) findViewById(R.id.SaveAudio);
chkIos.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//is chkIos checked?
if (((CheckBox) v).isChecked()) {
startRecording();
Toast.makeText(VoiceRecognitionActivity.this,
"My Message", Toast.LENGTH_LONG).show();
}
}
});
}
private void stopRecording() {
//Stop media recorder and set it to null for further use to record new audio
mediaRecorder.stop();
mediaRecorder.release();
mediaRecorder = null;
}
private void startRecording() {
//Get app external directory path
String recordPath = getBaseContext().getExternalFilesDir("/").getAbsolutePath();
//initialize filename variable with date and time at the end to ensure the new file wont overwrite previous file
recordFile = "File" + ".mp3";
//Setup Media Recorder for recording
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setOutputFile(recordPath + "/" + recordFile);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
try {
mediaRecorder.prepare();
} catch (IOException e) {
e.printStackTrace();
}
//Start Recording
mediaRecorder.start();
}
@Override
public void onStop() {
super.onStop();
if(isRecording){
stopRecording();
}
}