Bonjour tout le monde,
J'ai un petit soucis avec mon application Android.
J'ai un tchat dans mon application et je cherche à implémenter des messages vocaux.
J'ai un problème assez bizarre..
J'ai la même application sur iPhone (tout fonctionne).
Lorsque je suis sur iOs, je fais un message vocal et je l'envoie dans la discussion.
Le message vocal est écoutable sur iOs mais pas sur Android.
A l'inverse, lorsque je fais un message vocal sur Android, il est bien lisible sur iOs.
Lorsque j'accède a la conversation sur Android, si c'est un message vocal, je télécharge l'audio sur le téléphone (pour pouvoir le lire n'importe quand, même sans connexion plus tard).
Le fichier audio est télécharger dans le répertoire : /storage/emulated/0/Android/data/MON_APPLI/files/audio_03-03-2021_16-02-22.m4a
Le fichier audio fait bien la bonne taille (donc je suppose qu'il a bien été télécharger via le serveur... mais je ne peux pas vérifier).
Voici la fonction pour lire mon audio via son chemin sur le téléphone :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 private void playAudio(String chemin){ MediaPlayer mp = new MediaPlayer(); try { mp.setDataSource(chemin); mp.prepare(); mp.start(); } catch (Exception e) { e.printStackTrace(); } }
Lors de la lecture d'un fichire audio (venant d'Android) sous Android, ça fonctionne.
Lors de la lecture du fichier audio (venant d'iOs) sous Android, j'ai cette erreur :
2021-03-03 17:15:30.568 6847-6847/fr.iremos.connect V/MediaPlayerNative: setDataSource(95, 0, 576460752303423487)
2021-03-03 17:15:30.574 6847-6847/fr.iremos.connect V/MediaPlayerNative: setVideoSurfaceTexture
2021-03-03 17:15:30.574 6847-6847/fr.iremos.connect V/MediaPlayerNative: prepare
2021-03-03 17:15:30.581 6847-9366/fr.iremos.connect V/MediaPlayerNative: message received msg=100, ext1=1, ext2=-1010
2021-03-03 17:15:30.581 6847-9366/fr.iremos.connect E/MediaPlayerNative: error (1, -1010)
2021-03-03 17:15:30.581 6847-9366/fr.iremos.connect V/MediaPlayerNative: signal application thread
2021-03-03 17:15:30.581 6847-6847/fr.iremos.connect V/MediaPlayerNative: prepare complete - status=1
Je n'arrive pas à comprendre pourquoi j'ai une erreur (1, -1010)
Le fichier existe bien sur le téléphone mais j'ai l'impression qu'il est corrompu.
Pourquoi le fichier audio télécharger depuis le serveur serait corrompu sur Android et pas sur iOs ? (ils appellent tout les 2 la même URL pour télécharger l'audio sur le tel).
Comment récupérer le fichier audio ?
Je ne peux pas naviguer dans ce répertoire directement sur le téléphone.
J'ai tenté de faire une fonction pour me l'envoyer via le partage sous Android mais vu que le fichier semble corrompu, il ne veut jamais l'envoyer.
Par contre, ça fonctionne bien avec d'autres fichiers lorsqu'il ne semble pas corrompu.
Ma fonction de partage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 File f = new File(cheminDeMonVocal); // /storage/emulated/0/Android/data/MON_APPLI/files/audio_03-03-2021_16-02-22.m4a if(f.exists()){ // le fichier existe Intent intentShareFile = new Intent(Intent.ACTION_SEND); intentShareFile.setType(URLConnection.guessContentTypeFromName(f.getName())); intentShareFile.putExtra(Intent.EXTRA_STREAM, Uri.parse(f.getAbsolutePath())); startActivity(Intent.createChooser(intentShareFile, "Share File")); } else{ // le fichier n'existe pas ! }
Avez-vous une idée de comment je peux récupérer le fichier audio télécharger dans le dossier ?
Ou encore mieux, comment résoudre l'erreur de lecture ?
Merci de votre aide
Partager