<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 41,  comments - 90,  trackbacks - 0
    Google Maps基站定位
    (轉(zhuǎn)載至http://www.cnblogs.com/psunny/archive/2009/10/22/1587779.html)

    如果你在你的手機裝過Google Mobile Maps,你就可以發(fā)現(xiàn)只要你的手機能連接GPRS,即使沒有GPS功能,也能定位到你手機所在的位置, 只是精度不夠準確。在探討這個原理之前,我們需要了解一些移動知識,了解什么是MNC/LAC/Cell ID。
    • Mobile Network Code(MNC)
      移動網(wǎng)號碼,中國聯(lián)通CDMA系統(tǒng)的MNC為03,中國移動的為00。
    • Mobile Country Code(MCC)
      移動用戶所屬國家代號:460
    • Location Area Code(LAC)
      地區(qū)區(qū)域碼,用來劃分區(qū)域,一般一個小地方就一個LAC,大地方就
    • Cell Tower ID(Cell ID)
      CellID代表一個移動基站,如果你有基站數(shù)據(jù),查CellID你就可以知道這個基站在哪里,移動公司或者警察通過這個知道你是在哪個基站范圍打的移動電話。

    這些信息有什么用呢? 通過這些信息可以知道你的手機是從哪個國家,區(qū)域和哪個基站接入移動網(wǎng)絡(luò)的。所以有些防盜手機丟失后,會發(fā)一些類 似"MCC:460;MNC:01;LAC:7198:CELLID:24989"內(nèi)容的短信到你指定號碼就是這個用途,通過這些信息可以從移動查到你的 被盜手機在哪里出現(xiàn)過。不過知道了也沒用,中國人口這么密集,就是在你身邊你也不知道誰是小偷:) 

      這些信息從哪里來呢,一般的手機系統(tǒng)都提供相應(yīng)的API來獲取這些信息(Tower Info),比如Window SmartPhone 或Mobile就是通過RIL.dll里的API來取得,每個手機操作系統(tǒng)不一樣,相關(guān)的信息可以查相關(guān)資料。

    得到了這些信息,如果沒有基站信息表,得到了這些信息也不知道在哪,因為只有移動運營商有相關(guān)的信息,除非你是運營商或者警察才能得到這些信息。是 不是我們就查不到相應(yīng)的數(shù)據(jù)呢,當(dāng)然不是,強大的Google就有,這里就要提到Google Mobile Maps API,里面囊括了比較全的基站信息,中國的也有,就是偏遠地區(qū)的有沒有就不知道了。Google Mobile Maps本身就是使用的這些信息,感興趣可以試一試,沒有GPS模塊也能定位到你手機位置,但精度不大,取決于基站的位置離你多遠。

      同樣我們自己也可以開發(fā)相應(yīng)的手機應(yīng)用來定位,只要調(diào)用Google現(xiàn)成的API(Secret API)“.

  • 首先讀取你自己手機的CellID和LAC。
  • 通過Http連接發(fā)送Post請求到http://www.google.com/glm/mmap。
  • 傳入CellID和LAC參數(shù),從API返回基站的經(jīng)緯度(Latitude/Longitude)。
  • 另外有個可以參考的例子(windows mobile)http://www.codeproject.com/KB/mobile/DeepCast.aspx

       下面是通過j2me獲取手機imei號碼和cellid(基站號)的例子

    package jizhan;
    import javax.microedition.lcdui.Command;
    import javax.microedition.lcdui.CommandListener;
    import javax.microedition.lcdui.Display;
    import javax.microedition.lcdui.Displayable;
    import javax.microedition.lcdui.Form;
    import javax.microedition.midlet.MIDlet;
    import javax.microedition.midlet.MIDletStateChangeException;

    public class GetIMEIAndCellId extends MIDlet implements CommandListener {
        
    private Command exitCommand = new Command("exit", Command.EXIT, 1);

         Form form 
    = new Form("imei and cellid");
         Display display 
    = null;

        
    public GetIMEIAndCellId() {
             display 
    = Display.getDisplay(this);

         }


        
    protected void destroyApp(boolean arg0) {

         }


        
    protected void pauseApp() {

         }


        
    protected void startApp() throws MIDletStateChangeException {
            
    //獲取系統(tǒng)信息
             String info = System.getProperty("microedition.platform");
            
    //獲取到imei號碼
             String imei = "";
            
    //cellid
             String cellid = "";
            
    //lac
             String lac = "";
            
    // #if polish.vendor==Sony-Ericsson
             imei = System.getProperty("com.sonyericsson.imei");
            
    //參考 http://forums.sun.com/thread.jspa?threadID=5278668
            
    //https://developer.sonyericsson.com/message/110949
             cellid = System.getProperty("com.sonyericsson.net.cellid");
            
    //獲取索愛機子的
             lac = System.getProperty("com.sonyericsson.net.lac");
            
    // #else if polish.vendor==Nokia
             imei = System.getProperty("phone.imei");
            
    if (imei == null || "".equals(imei)) {
                 imei 
    = System.getProperty("com.nokia.IMEI");
             }

            
    if (imei == null || "".equals(imei)) {
                 imei 
    = System.getProperty("com.nokia.mid.imei");
             }

            
    //獲取到cellid
            
    //參考http://wiki.forum.nokia.com/index.php/CS000947_-_Getting_Cell_ID_in_Java_ME
            
    // #if polish.group==Series60
             cellid = System.getProperty("com.nokia.mid.cellid");
            
    // #else if polish.group==Series40
             cellid = System.getProperty("Cell-ID");
            
    // #endif
            
    // #else if polish.vendor==Siemens
             imei = System.getProperty("com.siemens.imei");
            
    // #else if polish.vendor==Motorola
             imei = System.getProperty("com.motorola.IMEI");
            
    //cellid 參考 http://web.mit.edu/21w.780/www/spring2007/guide/
             cellid = System.getProperty("CellID");
            
    // #else if polish.vendor==Samsung
             imei = System.getProperty("com.samsung.imei");
            
    // #endif

            
    if (imei == null || "".equals(imei)) {
                 imei 
    = System.getProperty("IMEI");
             }


            
    //展示出來
             form.append("platforminfo:" + info);
             form.append(
    "imei:" + imei);
             form.append(
    "cellid:" + cellid);
             form.setCommandListener(
    this);
             form.addCommand(exitCommand);
             display.setCurrent(form);
         }


        
    public void commandAction(Command cmd, Displayable item) {
            
    if (cmd == exitCommand) {
                 destroyApp(
    false);
                 notifyDestroyed();
             }

         }


    }

      需要注意的是,必須是受信任的Midlet才可以取到這些數(shù)據(jù)。也就是說Midlet必須經(jīng)過簽名上述代碼才可以工作,否則獲取到的是NULL。。
    下面是從別的地方看來的,沒做過測試,供參考。
    a) Nokia = System.getProperty("com.nokia.mid.imei");
    System.getProperty("com.nokia.IMEI");
    System.getProperty("phone.imei");
    b) Samsung
    System.getProperty("com.samsung.imei");
    c) Sony-Ericsson
    System.getProperty("com.sonyericsson.imei");

    IMSI: IMSI全稱是International Mobile Subscriber Identification Number,移動用戶身份碼。當(dāng)手機開機后,在接入網(wǎng)絡(luò)的過程中有一個注冊登記的過程,系統(tǒng)通過控制信道將經(jīng)加密算法后的參數(shù)組傳送給客戶,手機中的 SIM卡收到參數(shù)后,與SIM卡存儲的客戶鑒權(quán)參數(shù)經(jīng)同樣算法后對比,結(jié)果相同就允許接入,否則為非法客戶,網(wǎng)絡(luò)拒絕為此客戶服務(wù)。IMSI唯一的標(biāo)志了 一個SIM卡。
    IMEI: IMEI即International Mobile Equipment Identity(國際移動設(shè)備身份)的簡稱,也被稱為串號,它唯一標(biāo)志了一臺移動設(shè)備,比如手機。 IMEI碼一般由15位數(shù)字組成,絕大多數(shù)的GSM手機只要按下“*#06#”,IMEI碼就會顯示出來。其格式如下: TAC即Type Approval Code,為設(shè)備型號核準號碼。FAC即Final Assembly Code,為最后裝配號碼。 SNR即Serial Number,為出廠序號。 SP即Spare Number,為備用號碼。  

      有時候,我們在應(yīng)用中需要獲取IMSI或者IMEI號用于將應(yīng)用程序和手機或SIM卡綁在一起。獲取的方式在各不同廠商的各款手機上不盡相同,在motorola RAZR E6   上采用System.getProperty()獲取。相應(yīng)程序代碼是:

                 String imei= System.getProperty("IMEI"); //for E6
                 if ( null == imei )
                     imei = System.getProperty("phone.IMEI");
                
                 String imsi = System.getProperty("IMSI"); //for E6
                 if ( null == imsi )
                     imei = System.getProperty("phone.IMSI");
                
                 g.drawString("IMEI: "+imei, 10, 50, Graphics.LEFT | Graphics.TOP);

                 g.drawString("IMSI: "+imsi, 10, 70, Graphics.LEFT | Graphics.TOP);

    參考地址:
    http://blog.csdn.net/phiger/archive/2009/07/22/4371922.aspx
    http://hi.baidu.com/lfcomputer/blog/item/0520e0d37a410a3c970a16c1.html
    http://wiki.forum.nokia.com/index.php/CS000947_-_Getting_Cell_ID_in_Java_ME
    posted on 2009-12-03 16:30 天狼 閱讀(2988) 評論(4)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产午夜精品理论片免费观看 | 午夜精品射精入后重之免费观看 | 亚洲深深色噜噜狠狠网站| 成年女性特黄午夜视频免费看 | 最近免费中文字幕大全高清大全1 最近免费中文字幕mv在线电影 | 亚洲av乱码中文一区二区三区 | 亚洲综合区图片小说区| 日本黄页网站免费| 免费无码作爱视频| 亚洲人成网站999久久久综合| 婷婷综合缴情亚洲狠狠尤物| 日本一道本不卡免费| 亚洲精品无码mⅴ在线观看 | 亚洲精品免费网站| 久久影院亚洲一区| 久久久久久免费视频| 中文字幕不卡免费视频| 亚洲中文字幕乱码AV波多JI| 亚洲欧洲美洲无码精品VA| 最近中文字幕mv免费高清电影| xxxxx做受大片视频免费| 色噜噜亚洲男人的天堂| 国产亚洲精品岁国产微拍精品| 91嫩草免费国产永久入口| 中文字幕不卡免费视频| 亚洲av无码无线在线观看| 亚洲欧洲综合在线| 国产精品国产亚洲精品看不卡| 国产精品久久香蕉免费播放| 999国内精品永久免费视频| 成人免费一区二区三区| 久久精品国产亚洲AV天海翼| 亚洲伊人久久大香线蕉| 亚洲精品乱码久久久久久| 免费一级特黄特色大片在线| 在线观看AV片永久免费| 免费观看无遮挡www的小视频| 永久免费精品影视网站| 精品国产亚洲第一区二区三区 | 亚洲香蕉免费有线视频| 国内永久免费crm系统z在线|