2011-12-07 38 views
-2

我使用下面的代码来获取使用android的位置坐标。现在我想在黑莓中实现相同的功能。但是我发现许多类都不在黑莓手机中。任何人都可以为我提供这个程序中使用的类的替代品。我在Blackberry中使用了Criteria类,它可以获得坐标。但它适用于移动版,只在版本4.7.1之上,如Here所述。所以我发现这个代码在android中帮助,我想在blackBerry中实现这个。谢谢如何在黑莓中实现此代码

public class GeoLocationActivity extends Activity { 
    GsmCellLocation location; 
    int cellID, lac; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
    location = (GsmCellLocation) tm.getCellLocation(); 

    Button btnDisplayMap = (Button) findViewById(R.id.displayMap); 
    btnDisplayMap.setOnClickListener(new OnClickListener() 
    { 
     public void onClick(View arg0) 
     { 
      //---obtain the CellID and LAC of the device--- 
      CellLocation.requestLocationUpdate();   
      cellID = location.getCid(); 
      lac = location.getLac(); 

      try { 
       if (!displayMap(cellID, lac)) 
       { 
        TextView t = (TextView) findViewById(R.id.status); 
        t.setText("Location not found!"); 
       } 

      } catch (Exception e) {      
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

private boolean displayMap(int cellID, int lac) throws Exception 
{ 
    String urlString = "http://www.google.com/glm/mmap";    

    //---open a connection to Google Maps API--- 
    URL url = new URL(urlString); 
    URLConnection conn = url.openConnection(); 
    HttpURLConnection httpConn = (HttpURLConnection) conn;   
    httpConn.setRequestMethod("POST"); 
    httpConn.setDoOutput(true); 
    httpConn.setDoInput(true); 
    httpConn.connect(); 

    //---write some custom data to Google Maps API--- 
    OutputStream outputStream = httpConn.getOutputStream(); 
    WriteData(outputStream, cellID, lac);  

    //---get the response--- 
    InputStream inputStream = httpConn.getInputStream(); 
    DataInputStream dataInputStream = new DataInputStream(inputStream); 

    //---interpret the response obtained--- 
    dataInputStream.readShort(); 
    dataInputStream.readByte(); 
    int code = dataInputStream.readInt(); 
    if (code == 0) { 
     double lat = (double) dataInputStream.readInt()/1000000D; 
     double lng = (double) dataInputStream.readInt()/1000000D; 
     dataInputStream.readInt(); 
     dataInputStream.readInt(); 
     dataInputStream.readUTF(); 

     EditText et= (EditText)findViewById(R.id.lat); 
     et.setText(lat+""); 
     EditText et2= (EditText)findViewById(R.id.lon); 
     et2.setText(lng+""); 
     return true; 
    } 
    else 
    {   
     return false; 
    } 
} 

private void WriteData(OutputStream out, int cellID, int lac) 
     throws IOException 
     {  
      DataOutputStream dataOutputStream = new DataOutputStream(out); 
      dataOutputStream.writeShort(21); 
      dataOutputStream.writeLong(0); 
      dataOutputStream.writeUTF("en"); 
      dataOutputStream.writeUTF("Android"); 
      dataOutputStream.writeUTF("1.0"); 
      dataOutputStream.writeUTF("Web"); 
      dataOutputStream.writeByte(27); 
      dataOutputStream.writeInt(0); 
      dataOutputStream.writeInt(0); 
      dataOutputStream.writeInt(3); 
      dataOutputStream.writeUTF(""); 

      dataOutputStream.writeInt(cellID); 
      dataOutputStream.writeInt(lac);  

      dataOutputStream.writeInt(0); 
      dataOutputStream.writeInt(0); 
      dataOutputStream.writeInt(0); 
      dataOutputStream.writeInt(0); 
      dataOutputStream.flush();  
     } 

}

+0

一些数量的班黑莓不支持。 所以最好的方法是使用另一个代码来查找位置。 谢谢.......... –

+0

看看[this](http://docs.blackberry.com/en/developers/deliverables/1181/GPS%20and%20BlackBerry%20Maps%20Development%20Guide .pdf)文件。解释如何在BB中使用位置服务 – jprofitt

+0

Blackberry对您的要求是什么?你想要经纬度还是根据Lat和Long显示地图? – alishaik786

回答

0

为了实现这个代码在黑莓:

public void getGPS() { 
    int cellID = GPRSInfo.getCellInfo().getCellId(); 
    int lac = GPRSInfo.getCellInfo().getLAC(); 
    String urlString = "http://www.google.com/glm/mmap"; 
    //---open a connection to Google Maps API--- 
    HttpConnection httpConn = (HttpConnection) Connector.open(urlString); 
    httpConn.setRequestMethod("POST"); 

    //---write some custom data to Google Maps API--- 
    OutputStream outputStream = httpConn.openOutputStream(); 
    writeData(outputStream, cellID, lac); 

    //---get the response--- 
    InputStream inputStream = httpConn.openInputStream(); 
    DataInputStream dataInputStream = new DataInputStream(inputStream); 

    //---interpret the response obtained--- 
    dataInputStream.readShort(); 
    dataInputStream.readByte(); 
    int code = dataInputStream.readInt(); 
    if (code == 0) 
    { 
     double lat = (double) dataInputStream.readInt()/1000000D; 
     double lng = (double) dataInputStream.readInt()/1000000D; 
     dataInputStream.readInt(); 
     dataInputStream.readInt(); 
     dataInputStream.readUTF(); 
     lattitude = String.valueOf(lat); 
     longitude = String.valueOf(lng); 
    } 
} 

private void writeData(OutputStream out, int cellID, int lac) throws IOException { 
    DataOutputStream dataOutputStream = new DataOutputStream(out); 
    dataOutputStream.writeShort(21); 
    dataOutputStream.writeLong(0); 
    dataOutputStream.writeUTF("es"); 
    dataOutputStream.writeUTF("BlacbBerry"); 
    dataOutputStream.writeUTF("1.3.1"); 
    dataOutputStream.writeUTF("Web"); 
    dataOutputStream.writeByte(27); 
    dataOutputStream.writeInt(0); 
    dataOutputStream.writeInt(0); 
    dataOutputStream.writeInt(3); 
    dataOutputStream.writeUTF(""); 

    dataOutputStream.writeInt(cellID); 
    dataOutputStream.writeInt(lac); 

    dataOutputStream.writeInt(0); 
    dataOutputStream.writeInt(0); 
    dataOutputStream.writeInt(0); 
    dataOutputStream.writeInt(0); 
    dataOutputStream.flush(); 
}