强制向扬声器发出音频警报

Posted

技术标签:

【中文标题】强制向扬声器发出音频警报【英文标题】:Force audio alert to loud speaker 【发布时间】:2014-07-18 08:03:35 【问题描述】:

我有一个小应用程序。在这个应用程序中,我设置的每个特定时间扬声器都会发出噪音。

现在,我希望它通过内置扬声器发出噪音,即使设备中插入了耳机插孔。

我该怎么做?

【问题讨论】:

【参考方案1】:

您可以尝试以下代码在扬声器上播放代码。

同时检查this

希望这会对你有所帮助。

[[AVAudiosession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];


UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;

AudioSessionSetProperty (
                         kAudioSessionProperty_OverrideAudioRoute,
                         sizeof (audioRouteOverride),
                         &audioRouteOverride
                         );

【讨论】:

我使用了您上面的代码,但是当我插入耳机插孔时,声音不再响亮:( 插入耳机后,上面的代码在我的设备上运行良好。你可以试试这个链接-uihacker.blogspot.in/2013/08/… 当耳机插孔已插入时,此代码适用于我。如果扬声器发出噪音,然后我将耳机插入设备,它就会静音。 您可以查看此链接-***.com/questions/6922898/… 谢谢Shubhendu,我会再检查一遍:)【参考方案2】:

您必须在插入耳机后覆盖音频路由。您的应用可以在发生这种情况时请求音频会话通知,然后再次进行覆盖。

【讨论】:

【参考方案3】:

这对我有用。

+ (void)sessionAudioPort 
    UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
    AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
    UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
    AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);

【讨论】:

以上是关于强制向扬声器发出音频警报的主要内容,如果未能解决你的问题,请参考以下文章

iPhone音频播放:强制通过内部扬声器?

插入耳机时强制音频到扬声器?

如何在 iPhone 扬声器上强制播放音频?

有没有办法拦截从扬声器发出的声音,以便我可以插入基于 C#.NET 软件的音频过滤器?

如何通过 C++ 代码使主板发出哔哔声? [关闭]

同时向扬声器和耳机输出音频?