Août 19

En juin, j’avais publié un article expliquant comment intégrer un code QR dynamique à vos applications Android… cette fois, suite à des demandes que j’ai eu après avoir publié l’application Android W.Freebox Messages Player, je vous offre un bout de code sans prétention qui permet de lire des fichiers wavW encodé au format a-law PCMW.
Il a le mérite de fonctionner (testé uniquement avec Froyo) même s’il est probablement facilement améliorable. (lol)
Je n’ai pas réinventé la roue, je me suis contenté de mettre ensemble des bouts de codes trouvés au fil du Web…

Je me contente de faire un copier/coller de mon code en mettant en commentaire les lignes qui sont purement liées à mon application. Si vous avez des questions, vous pouvez poster des commentaires… j’essayerai d’y répondre ;)
Ce premier bout de code permet de faire lire un son à Android en passant directement par un tableau de bytes (Source). Il fait appel à FreeConverter.free2pcm qui est dans le second bloc de code…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
  private void PlayAudioFileViaAudioTrack(Uri uri) throws IOException {
    if (uri == null) {
//      sError = getString(R.string.NullFilepath);
      return;
    }

    byte[] byteData = null;
    byte[] byteDataPCM = null;
    int iSize = -1;

    ContentResolver cr = this.getContentResolver();

    InputStream is = cr.openInputStream(uriFile);
    try {
      byteData = new byte[is.available()];
      iSize = is.read(byteData);
      is.close();

      byteDataPCM = new byte[iSize * 2]; // Pour éviter de pourrir encore plus le son, je convertis du 8kHz en 16kHz... d'où le x2

//      FreeConverter.free2pcm(byteData, 0, byteDataPCM, 0, iSize, false, (sbVolume.getProgress() + 1));
      FreeConverter.free2pcm(byteData, 0, byteDataPCM, 0, iSize, false, 1);

      int intSize = android.media.AudioTrack.getMinBufferSize(8000,
          AudioFormat.CHANNEL_CONFIGURATION_MONO,
          AudioFormat.ENCODING_PCM_16BIT);
      AudioTrack at = new AudioTrack(AudioManager.STREAM_DTMF, 8000,
          AudioFormat.CHANNEL_CONFIGURATION_MONO,
          AudioFormat.ENCODING_PCM_16BIT, intSize, AudioTrack.MODE_STREAM);
      at.setStereoVolume(1, 1);
      if (at != null) {
        at.play();
        at.write(byteDataPCM, 0, byteDataPCM.length);
        at.stop();
        at.release();
      } else {
//        sError = getString(R.string.AudioTrackNotInitialised);
      }

    } catch (FileNotFoundException e) {
//      sError = getString(R.string.FileNotFoundException);
    }
  }
Share

Pages : 1 2

Lien permanent vers Lire un fichier audio au format a-law PCM avec Froyo Rédigé par Whiler \\ Tags : , , , ,

Une réponse pour “Lire un fichier audio au format a-law PCM avec Froyo”

Laisser une réponse

(requis)

(requis)

*

Notifiez-moi les commentaires à venir via email. Vous pouvez aussi vous abonner sans commenter.

;) (lol) (y) |-( (hi) 8-) (angel) :s (clap) (bow) (tmi) (:| plus »