Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在BlackBerry上播放声音会出错_Java_Blackberry_Audio_Mp3_Blackberry Simulator - Fatal编程技术网

Java 在BlackBerry上播放声音会出错

Java 在BlackBerry上播放声音会出错,java,blackberry,audio,mp3,blackberry-simulator,Java,Blackberry,Audio,Mp3,Blackberry Simulator,我在编写一个非常小的应用程序来学习如何为黑莓开发一个短的MP3文件时遇到了麻烦 因为我是BlackBerry开发的新手,我已经将应用程序的Eclipse项目上传到了,因为我不知道问题是否出在Java编程上,或者我在项目中配置资源的方式,或者其他什么 这是一个非常小的项目-只有一个Java文件和三个媒体文件-所以请帮助我看看你是否可以在你的计算机上的Curve 8520模拟器中运行它而不会出错。(它是为8520设计的,因为那是我朋友的手机;我自己还没有BB手机呢!) 这个想法是,当用户按下/滚动轨

我在编写一个非常小的应用程序来学习如何为黑莓开发一个短的MP3文件时遇到了麻烦

因为我是BlackBerry开发的新手,我已经将应用程序的Eclipse项目上传到了,因为我不知道问题是否出在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();
}

进一步编辑我删除了下载项目的链接,因为问题似乎确实与代码有关,现在已经解决了。

问题原来是传递给.createPlayer方法的字符串需要是URI

我尝试了许多类似的变化
file:///growl.mp3
在最终放弃之前(如果有人知道指向BlackBerry应用程序中文件的正确URI语法,请发表评论!)并解决以下问题:

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

相比之下,它有点粗糙,但至少它能工作

如果SD卡上有mp3文件,您的URI应该是
file:///SDCard/.mp3
但如果您是从应用程序中播放它,那么答案就是
getResourceAsStream

我认为要求某人下载整个项目并将其导入Eclipse太过分了。因为您得到了一个MediaException,所以您的项目布局可能没有问题。发布用户按下“向下”按钮时执行的相关代码。这很公平。完成,并将您的有用评论向上投票:)