【问题标题】:get carrier name and signal strength return wrong value in iphone获取运营商名称和信号强度在 iphone 中返回错误值
【发布时间】:2012-01-05 11:04:36
【问题描述】:

我很好奇为什么我得到错误的值来获取运营商名称和信号强度。 这里是代码。

CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *car = [netinfo subscriberCellularProvider];
NSLog(@"Carrier Name: %@", car.carrierName);
[netinfo release];

为什么我得到价值“运营商”而不是我使用的运营商?

这是获取信号强度的代码

void *libHandle = dlopen("/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony", RTLD_LAZY);
int (*CTGetSignalStrength)();
CTGetSignalStrength = dlsym(libHandle, "CTGetSignalStrength");
if( CTGetSignalStrength == NULL) NSLog(@"Could not find CTGetSignalStrength");  
int result = CTGetSignalStrength();
NSLog(@"Signal strength: %d", result);
dlclose(libHandle);

据我所知,信号强度是 dBm 值(负值),但为什么上面的值显示正值,现在显示信号强度? 是否有任何值映射来表示dBm上的信号强度

P.S 我在真正的 iphone 设备上运行该程序,但仍然得到错误的值。

任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: iphone objective-c iphone-privateapi signal-strength


    【解决方案1】:

    关于运营商:在模拟器上运行您的代码给我nil,而在设备上正确运行时会显示2011-11-24 10:49:05.182 testapp[12579:707] Carrier Name: Vodafone.de,因此代码绝对正确(使用 Xcode 4.2 在 iOS 5.0.1 上运行)。也许您的运营商没有正确填写某些字段?无论如何,我都会考虑在另一台设备或另一张 SIM 卡上进行测试。

    关于信号强度:CTGetSignalStrength 似乎是一个相当无证的 API,其值可能由 Apple 任意定义(也可以重新定义)。在任何情况下,这似乎是一个 RSSI 值(接收到的信号强度指示),它或多或少是一个正数,其中 1 是最差的信号强度,较高的信号强度更好。因此,没有预定义(记录在案,因此是稳定的)到 dBm 值的可用映射,可能必须通过实验创建映射。

    【讨论】:

    • 我不认为 CTGetSignalSength 采用 RSSI 形式,因为我学习了如何将其转换为 dBm,它与显示的 dBm iphone 不匹配。
    【解决方案2】:

    信号强度值以整数形式返回是很常见的。棘手的一点是映射到相应的 dBm 值。通常 int 值提供 0.5、1 或 2 dBm 的分辨率。手机/调制解调器报告的 dBm 值通常在 2G (GSM/EDGE) 的 -115 到 -51 dBm 和 3G (UMTS/HSxPA) 的 -120 到 -25 dBm 之间,代表 RSSI(接收信号强度指标)。

    例如Android API 使用默认的 3GPP 映射 (see Android reference).

    还请注意,iPhone 4S (Qualcomm) 和使用 Infineon Gold 的早期型号之间的基带调制解调器不同。

    【讨论】:

    • 至少从 iOS 5.0 开始,不幸的是,iPhone 没有使用相同的 3GPP 映射。我运行了代码,得到的值超出了 0..31,99 范围。
    • 是的,iPhone 4 (Infineon) 和 iPhone 4S (Qualcomm) 都使用内部信号强度映射。此外,如果网络连接不可用(调制解调器关闭或覆盖漏洞),似乎会报告一些值(例如 0 和 11)。
    猜你喜欢
    • 2011-03-17
    • 2010-11-19
    • 2011-08-28
    • 2014-02-06
    • 2017-02-20
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    相关资源
    最近更新 更多