【发布时间】:2011-09-08 00:36:52
【问题描述】:
目前只有 iPhone 支持振动,如何在调用振动功能之前检查我的设备是否支持振动。
【问题讨论】:
目前只有 iPhone 支持振动,如何在调用振动功能之前检查我的设备是否支持振动。
【问题讨论】:
不幸的是,没有记录方法来测试设备是否支持振动。来自文档:
在某些 iOS 设备上,您可以传递 kSystemSoundID_Vibrate 常量来调用振动。在其他 iOS 设备上,使用该常量调用此函数没有任何作用。
看起来这里正确的方法是简单地调用 Saurabh 提到的方法而不检查是否支持振动。
【讨论】:
有点变通,但我发现这可行。这是基于目前只有 iPhone 设备具有振动硬件的假设。
if([[UIDevice currentDevice].model isEqualToString:@"iPhone"])
{
// An iPhone: so should have vibrate
}
else
{
// Not an iPhone: so doesn't have vibrate
}
【讨论】:
iOS sdk 有两个可以使 iPhone 振动的功能。但振动硬件仅存在于 iPhone 上。那么,您将如何提醒在 iPad 或 iPod touch 上使用该应用程序的用户呢?显然,检查模型不是要走的路。有两个看似相似的函数都带有一个参数 kSystemSoundID_Vibrate
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
这两个功能都会震动 iPhone。但是当您在不支持振动的设备上使用第一个功能时,它会发出哔声。另一方面,第二个函数在不受支持的设备上不起作用。
【讨论】: