- 积分
- 159
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
发个图:这是0.3版:
这是在我公司里,有个基站的数据没有收入,所以显示为"未知ID"
但区域代码有,所以,能认出地区来.
定位原理:
手机和基站通讯时,基站会发给手机(手机会收到)基站ID和区域ID,而每个基站的位置是固定的,这样,根据基站的编号就可以判断你手机所在的位置,也就是你的位置。
而要用JAVA程序得到基站ID,就要刷程序中附带的补丁,这个补丁让JAVA程序可以读小8的内存,来得到基站ID。
JAVA程序得到的基站ID就好办了,KONCA最早写了KONGPS,这就是所有内似程序的雏形,但还没有定位的功能,但已经让大家看到了希望!
http://mobile.0110.cn/viewthread.php?tid=8392
之后出现了NPS及衍生版本,如NJGPS(南京GPS)、QGGPS(全国GPS)等,任何人只要收集了ID,都可以自己做出自己的NPS,它是在JAVA程序编译时把ID和地址的对应关系加了进去,基本实现了定位的功能。所有这些程序都依赖于ID收集,AHUI做了网站可以完成ID的收集的规类工作,并可以生成NPS所需要的代码。但NPS在增加这、些ID时要重新编译,使用不是很方便,还要一定的JAVA基础(虽然要求不高,一般人看一下都能完成);
[url]http://mobile.0110.cn/viewthread.php?tid=10505
提交ID并生成代码:
http://www.cidu.net/gps/gps.asp
嘟嘟雄大侠为了方便收集ID,写了一个LOCATER,可以让你随时收集ID,说明基站对应的ID和地址的对应关系;
http://mobile.0110.cn/viewthread.php?tid=10885
再后来,出现了GPS6688,这是基于地图的GPS类软件,可以在6688上浏览地图,也可以定位,同样也要收集ID并管理,现在已经可以使用,但还需要完善。
http://mobile.0110.cn/viewthread.php?tid=10913
现在缺的是基站ID还不足,需要大家收集!请到这里提交!
http://www.cidu.net/gps/gps.asp
***************************************************************************
以下为NPS-ver-0.30内容:
首先声明,这并不是一个基于基站定位的完善版本,也不具备手机上管理基站数据的能力,因为它(NPS-ver-0.30)并没有在程序中使用“数据库”或者类似技术。NPS-ver-0.30只是让你在电脑上完成对基站编号(Cell ID)和区域编号(Area ID)与地址的对应关系进行管理,这一切,都是J2ME程序(也就是NPS-ver-0.30)在编译成JAVA程序时把“数据库”做到了程序里面,每次你管理数据时,都需要对NPS-ver-0.30进行重新编译(幸运的是,J2ME程序在编译时并不需要很长时间,只要你安装好了Jbuilder 9.0和SMTK)。
这个程序来源于Konca和他在KonGPS ver 0.1中提到的许多作者完成的KonGPS ver 0.1,本程序只是在原程序中加入了基站编号(Cell ID)和区域编号(Area ID)与地址的对应关系的判断语句,其它并没有实质性的改变,作者fsclub并不会JAVA开发,甚至搞不清JDK和SMTK的关系,以前只是在大学中学过C和自学了一点C++(搞不清那些什么类,公有私有,重载什么的),没有学过JAVA,但这一切都没关系,因为JAVA的语法和C差不多,正是因为这一点,之前才放出了那个灌水贴,因为没有搞清JAVA中的什么“句柄”的概念,看了《Thinking in JAVA》第三章关于JAVA关系运算中一些与C的不同之处,才明白了以前的错误理解。
在这里下载程序样例:
http://www.MP3-CN.com/6688/nps/index.htm
下面从使用的角度说明这个程序的用法。
1. 安装JBuilder 9.0;
2. 安装SMTK;
3. 对压缩包解压出NPS-ver-0.30文件夹;
4. 在Jbuilder9.0中打开工程文件konGPS.jpx;
5. 对原程序进行修改(添加基站数据),编译;
6. 将NPS-ver-0.30文件夹中的konGPS.jar和konGPS.jad两个文件拷贝到西门子6688的MMC中的JAVA/jam/NPS-ver-0.30文件夹中(NPS-ver-0.30文件夹需要自己在MMC中创建);
7. 在手机中运行NPS-ver-0.30,这时,就得到了你想要的结果!
下面分别说明具体做法和注意事项:
1. 安装JBuilder 9.0和SMTK:
安装过程见下面的文件:SMTK_dev.pdf
http://www.cnjm.net/newpage/res.php?id=000126(约300K)
JBuilder9.0下载地址:
http://www.cnyou.com/down/down.asp?id=576&no=1(约160M)
当然也可以在网上找到JB9.0的注册方法;
SMTK的下载地址:
http://www.cnjm.net/newpage/res.php?id=000103(约10M)
当然也可以在网上找到SMTK的注册方法;
也许,在安装SMTK前,会要求你安装SMTK核心:
http://www.cnjm.net/newpage/res.php?id=000102(约10M)
2. 下载NPS-ver-0.3压缩包:
http://www.MP3-CN.com/6688/nps/index.htm
3. 解压缩后打开Jbuilder9.0,按照SMTK_dev.pdf中的说明进行JB9的设置后,打开NPS-ver-0.3中的konGPS.jpx文件,在左上方的窗口中找到“mainCanvas.java”,双击打开,在右边第96行和123行处加入以90行和117行为示例的代码;
例如:
你的工模中的区域码为0538,基站ID为06a5,你所在地区为青岛李沧区枣园路,
则在第96行处加入
if ("5328".equals(midlet.strAreaID))
{strAreaID = "青岛李沧区";break;}
在第123行处加入
if ("06a5".equals(midlet.strCellID))
{strCellID = "枣园路";break;}
这时,若你有多个区域码和基站ID要添加,则多次加入这两个IF判断语句,就实现了多个区域码和基站ID的添加。
例如,作者fsclub在第96行处加入了:
if ("5321".equals(midlet.strAreaID))
{strAreaID = "青岛市南区"; break;}
if ("5323".equals(midlet.strAreaID))
{ strAreaID = "青岛城阳区"; break;}
……………………………………….
……………………………………….
在第123行处添加了:
if ("0701".equals(midlet.strCellID))
{ strCellID = "苇山二路";break; }
if ("0733".equals(midlet.strCellID))
{ strCellID = "仙家寨河边"; break;}
…………………………………….
…………………………………….
注意,这里的区域名和地址名的字数必须小于等于5个字,否则在程序中不能完全显示!
4. 添加完成后,就可以在菜单中的PROJECT菜单中点击“Make project “konGPS.jpx””,几秒后编译完成,再将NPS-ver-0.30文件夹中编译完成的konGPS.jar和konGPS.jad两个文件拷贝到西门子6688的MMC中的JAVA/jam/NPS-ver-0.30文件夹中(NPS-ver-0.30文件夹需要自己在MMC中创建);
5. 在手机中运行NPS-ver-0.30,这时,就得到了你想要的结果!
注意以上软件代码遵循GPL发布(http://www.gnu.org/copyleft/gpl.html),请保留作者信息。
另外,如果你收集了ID,但你无法下载那么大(约190M)的几个文件(或者不能安装)搭建JAVA开发环境,请将你收集的区域ID和基站ID以下列形式编辑:
请帮我在第96行处加入:
if ("5321".equals(midlet.strAreaID))
{strAreaID = "青岛市南区"; break;}
if ("5323".equals(midlet.strAreaID))
{ strAreaID = "青岛城阳区"; break;}
……………………………………….
……………………………………….
请帮我在第123行处添加:
if ("0701".equals(midlet.strCellID))
{ strCellID = "苇山二路";break; }
if ("0733".equals(midlet.strCellID))
{ strCellID = "仙家寨河边"; break;}
…………………………………….
…………………………………….
将其保存为文本文件(ID.TXT),以E-mail的形式发给我,我将在我的可能的时间里为你编译,并将编译好看的程序发回你的信箱,为了节省时间,请一定以上面所指的TXT格式发给我(一定包含程序代码),我可以复制到代码中为你编译,否则,可能不能为你编译,请谅解。
20050826
我原来的IBM硬盘坏了,所有下载的东西都没有了,所以现在也没有办法为大家编译.请大家谅解.
[B] 1月13日1:46更新:
用4位16进制来对基站进行编码,最大为FFFF,也就是最大为65536个基站.我想,中国应该不只这么一点基站..我也考虑了这个问题.首先再三说明,这并不是一个完善的版本.昨天上午已经和ahui讨论了,在他那个站上
http://www.cidu.net/gps/gps.asp
数据会自动按市生成.也就是说,在编译时可以控制每个市生成一个NPS-ver-0.30的代码,就避免了异地的基站ID可能相同的这种可能的情况的发生.
希望大家到
http://www.cidu.net/gps/gps.asp
提交数据,这样可以方便得到代码,你只需要复制和粘贴可以了!还会按市生成代码,避免了一些问题的产生!
[/B]
更新的在这里:
http://www.MP3-CN.com/6688/nps/index.htm
**************************************************************
**************************************************************
NPS-ver-0.40-beta发布,实现区域ID和基站ID关联!(2004年1月14日更新)
这是部分程序流程(点击看大图):
[upload=jpg]UploadFile/200411416484972032.jpg[/upload]
点击看大图
在特定的基站ID中只显示属于这个区域ID的基站ID,避免了不同区域ID中可能有相同基站ID而产生的错误。每个区域ID都需要一段下面这个Example的代码。在每个区域ID中分别加入属于它们自己的基站ID。
//********************************************************************
// Start Example Start Example Start Example Start Example
//********************************************************************
int i=0; while(i<1){
if ("5328".equals(midlet.strAreaID))
{strAreaID = "青岛李沧区";y++;
int t=0; while(t<1) {
if ("06a5".equals(midlet.strCellID))
{ strCellID = "枣园路"; break;}
if ("0407".equals(midlet.strCellID))
{strCellID = "北山"; break;}
// Add the programe Codes in the following:
//在这里加入基站编号确定地址的程序代码(加入的基站ID必须是属于这一区域
//码ID中的,如上面的基站ID-->"06a5"和"0407"这两个基站ID都是属于区域ID-->"5328"):
//以上表示同一个区域ID下的每个基站ID.
strCellID = midlet.strCellID+"--未知ID"; t++; }
} break;
}
注意:
因为在EXAMPLE中第一行定义了" int i=0; while(i<1){ "
在不删除EXAMPLE那段代码的前提下,
在后面你加的代码中就不再需要定义 ''int i'',只需要 “ i=0; while(i<1){ ”
也就是在你加和代码中去掉 “int ”。
下载新版程序NPS-ver-0.40-beta样例:
更新的在这里:
http://www.MP3-CN.com/6688/nps/index.htm
个人认为还是NPS-ver-0.30好用。程序简单,只要保证你的区域ID和基站ID都是同一个城市的,那么,就一定不会出问题。
**************************************************************
[ 本帖最后由 fsclub 于 2006-3-22 16:26 编辑 ] |
|