【问题标题】:iPhone: programmatically check if vibration is enablediPhone:以编程方式检查是否启用了振动
【发布时间】:2013-10-10 12:15:30
【问题描述】:

是否可以通过编程方式检查 iPhone 的系统选项是否存在

Settings -> Sounds -> Vibrate on Ring

已启用?

在我的应用中,如果该选项被禁用,我想向用户显示警报。

【问题讨论】:

    标签: iphone ios settings isenabled vibration


    【解决方案1】:

    你不能。因为苹果没有提供访问 iPhone 设置应用的 API。

    【讨论】:

      【解决方案2】:

      也许你可以试一试,并确保你在 iDevice 中运行应用程序,因为模拟器没有静音或响铃模式:)

      新编辑

      -(BOOL)silenced 
      {
           #if TARGET_IPHONE_SIMULATOR
              // return NO in simulator. Code causes crashes for some reason.
           return NO;
           #endif
      
          CFStringRef state;
          UInt32 propertySize = sizeof(CFStringRef);
          AudioSessionInitialize(NULL, NULL, NULL, NULL);
          AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state);
          if(CFStringGetLength(state) > 0)
              return NO;
          else
              return YES;
      }
      

      你可以这样调用这个方法

      if ([self silenced]) 
      {
          NSLog(@"silenced");
      } else {
          NSLog(@"not silenced");
      }
      

      希望对你有帮助!

      【讨论】:

      • 我在开/关振动和开/关静音开关的情况下测试了算法,但在所有 4 种情况下“状态”的值都是@“扬声器”...(在 iPhone 5 上测试, iOS 7.0.2)。
      猜你喜欢
      • 2011-06-18
      • 1970-01-01
      • 2011-03-07
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多