如果设备有振动,我可以确定/如何确定?

我有一些设置可以启用/禁用某些动作的振动,但我发现如果设备没有振动能力则显示它们毫无意义。 有没有办法检查此人是否正在使用iPod touch以及是否有振动?

这段代码应该这样做 – 请注意它’假定’iPhone是唯一具有振动function的设备。 目前是哪个……

- (NSString *)machine { static NSString *machine = nil; // we keep name around (its like 10 bytes....) forever to stop lots of little mallocs; if(machine == nil) { char * name = nil; size_t size; // Set 'oldp' parameter to NULL to get the size of the data // returned so we can allocate appropriate amount of space sysctlbyname("hw.machine", NULL, &size, NULL, 0); // Allocate the space to store name name = malloc(size); // Get the platform name sysctlbyname("hw.machine", name, &size, NULL, 0); // Place name into a string machine = [[NSString stringWithUTF8String:name] retain]; // Done with this free(name); } return machine; } -(BOOL)hasVibration { NSString * machine = [self machine]; if([[machine uppercaseString] rangeOfString:@"IPHONE"].location != NSNotFound) { return YES; } return NO; } 

刚编辑就是为了在每次调用时停止机器调用大量的小型malloc。

除了进行模型检查之外,我不确定是否有办法做到这一点,这可能不是一个好方法。 我知道苹果提供:

  AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 

如果设备可以振动,它会。 在没有振动的设备上,它什么都不做。 还有一个电话:

 AudioServicesPlayAlertSound(kSystemSoundID_Vibrate); 

如果设备散列该设备或设备将发出蜂鸣声,则此设备将振动设备。

最好只设置设置并对设置进行一些解释,因为用户在没有振动设备时可能需要发出蜂鸣声。 也许可以将设置称为“振动警报开/关”以外的设置。