1

我在我的应用程序中播放 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

4

1 回答 1

1

您收到的错误消息有足够的信息来确定代码中出了什么问题。

再仔细看看:

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

它说出现了问题Manager.createPlayer()。从您的代码中,很明显您使用了 method Manager.createPlayer(java.io.InputStream stream, java.lang.String type)

如果您查看您使用的方法的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"

于 2012-07-16T02:37:26.430 回答