Android 基于GeolocationAPI的基站定位

{
 "location": {
   "latitude": 51.0,
   "longitude": -0.1,
   "altitude": 30.1,
   "accuracy": 1200.1,
   "altitude_accuracy": 10.1,
   "address": {
     "street_number": "100",
     "street": "Amphibian Walkway",
     "postal_code": "94043",
     "city": "Mountain View",
     "county": "Mountain View County",
     "region": "California",
     "country": "United States of America",
     "country_code": "US"
   }
 }
}

返回的格式:              {
 "location": {
   "latitude": 51.0,
   "longitude": -0.1,
   "altitude": 30.1,
   "accuracy": 1200.1,
   "altitude_accuracy": 10.1,
   "address": {
     "street_number": "100",
     "street": "Amphibian Walkway",
     "postal_code": "94043",
     "city": "Mountain View",
     "county": "Mountain View County",
     "region": "California",
     "country": "United States of America",
     "country_code": "US"
   }
 }
}

得到LAC 和CellId后,其它的就是json解析了;

   import java.io.BufferedReader;   import java.io.InputStream;   import java.io.InputStreamReader;   import java.net.URL;   import java.util.Date;      import org.apache.http.HttpEntity;   import org.apache.http.HttpResponse;   import org.apache.http.client.methods.HttpPost;   import org.apache.http.entity.StringEntity;   import org.apache.http.impl.client.DefaultHttpClient;   import org.json.JSONArray;   import org.json.JSONObject;         import Android.app.Activity;   import android.content.Context;   import android.os.Bundle;   import android.telephony.TelephonyManager;   import android.telephony.gsm.GsmCellLocation;   import android.view.View;   import android.widget.Button;   import android.widget.TextView;      public class LocationStation extends Activity {       TextView mTextView;       Button mButton;       TelephonyManager tm;          /** Called when the activity is first created. */       @Override       public void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.main);              mTextView = (TextView) findViewById(R.id.textView);           mButton = (Button) findViewById(R.id.Button);           tm = (TelephonyManager) this                   .getSystemService(Context.TELEPHONY_SERVICE);              mButton.setOnClickListener(new Button.OnClickListener() {                  @Override               public void onClick(View v) {                   // TODO Auto-generated method stub                    GsmCellLocation gcl = (GsmCellLocation) tm.getCellLocation();                   int cid = gcl.getCid();                    int lac = gcl.getLac();                   System.out.println("operator"+tm.getNetworkOperator()); //中国移动43600                    int mcc = Integer.valueOf(tm.getNetworkOperator().substring(0,                           3));                   int mnc = Integer.valueOf(tm.getNetworkOperator().substring(3,                           5));                   /*                  * 发送的格式:{                              "version": "1.1.0" ,                              "host": "maps.google.com",                              "access_token": "2:k7j3G6LaL6u_lafw:4iXOeOpTh1glSXe",                              "home_mobile_country_code": 460,                              "home_mobile_network_code":0,                              "address_language": "zh_CN",                              "radio_type": "gsm",                              "request_address": true ,                              "cell_towers":[                              {                              "cell_id":36526,                              "location_area_code":14556,                              "mobile_country_code":460,                              "mobile_network_code":0,                              "timing_advance":5555                              }                              ]                              }                   */                   try {                       // 组装JSON查询字符串                        JSONObject holder = new JSONObject();                       holder.put("version""1.1.0");                       holder.put("host""maps.google.com");                       holder.put("address_language""zh_CN");                       holder.put("request_address"true);                          JSONArray array = new JSONArray();                       JSONObject data = new JSONObject();                       data.put("cell_id", cid); // 25070                        data.put("location_area_code", lac);// 4474                        data.put("mobile_country_code", mcc);// 460                        data.put("mobile_network_code", mnc);// 0                        array.put(data);                       holder.put("cell_towers", array);                          // 创建连接,发送请求并接受回应                        DefaultHttpClient client = new DefaultHttpClient();                          HttpPost post = new HttpPost(                               "http://www.google.com/loc/json");                          StringEntity se = new StringEntity(holder.toString());                          post.setEntity(se);                       HttpResponse resp = client.execute(post);                          HttpEntity entity = resp.getEntity();                          BufferedReader br = new BufferedReader(                               new InputStreamReader(entity.getContent()));                       StringBuffer sb = new StringBuffer();                       String result = br.readLine();                          while (result != null) {                              sb.append(result);                           result = br.readLine();                       }                       /*                       * 返回格式:   {                            "location": {                              "latitude": 51.0,                              "longitude": -0.1,                              "altitude": 30.1,                              "accuracy": 1200.1,                              "altitude_accuracy": 10.1,                              "address": {                                "street_number": "100",                                "street": "Amphibian Walkway",                                "postal_code": "94043",                                "city": "Mountain View",                                "county": "Mountain View County",                                "region": "California",                                "country": "United States of America",                                "country_code": "US"                              }                            }                          }                       */                       JSONObject jsonObject = new JSONObject(sb.toString());                          JSONObject jsonObject1 = new JSONObject(jsonObject                               .getString("location"));                          getAddress(jsonObject1.getString("latitude"), jsonObject1                               .getString("longitude"));                          //mTextView.setText(sb.toString());                    } catch (Exception e) {                       // TODO: handle exception                    }                  }              });       }          void getAddress(String lat, String lag) {           try {                  URL url = new URL("http://maps.google.cn/maps/geo?key=abcdefg&q="                       + lat + "," + lag);               InputStream inputStream = url.openConnection().getInputStream();               InputStreamReader inputReader = new InputStreamReader(inputStream,                       "utf-8");               BufferedReader bufReader = new BufferedReader(inputReader);                  String line = "", lines = "";                  while ((line = bufReader.readLine()) != null) {                   lines += line;               }               if (!lines.equals("")) {                      JSONObject jsonobject = new JSONObject(lines);                   JSONArray jsonArray = new JSONArray(jsonobject.get("Placemark")                           .toString());                   for (int i = 0; i < jsonArray.length(); i++) {                          mTextView.setText( jsonArray.getJSONObject(i).getString("address"));                                                  }                  }              } catch (Exception e) {               ;           }          }   }  

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwgfpx.html