Я пытаюсь использовать AudioRecorder в Android Studio для записи с mi c. Тем не менее, мое приложение продолжает сбой и выдает ошибку, говоря «приготовить () не удалось» - PullRequest
0 голосов
/ 20 февраля 2020

Итак, как следует из заголовка, мое приложение продолжает падать: / Я включил все разрешения в 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();
            }
        }
    });

Любая помощь будет принята с благодарностью, ура! :)

...