我有一些设置可以启用/禁用某些操作的振动,但我发现如果设备没有振动能力则显示它们毫无意义。有没有办法检查此人是否正在使用iPod touch以及是否有振动?
答案 0 :(得分:5)
我不确定除了做模型检查之外还有办法做到这一点,这可能不是一个好方法。我知道苹果提供:
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
如果设备可以振动,它会。在没有振动的设备上,它什么都不做。还有一个电话:
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
如果设备散列该设备或设备将发出蜂鸣声,则此设备将振动设备。
最好只进行设置并对设置进行一些解释,因为用户在没有振动设备时可能需要发出蜂鸣声。也许可以将设置称为“振动警报开/关”以外的其他设置。
答案 1 :(得分:3)
这段代码应该这样做 - 请注意它'假设' iPhone是唯一具有振动功能的设备。目前是哪一个......
- (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。