ios硬件采集信息汇总

年前,一直在做IOS前端数据采集这一块。。所以就整理了下,这些用到的东西...后继有可能还有补充

1.CPU类型获取

需要引入以下头文件,CPU类型放在 mach/machine.h中

#include <sys/types.h>
#include <sys/sysctl.h>
#include <mach/machine.h>

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. +(NSString*)getCPUType  
  2. {  
  3.     NSMutableString *cpu = [[NSMutableString alloc] init];  
  4.     size_t size;  
  5.     cpu_type_t type;  
  6.     cpu_subtype_t subtype;  
  7.     size = sizeof(type);  
  8.     sysctlbyname("hw.cputype", &type, &size, NULL0);  
  9.       
  10.     size = sizeof(subtype);  
  11.     sysctlbyname("hw.cpusubtype", &subtype, &size, NULL0);  
  12.       
  13.     // values for cputype and cpusubtype defined in mach/machine.h  
  14.     if (type == CPU_TYPE_X86)  
  15.     {  
  16.         [cpu appendString:@"x86 "];  
  17.         // check for subtype ...  
  18.           
  19.     } else if (type == CPU_TYPE_ARM)  
  20.     {  
  21.         [cpu appendString:@"ARM"];  
  22.         [cpu appendFormat:@",Type:%d",subtype];  
  23.     }  
  24.     return [cpu autorelease];  
  25.   
  26. }  


2.获取设备总内存

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. + (NSUInteger)getTotalMemoryBytes  
  2. {  
  3.     size_t size = sizeof(int);  
  4.     int results;  
  5.     int mib[2] = {CTL_HW, HW_PHYSMEM};  
  6.     sysctl(mib, 2, &results, &size, NULL0);  
  7.     return (NSUInteger) results/1024/1024;  
  8. }  


3.获取当前应用所占得内存

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. +(double)<span style="font-family: Menlo; font-size: 11px;">getCurrentApplicationUseMemory</span>  
  2. {  
  3.     task_basic_info_data_t taskInfo;  
  4.     mach_msg_type_number_t infoCount = TASK_BASIC_INFO_COUNT;  
  5.     kern_return_t kernReturn = task_info(mach_task_self(),  
  6.                                          TASK_BASIC_INFO,  
  7.                                          (task_info_t)&taskInfo,  
  8.                                          &infoCount);  
  9.       
  10.     if (kernReturn != KERN_SUCCESS  
  11.         ) {  
  12.         return NSNotFound;  
  13.     }  
  14.       
  15.     return taskInfo.resident_size / 1024.0 / 1024.0;  
  16. }  



4.获取MMC(国家)MNC(运营商)    对应码列表  http://en.wikipedia.org/wiki/Mobile_country_code#C

需要引入 

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #import <CoreTelephony/CTTelephonyNetworkInfo.h>  
  2. #import <CoreTelephony/CTCarrier.h>  

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. +(NSDictionary*)getMCCAndMNCInfo  
  2. {  
  3.     CTTelephonyNetworkInfo* ctt=[[[CTTelephonyNetworkInfo alloc]init]autorelease];  
  4.     return [NSDictionary dictionaryWithObjectsAndKeys:ctt.subscriberCellularProvider.mobileNetworkCode,@"MNC",  
  5.             ctt.subscriberCellularProvider.mobileCountryCode,@"MCC", nil nil];  
  6. }  



4.异常收集处理(可以发送网络请求,这里就直接写调用EMAIL了)

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. void UncaughtExceptionHandler(NSException *exception) {  
  2.     NSArray *arr = [exception callStackSymbols];  
  3.     NSString *reason = [exception reason];  
  4.     NSString *name = [exception name];  
  5.     NSString *urlStr = [NSString stringWithFormat:@"mailto://%@?subject=bug报告&body=感谢您的配合!<br><br><br>"  
  6.                         "错误详情:<br>%@<br>--------------------------<br>%@<br>---------------------<br>%@",  
  7.                         _email,name,reason,[arr componentsJoinedByString:@"<br>"]];  
  8.     NSURL *url = [NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];  
  9.     [[UIApplication sharedApplication] openURL:url];  
  10. }  

调用方法
[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. -(void)writeACrashMessage  
  2. {  
  3.     NSSetUncaughtExceptionHandler(&C的函数名);  
  4. }  


5.获取运行中的进程

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. + (NSArray *)getRunningProcesses {  
  2.       
  3.     int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0};  
  4.     size_t miblen = 4;  
  5.       
  6.     size_t size;  
  7.     int st = sysctl(mib, miblen, NULL, &size, NULL0);  
  8.       
  9.     struct kinfo_proc * process = NULL;  
  10.     struct kinfo_proc * newprocess = NULL;  
  11.       
  12.     do {  
  13.           
  14.         size += size / 10;  
  15.         newprocess = realloc(process, size);  
  16.           
  17.         if (!newprocess){  
  18.               
  19.             if (process){  
  20.                 free(process);  
  21.             }  
  22.               
  23.             return nil;  
  24.         }  
  25.           
  26.         process = newprocess;  
  27.         st = sysctl(mib, miblen, process, &size, NULL0);  
  28.           
  29.     } while (st == -1 && errno == ENOMEM);  
  30.       
  31.     if (st == 0){  
  32.           
  33.         if (size % sizeof(struct kinfo_proc) == 0){  
  34.             int nprocess = size / sizeof(struct kinfo_proc);  
  35.               
  36.             if (nprocess){  
  37.                   
  38.                 NSMutableArray * array = [[NSMutableArray alloc] init];  
  39.                   
  40.                 for (int i = nprocess - 1; i >= 0; i--){  
  41.                       
  42.                     NSString * processID = [[NSString alloc] initWithFormat:@"%d", process[i].kp_proc.p_pid];  
  43.                     NSString * processName = [[NSString alloc] initWithFormat:@"%s", process[i].kp_proc.p_comm];  
  44.                       
  45.                     NSDictionary * dict = [[NSDictionary alloc] initWithObjects:[NSArray arrayWithObjects:processID, processName, nil nil]  
  46.                                                                         forKeys:[NSArray arrayWithObjects:@"ProcessID"@"ProcessName", nil nil]];  
  47.                     [processID release];  
  48.                     [processName release];  
  49.                     [array addObject:dict];  
  50.                     [dict release];  
  51.                 }  
  52.                   
  53.                 free(process);  
  54.                 return [array autorelease];  
  55.             }  
  56.         }  
  57.     }  
  58.       
  59.       
  60.     return nil;  
  61. }  


