如何在Windows Mobile CDMA手机上获取Cell Tower信息

时间:2009-05-17 04:30:20

标签: windows-mobile

工具/环​​境: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'的失败结果。

我已经读过最后一个选项是读取它的内部存储器。但这似乎不是一种适用于其他手机的通用方法。此外,我甚至不知道从哪里开始。

所以我终于打破了请求帮助这个神话般的社区,如果你有办法从这款手机获得这些信息,你能否与我们分享?

或者如果无法获得,你能详细解释为什么会这样吗?

我只想一劳永逸地关闭这个。的:)

4 个答案:

答案 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版本:)