2012-04-23 41 views
0

我需要通过黑莓设备的扬声器播放Alert.startAudio()而不是耳机。如何通过手机扬声器播放Alert.startAudio()?

我知道我可以通过AudioPathControl接口更改音频路径,但我不知道如何获取AudioPathControl的实例。

我发现一个LINK关于如何在黑莓知识库上做到这一点,但它只告诉我如何使用播放器类,这是我不想做的。有没有办法获得当前应用程序的AudioPathControl实例?

我宁愿以编程方式播放音调,而不是包含我自己的声音文件。我找到了下面的代码片段。

Player p = javax.microedition.media.Manager.createPlayer(javax.microedition.media.Manager.TONE_DEVICE_LOCATOR); 
p.realize(); 
ToneControl tc = (ToneControl) p.getControl("ToneControl"); 
AudioPathControl apc = (AudioPathControl) p 
.getControl("AudioPathControl"); 
apc.setAudioPath(AudioPathControl.AUDIO_PATH_HANDSFREE); 
tc.setSequence(mySequence); 
p.start(); 

但问题是,apcnull并引发Exception。任何解决方案

回答

0

查看Where Does the Sound Go?(来自谷歌图书预览),从高级BlackBerry 6开发者Chris King

+0

这很好。我已经知道如何做到这一点。事情是,我宁愿不包括我自己的音乐文件来节省空间。我宁愿以编程方式播放音调。我用另一种技术更新了我的问题,但我仍然无法使用。 – 2012-04-23 10:26:17

+0

在您更新的代码中,您可以合并http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/800332/1089414/How_To_-_Specify_Audio_Path_Routing.html?nodeid=1326675&vernum=0中使用的代码片段即迭代所有返回的控件并检查它们的类型。如果不支持Control,则返回一个零长度的数组(来自API doc)。 – Rupak 2012-04-23 11:20:31

+0

我刚试过。它不工作。它仍然是空的。 – 2012-04-23 12:04:59

相关问题