解决完了Android,下面应该就到了iPhone了。这个问题网上搜索的时候基本都是一个代码版本。
参考 iphone-wireless。
当然,我们实际上有三种方法可以获取,目前我并未在真机上面测试,本文先做整理,后会放出iPhone上的测试版本代码。
iPhone上基站信息获取可以采用如下三种方法:
1 iphone-wireless方式获取。
2 串口发送AT指令获取。
3 模拟电话拨号 *3001#12345#* 获取。
第一种方法参考
获取CELLID,LAC等信息方法,感谢tiger723和shixuehuiab兄的代码。这里仅摘录。
|
第二种方法同样参考自上篇文章:
|
作者补充了代码:
at
另外,网上对以上方法做出了一些补充:
1. cellinfo的定义如下,估计就不会内存泄露了。
struct CellInfo
{
int mcc;
int mnc;
int location;
int cellid;
int station;
int freq;
int rxlevel;
int c1;
int c2;
int c3[6];
};
2.用AT命令取的话iphone4上试一下/dev/dlci.spi-baseband.extra_0。
3.也可能需要创造一个/tmp/ttydebugenable文件,然后 再/dev/tty.debug。这个老帖子,现在还有人问,我也凑下热闹
代码没有问题,可以取到基站以及信号,但信号数字要减去-130或-110至于多少,需要你在查询相关资料
上面的代码只可以取到2G,信号,有些童鞋在实测发现,代码运行正常count一直是0,那是应该开着3G呢,至于3G怎么取我也在研究
AT指令确实可以取到比较丰富的信息,但在IPHONE4上应该是13楼所提到的文件dlci.spi-baseband.extra_0,但必须赋予+x权限,所以只能在开发试验使用,最终用户很难对权限进行更改
最后就是函数的问题,如果你是4.0以上的话,没有必要dlsym库里的函数,直接应用公开的库CoreTelephon.framwork即可,但需要声明下符号名称.
3 第三种方法
|
参考文章:
1 http://apt.weiphone.com/index.php?action=packageRead&id=9429
2 http://www.cocoachina.com/bbs/read.php?tid=70132
3 http://stackoverflow.com/questions/8846174/app-crash-at-ctserverconnectioncellmonitorgetcellinfo
4 http://www.devdiv.com/iOS_iPhone-iPhone%E4%B8%AD%E5%8F%96%E5%BE%97%E5%9F%BA%E7%AB%99%E7%9A%84cellid-thread-30564-1-1.html
5 http://www.cocoachina.com/downloads/video/2010/0713/1854.html
6 http://code.google.com/p/iphone-wireless/source/browse/trunk/CellStumbler/main.c
-End-