如何在J2ME中使用cell tower查找用户位置?

时间:2012-07-24 10:12:06

标签: java mobile java-me

我只是想在j2me中使用手机信号塔找到位置名称。

此外,如何将来电重定向到我们自己的应用程序,从正常呼叫信息中向用户显示来电号码?

[截至目前有人打电话给某人显示手机号码时],

我想通过他/她的手机号码向呼叫接收者显示呼叫者的位置。

2 个答案:

答案 0 :(得分:5)

该小区信息由小区塔广播为CBS(小区广播服务)消息,并且由大多数服务提供商在某些预定义信道(通常为050)上连接到该塔的所有GSM电话接收。因此,我们的Java ME应用程序可以使用Push Registry监听此CBS频道并捕获此信息。

按照步骤

  1. 导入库

    import javax.wireless.messaging.*;
    import javax.microedition.io.PushRegistry;
    
  2. 注册Midlet以收听CBS端口50并设置消息监听器

    public void setupListening()
    {        
        try{
        PushRegistry.registerConnection("cbs://:50",this.getClass().getName(),"*");
        }catch(Exception e){}
        String[] connList;
        connList = PushRegistry.listConnections(true);
    if((connList == null) || (connList.length == 0))
    {
      // You can exit the app, if you want
    }
    else 
        { 
        try{
        msgconn = (MessageConnection)Connector.open("cbs://:50");
            msgconn.setMessageListener(this);
        } catch( IOException e){ e.printStackTrace();}
         }
    }
    
  3. 检索CBS消息有效负载。

    public void notifyIncomingMessage(MessageConnection conn)
    {
      try{
            txtmsg =(TextMessage)msgconn.receive();
         }catch(Exception e){System.out.println(e);}
         from = txtmsg.getAddress());
         Msg = txtmsg.getPayloadText();
        // Display from & Msg            
    }
    

答案 1 :(得分:1)

  

我只是想在j2me中使用手机信号塔找到位置名称。

当设备未处于3G模式时,@ Lucifer的方法将在某些网络上显示您自己的当前Cell ID信息。

  

此外,如何将来电重定向到我们自己的应用程序,从正常呼叫信息向用户显示来电号码?

     

[截至目前有人打电话给某人显示手机号码时],

在J2ME中不可能。

  

我想通过他/她的手机号码向呼叫接收者显示呼叫者的位置。

根本不可能!您的手机ID是指您的位置,而不是来电者的位置。即使有一种方法可以将来电信息路由到J2ME应用程序,您可以显示的只是国家/地区信息(例如,开头的数字+44绝对是英国),如果数字是固定电话,则有些高级别的位置信息(例如,开头是+441234的数字是英国贝德福德)。