Created
September 6, 2012 03:48
-
-
Save HungHuynh/3650966 to your computer and use it in GitHub Desktop.
This is function check type device
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <sys/types.h> | |
#include <sys/sysctl.h> | |
@interface UIDevice(Hardware) | |
- (NSString *) platform; | |
- (BOOL)hasRetinaDisplay; | |
- (BOOL)hasMultitasking; | |
- (BOOL)hasCamera; | |
@end | |
@implementation UIDevice(Hardware) | |
- (NSString *) platform{ | |
int mib[2]; | |
size_t len; | |
char *machine; | |
mib[0] = CTL_HW; | |
mib[1] = HW_MACHINE; | |
sysctl(mib, 2, NULL, &len, NULL, 0); | |
machine = malloc(len); | |
sysctl(mib, 2, machine, &len, NULL, 0); | |
NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding]; | |
free(machine); | |
return platform; | |
} | |
- (BOOL)hasRetinaDisplay { | |
NSString *platform = [self platform]; | |
BOOL ret = YES; | |
if ([platform isEqualToString:@"iPhone1,1"]) { | |
ret = NO; | |
} | |
else | |
if ([platform isEqualToString:@"iPhone1,2"]) ret = NO; | |
else | |
if ([platform isEqualToString:@"iPhone2,1"]) ret = NO; | |
else | |
if ([platform isEqualToString:@"iPod1,1"]) ret = NO; | |
else | |
if ([platform isEqualToString:@"iPod2,1"]) ret = NO; | |
else | |
if ([platform isEqualToString:@"iPod3,1"]) ret = NO; | |
return ret; | |
} | |
- (BOOL)hasMultitasking { | |
if ([self respondsToSelector:@selector(isMultitaskingSupported)]) { | |
return [self isMultitaskingSupported]; | |
} | |
return NO; | |
} | |
- (BOOL)hasCamera { | |
BOOL ret = NO; | |
// check camera availability | |
return ret; | |
} | |
@end | |
//Example how use : | |
NSLog(@"platform %@, retita %@, multitasking %@", [[UIDevice currentDevice] platform], [[UIDevice currentDevice] hasRetinaDisplay] ? @"YES" : @"NO" , [[UIDevice currentDevice] hasMultitasking] ? @"YES" : @"NO"); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment