【问题标题】:Get device output volume for iOS 7?获取 iOS 7 的设备输出音量?
【发布时间】:2014-05-07 11:06:10
【问题描述】:

我正在开发用于播放音频广告的 iOS 库,我想在每次请求广告之前检查设备输出音量是否为零(静音或静音)。

我已使用以下 codeAny 来检查设备的输出音量

+(BOOL)isDeviceMuted
{
    Float32 val = -1.0;
    UInt32 propertySize = sizeof(val);
    AudioSessionInitialize(NULL, NULL, NULL, NULL);
    AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareOutputVolume, &propertySize, &val);

    NSLog(@"value of volume: %f",val);
    if (val <= 0) {
        return YES;
    }
    else {
        return NO;
    } 
}

到目前为止,此代码运行良好,但问题是 iOS 7 上已弃用 AudioSessionGetProperty,我想用未弃用的新代码替换此代码(最低 iOS SDK 为 6)

我已经尝试了以下

val = [[AVAudioSession sharedInstance] outputVolume];

但 outputVolume 的问题是它需要激活音频会话才能跟踪其更改。

[[AVAudioSession sharedInstance] setActive: YES error: nil];

我们不能在库中这样做,因为它会影响用户应用程序(sharedInstance)

任何想法!

【问题讨论】:

标签: ios iphone ipad avaudiosession


【解决方案1】:

使用 otherAudioPlaying 属性判断是否有其他应用正在播放音频

[[AVAudioSession sharedInstance] isOtherAudioPlaying]

【讨论】:

  • 我询问的是设备音量,而不是其他音频是否正在播放
  • 我明白了,正如你提到的“......我们不能在库中这样做,因为它会影响用户应用程序”,在这种情况下,你知道是否没有其他音频播放你调用 setActive 和从AVAudioSession的sharedInstance中获取输出音量,清楚吗?
  • 但是如果发布者将音频会话设置为 NO,那么在请求广告时,音频会话将设置为 YES,这将覆盖发布者的值......我无法使用任何值共享!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-09
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
  • 2018-08-17
相关资源
最近更新 更多