最近工作上需要获取设备的一些信息,整理了一下,方便大家。
1.获取电池电量(一般用百分数表示,大家自行处理就好)-(CGFloat)getBatteryQuantity
{
return[[UIDevicecurrentDevice]batteryLevel];
}
2.获取电池状态(UIDeviceBatteryState为枚举类型)-(UIDeviceBatteryState)getBatteryStauts
{
return[UIDevicecurrentDevice].batteryState;
}
3.获取总内存大小-(longlong)getTotalMemorySize
{
return[NSProcessInfoprocessInfo].physicalMemory;
}
4.获取当前可用内存-(longlong)getAvailableMemorySize
{
vm_statistics_data_tvmStats;
mach_msg_type_number_tinfoCount=HOST_VM_INFO_COUNT;
kern_return_tkernReturn=host_statistics(mach_host_self(),HOST_VM_INFO,(host_info_t)&vmStats,&infoCount);
if(kernReturn!=KERN_SUCCESS)
{
returnNSNotFound;
}
return((vm_page_size*vmStats.free_count+vm_page_size*vmStats.inactive_count));
}
5.获取已使用内存-(double)getUsedMemory
{
task_basic_info_data_ttaskInfo;
mach_msg_type_number_tinfoCount=TASK_BASIC_INFO_COUNT;
kern_return_tkernReturn=task_info(mach_task_self(),
TASK_BASIC_INFO,
(task_info_t)&taskInfo,
&infoCount);
if(kernReturn!=KERN_SUCCESS
){
returnNSNotFound;
}
returntaskInfo.resident_size;
}
6.获取总磁盘容量include
-(longlong)getTotalDiskSize
{
structstatfsbuf;
unsignedlonglongfreeSpace=-1;
if(statfs("/var",&buf)>=0)
{
freeSpace=(unsignedlonglong)(buf.f_bsize*buf.f_blocks);
}
returnfreeSpace;
}
7.获取可用磁盘容量-(longlong)getAvailableDiskSize
{
structstatfsbuf;
unsignedlonglongfreeSpace=-1;
if(statfs("/var",&buf)>=0)
{
freeSpace=(unsignedlonglong)(buf.f_bsize*buf.f_bavail);
}
returnfreeSpace;
}
8.容量转换-(NSString*)fileSizeToString:(unsignedlonglong)fileSize
{
NSIntegerKB=1024;
NSIntegerMB=KB*KB;
NSIntegerGB=MB*KB;
if(fileSize
return@"0B";
}elseif(fileSize
return@"
}elseif(fileSize
return[NSStringstringWithFormat:@"%.1fKB",((CGFloat)fileSize)/KB];
}elseif(fileSize
return[NSStringstringWithFormat:@"%.1fMB",((CGFloat)fileSize)/MB];
}else{
return[NSStringstringWithFormat:@"%.1fGB",((CGFloat)fileSize)/GB];
}
}
8.型号
#import +(NSString*)getCurrentDeviceModel:(UIViewController*)controller
{
intmib[2];
size_tlen;
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=[NSStringstringWithCString:machineencoding:NSASCIIStringEncoding];
free(machine);
if([platformisEqualToString:@"iPhone3,1"])return@"iPhone4(A1332)";
if([platformisEqualToString:@"iPhone3,2"])return@"iPhone4(A1332)";
if([platformisEqualToString:@"iPhone3,3"])return@"iPhone4(A1349)";
if([platformisEqualToString:@"iPhone4,1"])return@"iPhone4s(A1387/A1431)";
if([platformisEqualToString:@"iPhone5,1"])return@"iPhone5(A1428)";
if([platformisEqualToString:@"iPhone5,2"])return@"iPhone5(A1429/A1442)";
if([platformisEqualToString:@"iPhone5,3"])return@"iPhone5c(A1456/A1532)";
if([platformisEqualToString:@"iPhone5,4"])return@"iPhone5c(A1507/A1516/A1526/A1529)";
if([platformisEqualToString:@"iPhone6,1"])return@"iPhone5s(A1453/A1533)";
if([platformisEqualToString:@"iPhone6,2"])return@"iPhone5s(A1457/A1518/A1528/A1530)";
if([platformisEqualToString:@"iPhone7,1"])return@"iPhone6Plus(A1522/A1524)";
if([platformisEqualToString:@"iPhone7,2"])return@"iPhone6(A1549/A1586)";
if([platformisEqualToString:@"iPhone8,1"])return@"iPhone6s";
if([platformisEqualToString:@"iPhone8,2"])return@"iPhone6sPlus";
if([platformisEqualToString:@"iPod1,1"])return@"iPodTouch1G(A1213)";
if([platformisEqualToString:@"iPod2,1"])return@"iPodTouch2G(A1288)";
if([platformisEqualToString:@"iPod3,1"])return@"iPodTouch3G(A1318)";
if([platformisEqualToString:@"iPod4,1"])return@"iPodTouch4G(A1367)";
if([platformisEqualToString:@"iPod5,1"])return@"iPodTouch5G(A1421/A1509)";
if([platformisEqualToString:@"iPad1,1"])return@"iPad1G(A1219/A1337)";
if([platformisEqualToString:@"iPad2,1"])return@"iPad2(A1395)";
if([platformisEqualToString:@"iPad2,2"])return@"iPad2(A1396)";
if([platformisEqualToString:@"iPad2,3"])return@"iPad2(A1397)";
if([platformisEqualToString:@"iPad2,4"])return@"iPad2(A1395+NewChip)";
if([platformisEqualToString:@"iPad2,5"])return@"iPadMini1G(A1432)";
if([platformisEqualToString:@"iPad2,6"])return@"iPadMini1G(A1454)";
if([platformisEqualToString:@"iPad2,7"])return@"iPadMini1G(A1455)";
if([platformisEqualToString:@"iPad3,1"])return@"iPad3(A1416)";
if([platformisEqualToString:@"iPad3,2"])return@"iPad3(A1403)";
if([platformisEqualToString:@"iPad3,3"])return@"iPad3(A1430)";
if([platformisEqualToString:@"iPad3,4"])return@"iPad4(A1458)";
if([platformisEqualToString:@"iPad3,5"])return@"iPad4(A1459)";
if([platformisEqualToString:@"iPad3,6"])return@"iPad4(A1460)";
if([platformisEqualToString:@"iPad4,1"])return@"iPadAir(A1474)";
if([platformisEqualToString:@"iPad4,2"])return@"iPadAir(A1475)";
if([platformisEqualToString:@"iPad4,3"])return@"iPadAir(A1476)";
if([platformisEqualToString:@"iPad4,4"])return@"iPadMini2G(A1489)";
if([platformisEqualToString:@"iPad4,5"])return@"iPadMini2G(A1490)";
if([platformisEqualToString:@"iPad4,6"])return@"iPadMini2G(A1491)";
if([platformisEqualToString:@"i386"])return@"iPhoneSimulator";
if([platformisEqualToString:@"x86_64"])return@"iPhoneSimulator";
returnplatform;
}
可以根据自己的需求增改。有人说也可以按照手机屏幕来判断,但5和5s/5c等手机屏幕相同尺寸则无法判断。。。我只做了iPhone的机型,所以iPad和iPod Touch的信息并没有更新到最新,也请朋友们补充。
9.IP地址
#import 和#import -(NSString*)deviceIPAdress{
NSString*address=@"anerroroccurredwhenobtainingipaddress";
structifaddrs*interfaces=NULL;
structifaddrs*temp_addr=NULL;
intsuccess=0;
success=getifaddrs(&interfaces);
if(success==0){//0表示获取成功
temp_addr=interfaces;
while(temp_addr!=NULL){
if(temp_addr->ifa_addr->sa_family==AF_INET){
//Checkifinterfaceisen0whichisthewificonnectionontheiPhone
if([[NSStringstringWithUTF8String:temp_addr->ifa_name]isEqualToString:@"en0"]){
//GetNSStringfromCString
address=[NSStringstringWithUTF8String:inet_ntoa(((structsockaddr_in*)temp_addr->ifa_addr)->sin_addr)];
}
}
temp_addr=temp_addr->ifa_next;
}
}
freeifaddrs(interfaces);
returnaddress;
}
10.当前手机连接的WIFI名称(SSID)
需要#import -(NSString*)getWifiName
{
NSString*wifiName=nil;
CFArrayRefwifiInterfaces=CNCopySupportedInterfaces();
if(!wifiInterfaces){
returnnil;
}
NSArray*interfaces=(__bridgeNSArray*)wifiInterfaces;
for(NSString*interfaceNameininterfaces){
CFDictionaryRefdictRef=CNCopyCurrentNetworkInfo((__bridgeCFStringRef)(interfaceName));
if(dictRef){
NSDictionary*networkInfo=(__bridgeNSDictionary*)dictRef;
wifiName=[networkInfoobjectForKey:(__bridgeNSString*)kCNNetworkInfoKeySSID];
CFRelease(dictRef);
}
}
CFRelease(wifiInterfaces);
returnwifiName;
}