У кого-нибудь были проблемы с воспроизведением записанного аудиофайла? Я сделал приложение голосовой почты Firebase. Я хорошо записываю звук, но во время воспроизведения ничего не слышу, я проверил громкость устройства и даже программировал максимальную громкость. звук до сих пор не слышен, я вообще ничего не слышу. У вас есть идеи для меня?
Вот код регистрации голоса:
private void startRecording() {
AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
am.setStreamVolume(AudioManager.STREAM_MUSIC, am.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0);
Log.d("volume MANAGER" , " volumeManager " + am.getStreamMaxVolume(AudioManager.STREAM_MUSIC));
outputfile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/new audio.mp3";
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setAudioEncodingBitRate(128000);
mediaRecorder.setAudioSamplingRate(96000);
mediaRecorder.setOutputFile(outputfile);
try {
mediaRecorder.prepare();
} catch (IOException e) {
e.printStackTrace();
}
try {
mediaRecorder.start();
mediaRecorder.getMaxAmplitude();
Log.d("volume actuel" , " volume" + mediaRecorder.getMaxAmplitude());
} catch (IllegalStateException e) {
Log.d(" pb start", "start");
}
Log.d("volume actuel" , " volume" + mediaRecorder.getMaxAmplitude());
}
Код остановленной записи:
private void stopRecording () {mediaRecorder = new MediaRecorder ();
try {
mediaRecorder.stop();
Log.d("Stop recording ", "stop recording");
} catch (IllegalStateException ie) {
ie.getMessage();
}
mediaRecorder.release();
mediaRecorder = null;
}
Код для начала воспроизведения записи: private void play_songs () {AudioManager am = (AudioManager) getSystemService (Context.AUDIO_SERVICE ); am.setStreamVolume (AudioManager.STREAM_MUSI C, am.getStreamMaxVolume (AudioManager.STREAM_MUSI C), 0);
MediaPlayer mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(FriendList.this, Uri.parse(outputfile));
mediaPlayer.prepare();
mediaPlayer.start();
if (mediaPlayer.isPlaying()){
mediaPlayer.setVolume(150,150);
Toast.makeText(this, "Start playing", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this, "audio doesn't play", Toast.LENGTH_SHORT).show();
}
} catch (IOException e) {
e.printStackTrace();
Log.d("Prepare failed.: status", " ALORS"+ equals(e.getMessage()));
Log.d("Catch De play song", "message " + e.getMessage());
}
}
Вот код для выполнения метода, когда пользователь нажимает кнопку записи:
btnrecoder.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(FriendList.this, new String[]{Manifest.permission.RECORD_AUDIO},
FriendList.RECORD_AUDIO);
} else {
startRecording();
btnrecoder.setText(" Recording start...");
}
} else if (event.getAction() == MotionEvent.ACTION_UP) {
stopRecording();
UploadFile();
btnrecoder.setText(" Recording stopped...");
}
return false;
}
});
Я использовал Log.d («громкость акту», «громкость» + mediaRecorder.getMaxAmplitude ()); Начинается запись метода, чтобы проверить громкость при записи, и я получаю это: громкость 0