Итак, как следует из названия, я получаю исключение остановки mediaRecorder -1007, однако на самом деле это не так.
Чтобы было ясно, мой вопрос заключается в том, как мне избежать ошибок, подобных указанным, а также записать звук наилучшего качества для устройства, на котором оно работает.
Мне нужна возможность записывать высококачественный звук на любое устройство Android с микрофоном >=API16.
Вот код, который я использую, включая то, что работало до того, как было закомментировано:
public class RecordingHandler {
private static MediaRecorder recorder;
static void beginRecording(String output) throws Exception {
ditchMediaRecorder();
File outFile = new File(output);
if (outFile.exists())
outFile.delete();
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
recorder.setOutputFile(output);
try {
recorder.prepare();
recorder.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//this was working before
// recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
// recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
// recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
// recorder.setOutputFile(output);
//
// try {
// recorder.prepare();
// } catch (IOException e) {
// Log.e("Recording Handler", "prepare() failed");
// }
// recorder.start();
}
static void ditchMediaRecorder() {
// if we have the recorder, release it
if (recorder != null)
recorder.release();
}
static void stopRecording() {
if (recorder != null) {
recorder.stop(); //error happening here
recorder.reset();
recorder.release();
recorder = null;
}
}
}
Текущая ошибка:
05-02 21:00:29.443: E/MediaRecorder(28252): stop failed: -1007
05-02 21:00:29.443: E/InputEventReceiver(28252): Exception dispatching input event.
05-02 21:00:29.443: E/MessageQueue-JNI(28252): Exception in MessageQueue callback: handleReceiveCallback
05-02 21:00:29.443: E/MessageQueue-JNI(28252): java.lang.RuntimeException: stop failed.
05-02 21:00:29.443: E/MessageQueue-JNI(28252): at android.media.MediaRecorder.stop(Native Method)
05-02 21:00:29.443: E/MessageQueue-JNI(28252): at com.appulse.beatbox.RecordingHandler.stopRecording(RecordingHandler.java:56)
Если ваш ответ содержит слова "THREE_GPP" или "AMR_NB", он просто не будет принят, потому что звук из него - полная чушь.
Спасибо всем, кто может помочь заранее, я извиняюсь, если выгляжу немного злым, это просто очень раздражает.