2012-07-12 3 views
1

J'ai eu un problème à propos de jouer le fichier wav dans mon application.fichier de lecture wav j2me - IllegalArgumentException à Manager.createPlayer()

Ceci est mon erreur:

java.lang.IllegalArgumentException 
at javax.microedition.media.Manager.createPlayer(), bci=8 
at Tajwid.Tajwid.run(Tajwid.java:649) 
at Tajwid.Tajwid.actionPerformed(Tajwid.java:186) 
at com.sun.lwuit.util.EventDispatcher.fireActionSync(), bci=19 
at com.sun.lwuit.util.EventDispatcher.fireActionEvent(EventDispatcher.java:257) 

Voici mon code:

public void run() { 
    try { 
     InputStream is = getClass().getResourceAsStream("/tes.wav"); 
     player = Manager.createPlayer(is, "audio/x-wav"); 

     player.realize(); 
     // get volume control for player and set volume to max 
     vc = (VolumeControl) player.getControl("VolumeControl"); 
     if (vc != null) { 
      vc.setLevel(100); 
     } 
     player.prefetch(); 
     player.start(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

Configuration de l'appareil: CLDC-1.1
profil Device MIDP 2.0

+3

Quel est votre problème? Avez-vous eu une exception? –

+0

Mon fichier wav ne peut pas jouer, quel est le problème? –

+1

Comme votre code semble correct et en supposant que vous n'avez pas eu une exception. Je pense que le problème est avec votre fichier ou avec votre appareil (il ne peut pas jouer wav). Veuillez appeler System.getProperty ("audio.encodings") et voir ce que vous pouvez jouer. –

Répondre

1

message d'erreur que vous avez a suffisamment d'informations pour comprendre ce qui s'est mal passé dans le code.

Regardez un peu plus près:

java.lang.IllegalArgumentException 
    at javax.microedition.media.Manager.createPlayer()... 

Il dit quelque chose a mal tourné dans Manager.createPlayer(). De votre code, il est évident que vous utilisez la méthode Manager.createPlayer(java.io.InputStream stream, java.lang.String type).

Si vous regardez dans, vous trouverez l'explication lorsque cette exception se produit documentation de l'API pour la méthode que vous utilisez (available online):

Throws: 
     java.lang.IllegalArgumentException - Thrown if stream is null. 

ci-dessus signifie que le paramètre stream (is dans votre code) passé à la méthode est nul.

Vous pouvez ajouter un peu de journalisation juste après l'initialisation du is pour déboguer cette question plus facile:

InputStream is = getClass().getResourceAsStream("/tes.wav"); 
// add some logging to see if initialization was OK or not: 
System.out.println("input stream is null: [" + (is == null) + "]"); 

De cette façon, lors de l'exécution de votre MIDlet dans l'émulateur, vous verrez si is a été initialisées comme prévu ou non.

En fait, en regardant le code, je suppose que vous avez fait une faute de frappe dans le nom de fichier est passé à getResourceAsStream: « /tes.wav » ressemble à une mauvaise typé « /test.wav ».

+0

merci mr Gnat ... –

+0

@MuhamadBurhanudin vous êtes les bienvenus. Dans le cas où vous êtes intéressé, vous pouvez jeter un oeil à [instructions expliquant comment accepter une réponse fonctionne à Stack Overflow] (http://meta.stackexchange.com/a/5235/165773) – gnat

+1

J'ai eu un problème de réponse, vérifier ici: [lien] http://burhanudin.web.id/programing/java/play-audio-with-j2me [/ link] –