【问题标题】:how can I check if the iOS device can vibrate如何检查iOS设备是否可以振动
【发布时间】:2011-09-08 00:36:52
【问题描述】:

目前只有 iPhone 支持振动,如何在调用振动功能之前检查我的设备是否支持振动。

【问题讨论】:

    标签: iphone ios vibration


    【解决方案1】:

    不幸的是,没有记录方法来测试设备是否支持振动。来自文档:

    在某些 iOS 设备上,您可以传递 kSystemSoundID_Vibrate 常量来调用振动。在其他 iOS 设备上,使用该常量调用此函数没有任何作用。

    看起来这里正确的方法是简单地调用 Saurabh 提到的方法而不检查是否支持振动。

    【讨论】:

      【解决方案2】:

      有点变通,但我发现这可行。这是基于目前只有 iPhone 设备具有振动硬件的假设。

      if([[UIDevice currentDevice].model isEqualToString:@"iPhone"])
      {
          // An iPhone: so should have vibrate
      }
      else
      {
          // Not an iPhone: so doesn't have vibrate
      }
      

      【讨论】:

      • 可能是一种方法,但不是规范的。比如,iPad 或 iPod touch 会不会有振动?未来的虚拟设备会有振动吗?如果 iPhone 将型号名称更改为“SuperDuperiPhone”,此功能也会中断。
      • 是的,您完全正确,但必须使用 API 的功能。绝对认为这是需要添加到 SDK 中的东西,一些功能可以访问当前设备上的所有可用功能。
      【解决方案3】:

      iOS sdk 有两个可以使 iPhone 振动的功能。但振动硬件仅存在于 iPhone 上。那么,您将如何提醒在 iPad 或 iPod touch 上使用该应用程序的用户呢?显然,检查模型不是要走的路。有两个看似相似的函数都带有一个参数 kSystemSoundID_Vibrate

      AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
      AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
      

      这两个功能都会震动 iPhone。但是当您在不支持振动的设备上使用第一个功能时,它会发出哔声。另一方面,第二个函数在不受支持的设备上不起作用。

      【讨论】:

      • 如何推翻我的默认设置并播放振动声音?有没有可能?
      • 这不能回答问题。有人可以回答提出的问题吗?这个问题在 SO 上被问了 3 次,但没有人回答。
      • 确实,这并不能回答问题。撞。 (问题是“如果”,而不是“如何”)
      • AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);它不会在 iPad 和 iPod 上发出任何哔声。在 iPhone 设备上振动,仅此而已。
      • AudioServicesPlayAlertSound 似乎没有为我播放声音。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      • 2012-10-19
      相关资源
      最近更新 更多