6.IOS获取 网络类型(需要IOS7以后的版本)

需要引入以下框架

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #import <CoreTelephony/CTTelephonyNetworkInfo.h>  

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.  CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyGPRS          __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0); 
  3.  CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyEdge          __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0); 
  4.  CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyWCDMA         __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0); 
  5.  CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyHSDPA         __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0); 
  6.  CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyHSUPA         __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0); 
  7.  CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyCDMA1x        __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0); 
  8.  CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyCDMAEVDORev0  __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0); 
  9.  CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyCDMAEVDORevA  __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0); 
  10.  CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyCDMAEVDORevB  __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0); 
  11.  CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyeHRPD         __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0); 
  12.  CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyLTE           __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0); 
  13.  **/  

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. +(NSString*)getNetworkType  
  2. {  
  3.     CTTelephonyNetworkInfo* info=[[[CTTelephonyNetworkInfo alloc]init]autorelease];  
  4.     return info.currentRadioAccessTechnology;  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: iOS平台上的WebRTC音频采集是一种先进的技术,它允许用户使用强大的语音通信功能进行实时通信。在iOS上使用WebRTC技术,可以轻松地捕捉和处理音频数据。 对于iOS平台上的WebRTC音频采集,首先需要通过开发应用程序来实现声音录制、音频处理和实时音频通信功能。WebRTC可以方便地进行音频采集,通过重新定义AVCaptureSession实现音频采集的协议RTCAudioSession,实现了音频捕获,处理,传输等多个步骤,使音频通信更加完善。 借助WebRTC的音频采集iOS开发人员可以轻松地在其应用程序中实现多方通话和语音聊天等高级音频功能。同时,我们还可以利用其他第三方库如WebRTC库,实现高质量的语音通信。 总之,对于iOS平台上的WebRTC音频采集,它提供了很好的实时音频通信能力,允许用户进行更高质量的音频通信和语音聊天。对于iOS开发人员和用户而言,这是一个颇具吸引力的技术,有望在未来的实时通信领域发挥更大的作用。 ### 回答2: WebRTC是Google推出的一个用于支持实时通信的开源项目,它提供了一套实时音视频通信的解决方案。iOS是一个广泛使用的移动操作系统,这两者的结合,也就是iOS.WebRTC音频采集,可以让我们用iOS设备进行音频采集,进而实现音频通信。 iOS上WebRTC音频采集的实现可以借助于一些第三方开源库,如WebRTC iOS SDK。这个开源库提供了iOS平台上的WebRTC音视频功能的使用方法。其中的音频采集模块可以调用iOS设备的硬件进行物理层面的音频采集。同时,该库还提供了高度定制化的UCLOUD API,可以让开发者在音频采集的过程中对音频数据进行处理,如滤波、降噪等。 此外,iOS.WebRTC音频采集还可以整合更多第三方音频处理库,实现更广泛、更复杂的音频处理功能。例如,引入FFmpeg库进行音频编解码,引入OpenAL库进行3D音效处理等,这些都可以为iOS.WebRTC音频采集带来更加丰富、多彩的音频行为表现,给用户带来更有趣、更生动的沟通体验。 总之,iOS.WebRTC音频采集是一项开放、灵活、易用的技术,它能够帮助我们快速实现音频通信的功能,让我们能够便捷地享受网络世界中的音频互动。 ### 回答3: iOS.webrtc音频采集是指利用iOS系统的webrtc技术来进行音频采集的过程。webrtc是一种实时通信技术,可以在网页上实现跨平台的音视频通信功能。在iOS系统上,webrtc技术得到了广泛的应用,可以实现多种实时通信的场景。 音频采集是指从音频输入设备(如麦克风)中获取音频信号的过程。在iOS.webrtc中,可以通过iOS系统提供的AVFoundation框架来实现音频采集功能。AVFoundation框架提供了一系列的类和接口,可以实现音频输入设备的访问和音频信号的采集。同时,webrtc技术也提供了一系列的接口,可以将采集到的音频信号传输到远程服务器上,实现实时音频通信的功能。 iOS.webrtc音频采集具有以下特点: 1、高效稳定:webrtc技术采用P2P通信模式,充分利用了网络带宽,保证了音频传输的效率和稳定性。 2、跨平台:webrtc技术可以在不同的平台上实现音视频通信,无需安装额外的软件。 3、易于集成:webrtc技术提供了完善的接口,可以方便的与其他应用程序集成。 4、高保真音质:webrtc技术采用高端音频编码算法,可以实现高保真音质的传输。 总之,iOS.webrtc音频采集是一种高效稳定,跨平台,易于集成,高保真的音频采集技术,具有广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值