2010-12-19 58 views
0

我正在写一个非常小的应用程序以播放短MP3文件,以便学习如何开发BlackBerry。在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(); 
} 

进一步编辑我已经删除了链接下载该项目,因为问题确实出现在代码中,现在已经解决了。

+1

我认为这是过分的要求别人来下载整个项目并将其导入蚀。既然你得到了一个MediaException,它可能不是你的项目布局的问题。发布用户按下“向下”按钮时正在执行的相关代码。 – 2010-12-19 18:27:25

+0

够公平的。完成,&你的有用评论upvoted :) – sampablokuper 2010-12-20 00:40:23

回答

0

如果您对SD卡的MP3文件,你的URI应该是file:///SDCard/<file>.mp3,但如果你是从应用程序打它,然后getResourceAsStream是答案

0

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

我试图沿着线file:///growl.mp3许多变化前最终放弃了(如果有人知道的指向黑莓应用程序中的文件正确的URI语法,请评论!)和安定在此:

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

相比之下,它有点蹩脚,但至少它是有效的!