Мне нужно записывать и воспроизводить аудио-файл, я использую эти два кода миров:setDataSourceFD удалось .: статус = 0x80000000 играть файл ААС телефонов Samsung:
Для записи:
private void initRecorder() {
try {
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mRecorder.setOutputFile(RECORD_FILE_NAME);
mRecorder.prepare();
mRecorder.start();
} catch (IllegalStateException | IOException e) {
Utility.e("initRecorder: " + e.getMessage());
}
}
для игры:
try {
FileDescriptor fd = null;
FileInputStream fis = new FileInputStream(RECORD_FILE_NAME);
fd = fis.getFD();
if (fd != null) {
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(fd);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.prepare();
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
if (mPlayTime > 0) {
mMediaPlayer.seekTo(mPlayTime);
}
mMediaPlayer.start();
setStatus(STATUS_PLAYING);
}
});
mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mMediaPlayer.release();
RecordMomentActivity.this.mPlayTime = 0;
setStatus(STATUS_NOT_PLAYING);
}
});
}
} catch (Exception e) {
Utility.e("Exception: " + e.getMessage());
setStatus(STATUS_NOT_PLAYING);
}
}
и этот код прекрасно работает, запись и воспроизведение звука на Nexus 5 (A ndroid 6.0) и на LG G3 с Android 5.0. Но когда я использую телефон Samsung я получаю исключение:
setDataSourceFD не удалось .: статус = 0x80000000
ли кто-то столкнулись с такой проблемой? и знает, как я должен справиться с этим? Если нет, есть ли альтернатива, которую я могу использовать для записи и воспроизведения аудиофайлов?
Заранее спасибо.
Как я уже говорил в этом вопросе, одни и те же функции работают на Nexus 5 с ОС Android 6.0. Таким образом, это не относится к поврежденному файлу. Но какая-то проблема с устройствами Samsung. –
Так же, как и этот файл, и воспроизвести его на другом устройстве. –
Учтите, что некоторые устройства немного более «устойчивы» к небольшим ошибкам при использовании API, чем другие, и это очень верно в медиа API. Это была моя точка зрения. Служба MediaPlayer очень подвержена ошибкам из-за такого рода вещей. Вы останавливаете и отпускаете медиамагнитофон после того, как сделали запись, и перед тем, как открыть его для воспроизведения? Не могли бы вы поделиться этим кодом? –