Добрый вечер, дорогой всем, я использую Android studio и recyclerview для отображения списка аудио, записанных в хранилище Firebase. аудиозаписи, а также их отображение в окне реселлера прошли хорошо, но когда дело доходит до воспроизведения звука, возвращается ошибка (-1, 1004). Также ссылка моего аудио воспроизводится в chrome, но когда я пытаюсь воспроизвести ссылку непосредственно с setDataSource, чтение не проходит и возвращает меня (-1, 1004). Я попытался прочитать эту ссылку http://ia802508.us.archive.org/5/items/testmp3testfile/mpthreetest.mp3 напрямую с setDataSource, и это сработало. Проблема со звуковыми ссылками Firebase? большинство решений предлагают go для Exoplayer, но я в конце проекта, это последнее, что я скучаю. Спасибо, что отреагировали
Голос и код лекции: publi c void play_songs () {mediaPlayer = new MediaPlayer ();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mediaPlayer.setAudioAttributes(new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.setLegacyStreamType(AudioManager.STREAM_MUSIC)
.build());
} else {
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
}
try {
//
// URL de test : http://ia802508.us.archive.org/5/items/testmp3testfile/mpthreetest.mp3
Toast.makeText(context, link, Toast.LENGTH_SHORT).show();
Log.d("VERIFIONS link ", "CHANGEONS MESSAGE" + link);
mediaPlayer.setDataSource(link);
Log.d("APRES SETSOURCE ", "APRES SETSOURCE" );
//mediaPlayer.prepare();
mediaPlayer.prepareAsync();
Log.d("APRES PREPARE ASYNC", "APRES PREPARE ASYNC" );
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
//seekbar.setMax(mp.getDuration());
int tailleduseekbarre = mp.getDuration();
Log.d("DANS ON PREPARE", "DANS ON PREPARE" );
mp.start();
Log.d("APRES MP START ", "APRES MP START" );
Log.d(" TAG DURATION", " VRIFIONS LA DUREE " + mp.getDuration());
Log.d(" TAG tailleduseekbar", " VRIFIONS LA DUREE tailleduseekbar" + tailleduseekbarre);
}
});
mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mediaPlayer, int i, int i1) {
Toast.makeText(context, " Media player Error", Toast.LENGTH_SHORT).show();
return false;
}
});
PlayCycle();
seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (mediaPlayer != null && fromUser) {
mediaPlayer.seekTo(progress);
//CurrentTimer.setText(progress);
//Log.d(" AFFICHE", "PROGRSSIONS"+ String.valueOf(progress));
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
} catch (IOException e) {
e.printStackTrace();
Log.d("Prepare failed.: status", " ALORS" + equals(e.getMessage()));
Log.d("Catch De play song", "message " + e.getMessage());
}
}
Я получил аудио ссылки, выполнив :
private void UploadFile(){
int mtn = i++ ;
final StorageReference ref2 = storageReference.child("/Audio/").child(audionamePlus);
Uri uri = Uri.fromFile(new File(outputfile));
ref2.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Toast.makeText(FriendList.this, "Vocal saved into db storage", Toast.LENGTH_SHORT).show();
ref2.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String oui = getCurrentUser().getUid();
Log.d(TAG, "onSuccess: uri= " + uri.toString());
String link = uri.toString();
//String audioname = "audio2.mp3";
DocumentReference docRef2 = db.collection("AUDIO CHAT").document(oui);
String doId = docRef2.getId();
Log.d(" TAG DURATION2", " VRIFIONS LA DUREE22 " + tailleduseekbarre);
Audio_modele audio = new Audio_modele(doId, audionamePlus, elapsedMillis, link, tailleduseekbarre);
AudioHelper.getAudioCollection().add(audio).addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference documentReference) {
Toast.makeText(FriendList.this, " SAVE ", Toast.LENGTH_SHORT).show();
}
});
}
});
}
});
}
Помощь !!