播放文件 wav j2me - Manager.createPlayer() 处的 IllegalArgumentException
Posted
技术标签:
【中文标题】播放文件 wav j2me - Manager.createPlayer() 处的 IllegalArgumentException【英文标题】:play file wav j2me - IllegalArgumentException at Manager.createPlayer() 【发布时间】:2012-07-12 16:42:06 【问题描述】:我在应用程序中播放 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
【问题讨论】:
你的问题是什么?你有例外吗? 我的wav文件无法播放,怎么回事? 因为您的代码看起来是正确的,并且假设您没有遇到异常。我认为问题出在您的文件或设备上(它可能无法播放 wav)。请调用 System.getProperty("audio.encodings") 看看你能玩什么。 这是我的错误:javax.microedition.media.Manager.createPlayer() 处的 java.lang.IllegalArgumentException,Tajwid.Tajwid.Tajwid.run(Tajwid.java:649) 处的 bci=8。 Tajwid.actionPerformed(Tajwid.java:186) 在 com.sun.lwuit.util.EventDispatcher.fireActionSync(),bci=19 在 com.sun.lwuit.util.EventDispatcher.fireActionEvent(EventDispatcher.java:257) 【参考方案1】:您收到的错误消息包含足够的信息来确定代码中出了什么问题。
再仔细看看:
java.lang.IllegalArgumentException
at javax.microedition.media.Manager.createPlayer()...
它说Manager.createPlayer()
出了点问题。从您的代码中,很明显您使用了方法Manager.createPlayer(java.io.InputStream stream, java.lang.String type)
。
如果您查看您使用的方法的 API 文档 (available online),您会发现发生此异常时的解释:
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”。
【讨论】:
@MuhamadBurhanudin 欢迎您。有兴趣的可以关注instructions explaining how does accepting an answer work at Stack Overflow 我有答案问题,请看这里:[link]burhanudin.web.id/programing/java/play-audio-with-j2me[/link]以上是关于播放文件 wav j2me - Manager.createPlayer() 处的 IllegalArgumentException的主要内容,如果未能解决你的问题,请参考以下文章