工具/环境:C ++,VS2008,WM6.1
我目前只有HTC Diamond Windows Mobile手机可以进行测试,并尽我所能,凭借我的所有黑客实力,我仍然无法完成获取Cell ID和LAC剩余细节的任务,以完成我的手机基于位置的计划。
我设法获得 MCC 和 MNC ,但仍然隐藏了Cell ID和LAC号码。 必须 是获取这些内容的一种方式,因为手机本身毫无疑问会将它们用于其他事情。的:/
重申我的尝试,将是以下内容:
RIL_GetCellTowerInfo (g_hRIL); // doesn't even signal the 'ResultCallback' function.
RIL_GetCurrentOperator (g_hRIL, RIL_OPFORMAT_NUM); // calls the 'ResultCallback' function and only with this am I able to at least get the MCC and MNC.
尝试了以下测试代码,但没有任何效果。
//constants and structures for cell ID
#define RIL_DEVSPECIFICPARAM_ENABLECELLIDSUPPORT 26
#define RIL_DEVSPECIFICPARAM_DISABLECELLIDSUPPORT 27
bool mode = true;
DWORD dwFuncID=0;
if (mode)
dwFuncID = RIL_DEVSPECIFICPARAM_ENABLECELLIDSUPPORT;
else
dwFuncID = RIL_DEVSPECIFICPARAM_DISABLECELLIDSUPPORT;
m_hrCellIdRequest_ = RIL_DevSpecific (g_hRIL,(LPBYTE) &dwFuncID, sizeof(DWORD));
// no 'ResultCallback' triggered either.
BYTE req[4]= {24, 0, 0, 0};
m_hrCellIdRequest_ = RIL_DevSpecific (g_hRIL, req, 4);
req[0]=26;
m_hrCellIdRequest_ = RIL_DevSpecific (g_hRIL, req, 4);
我甚至尝试发送串行AT命令来取回一些东西。例如。 "AT+CCED=0\r"
我只得到'4 \ r'的失败结果。
我已经读过最后一个选项是读取它的内部存储器。但这似乎不是一种适用于其他手机的通用方法。此外,我甚至不知道从哪里开始。
所以我终于打破了请求帮助这个神话般的社区,如果你有办法从这款手机获得这些信息,你能否与我们分享?
或者如果无法获得,你能详细解释为什么会这样吗?
我只想一劳永逸地关闭这个。的:)
答案 0 :(得分:5)
因此,经过更多的挖掘和顽固的“谷歌搜索”,似乎原始RIL_ *代码无法在我的手机上工作的原因是我在 CDMA(UMTS)网络,和 不 GSM 网络。
据我所知, GSM网络为手机提供了MCC,MNC,小区ID和LAC的值。
另一方面, CDMA网络提供了一组不同的数字,BID, NID, and SID。e.g。 CID -> BID, LAC -> NID, MNC -> SID, MCC -> MCC
上述RIL_ *接口代码很受欢迎,因为世界上有比GSM(主要是北美)更多的GSM手机/网络。
现在没有真正的GSM手机,我无法真正测试我的RIL_ *接口代码。 WM6.1 SDK Cell Emulator工具很整洁,但还不足以用。
发布产品然后再次请求移动蜂窝专家提供有关从我的HTC Diamond手机中检索BID,NID和SID值的方法的任何帮助,希望它们真的转换为Cell ID和LAC。
我的手机上的谷歌手机地图以某种方式成功地完成了这一奇观。我只能猜测他们必须在CDMA网络上找到一种获取蜂窝塔信息的方法。
感谢任何帮助。的:)强>
答案 1 :(得分:3)
Google似乎确实使用您的移动IP进行定位,并且不支持CDMA: source
答案 2 :(得分:1)
在这里查看第一个答案(我刚刚在HTC Touch Diamond上尝试过它并且工作正常): msdn discussion board
答案 3 :(得分:0)
将您的CDMA手机换成GSM版本:)