在BlackBerry上播放声音会出错

时间:2010-12-19 17:44:40

标签: java blackberry audio mp3 blackberry-simulator

我无法在一个非常小的应用程序中播放一个简短的MP3文件,我正在写这个应用程序来学习如何为BlackBerry开发。

因为我是BlackBerry开发的新手,我已经将我的应用程序的Eclipse项目上传到http://stroke.sampablokuper.com/stroke.zip,因为我不知道问题与我的Java编程有关,还是我已经奠定了我的项目中的资源,或其他东西。

这是一个非常小的项目 - 只有一个Java文件&三个媒体文件 - 所以请通过查看您是否可以在计算机上的Curve 8520模拟器中无误地运行它来帮助我。 (这是专为8520而设计的,因为那是我朋友的手机;我自己也没有BB! -

这个想法是当用户在轨迹球/打击垫上按下/向下滚动时,会播放声音,但是当前而不是声音,我只是收到一条错误消息: javax.microedition.media .MediaException

我试过调试这个,但正如我所说,我是BB开发的新手,所以我真的不知道如何理解我从设置的断点中得到的信息。

请告诉我我哪里出错了?

我真的想在圣诞节前完成这件事;请帮忙!

提前致谢:)

编辑:这是代码的相关部分,尽可能地删除:

public boolean navigationMovement(int dx, int dy, int status, int time) {
    if (dx == 0 && dy == 1)// DOWN
    {
        makeNoise("growl");
    }
    return true;
}

private void makeNoise(String action) {
    if (action == "growl") {
        Dialog.alert("GROWL");
        try 
        {
            Player p = javax.microedition.media.Manager.createPlayer("growl.mp3");
            p.realize();
            VolumeControl volume = (VolumeControl)p.getControl("VolumeControl");
            volume.setLevel(30);
            p.prefetch();
            p.start();

        }
        catch(MediaException me)
        {
            Dialog.alert(me.toString());
        }
        catch(IOException ioe)
        {
            Dialog.alert(ioe.toString());
        }
    }
    invalidate();
}

进一步编辑我删除了下载项目的链接,因为问题确实出现在代码中,现在无论如何都要解决了。

2 个答案:

答案 0 :(得分:0)

问题是传递给.createPlayer方法的字符串需要是一个URI。

我在最终放弃之前尝试了许多变体file:///growl.mp3(如果有人知道用于指向BlackBerry App中文件的正确URI语法,请发表评论!)并着手解决此问题:

InputStream is = getClass().getResourceAsStream("growl.mp3");
Player p = javax.microedition.media.Manager.createPlayer(is,"audio/mp3");

相比之下,这有点夸张,但至少它有效!

答案 1 :(得分:0)

如果你在SDCard上有mp3文件,你的URI应该是file:///SDCard/<file>.mp3但如果你是从应用程序播放那么getResourceAsStream就是答案