播放文件 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的主要内容,如果未能解决你的问题,请参考以下文章

J2me 应用程序在多个时间文件播放时出现内存不足异常

html如何播放wav文件?

J2me Player,一个接一个地播放 MP3 文件

.wav 文件格式的频道是啥?播放 wav 文件时是不是所有频道同时播放?

wav 可以在网上播放吗

用c或c++播放wav文件,怎么实现