【问题标题】:Detect volume button press and release iOS [duplicate]检测音量按钮按下并释放iOS [重复]
【发布时间】:2013-01-14 06:33:50
【问题描述】:

可能重复:
program access to iPhone volume buttons

是否可以在 iOS 应用中检测到音量增大按钮按下/释放?

【问题讨论】:

    标签: ios objective-c cocoa-touch


    【解决方案1】:

    您可以在应用程序中检测音量按钮按下,但它使用 Apple 的私有 API。由于他们不允许您在您的应用程序中使用他们的私有 API,这会直接导致您的应用程序被拒绝,因此使用此操作需要您自担风险。

    在你的viewDidLoad:中,例如:

    MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(18, 340, 284, 23)];
    [self.view addSubview:volumeView];
    
    [NSNotificationCenter.defaultCenter
        addObserver:self
           selector:@selector(volumeDidChange:)
               name:@"AVSystemController_SystemVolumeDidChangeNotification"
             object:nil];
    

    【讨论】:

    • 忽略之前的评论...它在 iOS10 中确实有效。我只是没有添加音量视图,没有它就无法工作(不会生成通知)。在任何情况下,请注意您可以将框架设置为 CGRectZero,这可能更安全,因为这意味着它不可能出现或接收触摸事件。如果您不想从视图控制器中执行此操作,也可以将其添加到 UIApplication 单例的 keyWindow。 :)
    【解决方案2】:

    看看http://fredandrandall.com/blog/2011/11/18/taking-control-of-the-volume-buttons-on-ios-like-camera/

    基本上,您必须初始化音频会话,使其处于活动状态,然后监听更改。最后你发起一个回调。

    但是,请谨慎执行硬件命令。无意的滥用可能会导致您被应用商店禁止。

    【讨论】:

    • “无意误用”是什么意思?如果您想触发类似于相机应用工作方式的合法“不看”操作怎么办?
    猜你喜欢
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多