我的应用程序中有关于播放wav文件的问题。
这是我的错误:
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)
这是我的代码:
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(); }
设备配置:CLDC-1.1
设备配置文件MIDP 2.0
答案 0 :(得分:1)
您获得的错误消息有足够的信息来确定代码中出错的地方。
仔细看看:
java.lang.IllegalArgumentException
at javax.microedition.media.Manager.createPlayer()...
它说Manager.createPlayer()
出了问题。从您的代码中可以看出,您使用方法Manager.createPlayer(java.io.InputStream stream, java.lang.String type)
。
如果您针对所使用的方法(available online)查看 API文档,则会在发生此异常时找到解释:
Throws:
java.lang.IllegalArgumentException - Thrown if stream is null.
上述表示传递给方法的stream
参数(代码中为is
)为空。
您可以在初始化is
后立即添加一些日志记录,以便更轻松地调试此问题:
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) + "]");
这样,在模拟器中运行MIDlet时,您将看到is
是否按预期进行了初始化。
实际上,查看代码我猜你在文件名中输了一个拼写错误传递给getResourceAsStream:“/ tes.wav”看起来像是错误输入的“/ test。 WAV“即可。