获取各种设备号/UIDevice 设备信息

+ (NSString *)deviceName

{

    size_t size;

    sysctlbyname("hw.machine", NULL, &size, NULL, 0);

    char *buf = (char *)(malloc(size));

    sysctlbyname("hw.machine", buf, &size, NULL, 0);

    NSString *model = [NSString stringWithCString:buf encoding:NSASCIIStringEncoding];

    free(buf);

    

    return (model ? model : @"");

    /*

     NSString *deviceName = nil;

     

     if ([model isEqualToString:@"iPhone1,1"])  deviceName = @"iPhone1G";

     if ([model isEqualToString:@"iPhone1,2"])  deviceName = @"iPhone3G";

     if ([model isEqualToString:@"iPhone2,1"])  deviceName = @"iPhone3GS";

     if ([model isEqualToString:@"iPhone3,1"])  deviceName = @"iPhone4";

     if ([model isEqualToString:@"iPhone3,2"])  deviceName = @"iPhone4";

     if ([model isEqualToString:@"iPhone3,3"])  deviceName = @"iPhone4";

     if ([model isEqualToString:@"iPhone4,1"])  deviceName = @"iPhone4S";

     if ([model isEqualToString:@"iPhone4,2"])  deviceName = @"iPhone4S";

     if ([model isEqualToString:@"iPhone4,3"])  deviceName = @"iPhone4S";

     if ([model isEqualToString:@"iPhone5,1"])  deviceName = @"iPhone5";

     if ([model isEqualToString:@"iPhone5,2"])  deviceName = @"iPhone5";

     if ([model isEqualToString:@"iPhone5,3"])  deviceName = @"iPhone5C";

     if ([model isEqualToString:@"iPhone5,4"])  deviceName = @"iPhone5C";

     if ([model isEqualToString:@"iPhone6,1"])  deviceName = @"iPhone5S";

     if ([model isEqualToString:@"iPhone6,2"])  deviceName = @"iPhone5S";

     if ([model isEqualToString:@"iPod1,1"])    deviceName = @"iPod-touch1G";

     if ([model isEqualToString:@"iPod2,1"])    deviceName = @"iPod-touch2G";

     if ([model isEqualToString:@"iPod3,1"])    deviceName = @"iPod-touch3G";

     if ([model isEqualToString:@"iPod4,1"])    deviceName = @"iPod-touch4G";

     if ([model isEqualToString:@"iPod5,1"])    deviceName = @"iPod-touch5G";

     if ([model isEqualToString:@"iPad1,1"])    deviceName = @"iPad1";

     if ([model isEqualToString:@"iPad2,1"])    deviceName = @"iPad2"; // (WiFi)

     if ([model isEqualToString:@"iPad2,2"])    deviceName = @"iPad2"; // (GSM)

     if ([model isEqualToString:@"iPad2,3"])    deviceName = @"iPad2"; // (CDMA)

     if ([model isEqualToString:@"iPad2,4"])    deviceName = @"iPad2";

     if ([model isEqualToString:@"iPad2,5"])    deviceName = @"iPad-mini";

     if ([model isEqualToString:@"iPad2,6"])    deviceName = @"iPad-mini";

     if ([model isEqualToString:@"iPad2,7"])    deviceName = @"iPad-mini";

     if ([model isEqualToString:@"iPad3,1"])    deviceName = @"new-iPad"; // (WiFi)

     if ([model isEqualToString:@"iPad3,2"])    deviceName = @"new-iPad"; // (GSM)

     if ([model isEqualToString:@"iPad3,3"])    deviceName = @"new-iPad"; // (CDMA)

     if ([model isEqualToString:@"iPad3,4"])    deviceName = @"iPad4";

     if ([model isEqualToString:@"iPad3,5"])    deviceName = @"ipad4";

     if ([model isEqualToString:@"iPad3,6"])    deviceName = @"ipad4";

     if ([model isEqualToString:@"AppleTV2,1"]) deviceName = @"AppleTV2G";

     if ([model isEqualToString:@"AppleTV3,1"]) deviceName = @"AppleTV3G";

     if ([model isEqualToString:@"AppleTV3,2"]) deviceName = @"AppleTV3G";

     if ([model isEqualToString:@"i386"])       deviceName = @"Simulator";

     

     if (!deviceName) {

     if ([model hasPrefix:@"iPhone"]) {

     deviceName = @"iPhone-series";

     }

     if ([model hasPrefix:@"iPod"]) {

     deviceName = @"iPod-series";

     }

     if ([model hasPrefix:@"iPad"]) {

     deviceName = @"iPad-series";

     }

     }

     if (!deviceName) {

     deviceName = @"Unknown";

     }

     return deviceName;

     */

}


//


电池事件通知及电池状态:电池水平是一个浮点值,从0.0完全放电,到1.0完全充满。

[NSLog:@"Battery level: %0.2f%", [[UIDevice currentDevice] batteryLevel] * 100];

NSArray *stateArray = [NSArray arrayWithObjects: @"Unknown", @"not plugged into a charging source", @"charging", @"full", nil];
[NSLog:@"Battery state: %@", [stateArray objectAtIndex:[[UIDevice currentDevice] batteryState]]];



获得更多设备信息:使用sysctlbyname(),sysctl()标准unix函数。

在sys/sysctl.h中提供了一些设备信息常量。要注意先要#include <sys/socket.h>。

具体的参考《秘籍2》14.3重新获得更多设备信息。

hw.machine的值,第一代iPhone为(iPhone1,1),iPhone3g为(iPhone1,2),iPhone3gs为(iPhone2,1),模拟器上为x86_64。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值