【问题标题】:How to find out if the iPhone is on silent mode?如何判断 iPhone 是否处于静音模式?
【发布时间】:2010-10-07 10:03:09
【问题描述】:

我有一个邮寄申请。如果用户发送邮件成功,那么我需要通知邮件发送成功。为此,我需要知道他的手机是否处于静音模式 (在这种情况下会出现“振动”)或常规模式(在这种情况下会出现“哔”声)。谁能帮帮我?

提前致谢

【问题讨论】:

    标签: iphone iphone-sdk-3.0


    【解决方案1】:
    【解决方案2】:
    CFStringRef state;
    UInt32 propertySize = sizeof(CFStringRef);
    AudioSessionInitialize(NULL, NULL, NULL, NULL);
    AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state);
    if(CFStringGetLength(state) == 0)
    {
        //SILENT
    
    }
    else
    {
        //NOT SILENT
    
    }
    

    如果状态字符串为空,则手机处于静音状态 - 否则手机有音频输出

    编辑:

    记得添加 AudioToolbox 框架并导入。 ——托马斯·克莱森

    答案来自 (http://iphone-dev-tips.alterplay.com/2009/12/iphone-silent-mode-detection.html)

    【讨论】:

    • 啊...打败我... :p 删除我的答案
    • 您可以将它准确地放在您想要使用它的位置(在您发送消息之后)。或者您可以放入一个自己的方法,称为“BOOL phoneIsOnSilentMode()”,并返回 (CFStringGetLength(state) == 0) 的结果。然后,当您在发送消息后要使用它时调用“if (phoneIsOnSilentMode())”,如果为真则振动或如果为假则播放声音
    • 嘿,我已将此 sn-p 放入 -applicationdidFinishLaunching 方法中,当我尝试在我的 iPhone 上运行它时,它仅在安装后第一次运行或当我关闭手机并重试时运行。为什么会这样?不是每次我启动我的应用程序时都会运行吗?还有一个问题-状态变量,当我在警报中显示它时,即使在我更改声音设置之后,它也总是显示“扬声器”。有多少个状态以及如何从 iPhone 的声音设置中更改它们。也就是说,我永远无法将 state 变量设为 null,它始终是扬声器。
    • 有时会存储 iPhone 应用程序的状态 - 因此,每次您从主屏幕单击应用程序图标时,不一定会调用 applicationDidFinishLaunching 方法。无论如何,您肯定想在播放声音或振动之前进行检查吗?否则,用户可能只是打开您的应用程序,开始使用它,然后在发送消息之前更改为静音。然后,一旦发送了消息,您将获得有关音频状态的错误信息。将sn-p放在自己的方法中,在发送消息后播放声音或振动前调用该方法
    • 我明白了,瑞克,非常感谢。但我这样做只是为了测试目的。无论如何,让我们假设我将代码放在应该放置的位置,但我面临的问题是该函数根本没有被调用。我曾尝试将手机置于静音模式并进行测试,但没有被调用。如果只是为了测试而处于静音模式,我会显示警报。所以,要么我不知道如何将 iPhone 设置为静音模式,要么还有其他事情在起作用。另外,请告诉我其他模式。这样我就可以对耳机进行编程了。
    猜你喜欢
    • 2010-10-24
    • 2012-07-30
    • 2010-10-13
    • 1970-01-01
    • 2011-01-22
    • 2014-11-13
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多