我无法在一个非常小的应用程序中播放一个简短的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();
}
进一步编辑我删除了下载项目的链接,因为问题确实出现在代码中,现在无论如何都要解决了。
答案 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
就是答案