Итак, как следует из заголовка, мое приложение продолжает падать: / Я включил все разрешения в Android Файл манифеста тоже
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.STORAGE"/>
Но в журнале ошибок я получаю эту ошибку
2020-02-19 18:36:15.578 26529-26529/com.example.recorder E/AudioRecording: prepare() failed
2020-02-19 18:36:15.578 26529-26529/com.example.recorder E/MediaRecorder: start called in an invalid state: 4
2020-02-19 18:36:15.581 26529-26529/com.example.recorder E/AndroidRuntime: FATAL EXCEPTION: main
Я не уверен, как решить эту проблему. Мой Java код следующий для кнопки записи
public class MainActivity extends AppCompatActivity {
private Button startbtn, stopbtn, playbtn, stopplay;
private MediaRecorder mRecorder;
private MediaPlayer mPlayer;
private static final String LOG_TAG = "AudioRecording";
private static String mFileName = null;
public static final int REQUEST_AUDIO_PERMISSION_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startbtn = (Button) findViewById(R.id.btnRecord);
stopbtn = (Button) findViewById(R.id.btnStop);
playbtn = (Button) findViewById(R.id.btnPlay);
stopplay = (Button) findViewById(R.id.btnStopPlay);
stopplay.setEnabled(false);
playbtn.setEnabled(false);
stopplay.setEnabled(false);
mFileName =
mFileName += "/AudioRecording.3gp";
startbtn.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onClick(View v) {
if (CheckPermissions()) {
stopbtn.setEnabled(true);
startbtn.setEnabled(false);
playbtn.setEnabled(false);
stopplay.setEnabled(false);
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile(mFileName);
try {
mRecorder.prepare();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
mRecorder.start();
Toast.makeText(getApplicationContext(), "Recording Started", Toast.LENGTH_LONG).show();
} else {
RequestPermissions();
}
}
});
Любая помощь будет принята с благодарностью, ура! :)