我正在写一个使用" Flite"文本到语音引擎宣布特定事件。 Flite引擎使用AVAudioPlayer实例在呈现语音音频后播放。为了好玩,我决定在我的应用程序中添加一些简单的控件,以允许用户在我的应用程序使用MPMusicPlayerController(当然)运行时控制iPod播放(下一个,上一个,播放/暂停和音量 - 基础知识)。
我遇到的问题是,当我使用MPMusicPlayerController调整iPod音量时,我的所有音频都会受到影响,包括其他音效和语音音频。在播放声音之前,我将这些其他音频播放器(AVAudioPlayer实例)的音量设置为1.0,但似乎无论iPod播放器音量设置为什么音量总是上限...
这是正常的吗?我该怎么做才能绕过它?无论iPod播放器的音量如何,我都希望我的应用程序的音频能够以系统满音量播放。 (示例:用户已将系统音量设置为设备最大值的80%。我希望我的应用程序以80%的100%播放音频,同时允许用户将iPod音频播放调整为0-100 80%的百分比。)注意:我对#34;躲避"不感兴趣。但在我的应用程序运行时始终将iPod音量设置为较低(背景音乐)。
我也有问题,有时候 - 当你第一次启动应用程序并按下iPod播放器上的播放(发送[播放器播放]呼叫)时,iPod没有响应。如果我按下主页按钮,进入iPod应用程序然后开始播放,一旦返回我的应用程序,它工作正常。与此有什么关系?
提前感谢您的帮助!!
答案 0 :(得分:1)
这可能与您指定的音频会话类别有关。查看Audio Session Programming Guide,看看您是否选择了正确的类别。
答案 1 :(得分:0)
侧面的音量按钮可控制系统音量,并可扩展应用程序声音的音量。
我猜它被认为是主音量控制。
答案 2 :(得分:0)
您可以使用AVItem的setVolume
设置特定样本或声音的音量[item setVolume]
您可以创建一个AVItem来引用应用程序或iPhone上的现有声音文件。代码非常简单,看起来像这样 - >
AVItem * item [[AVItem alloc] initWithPath:@“文件”]; [item setVolume];
顺便说一句,这不会影响音频通道的其余部分(由某些AVController对象实例化),你在代码中设置的音量将不会显示在你的屏幕上,所以我不确定你是否可以改变它在运行时。