Android獲取基站坐標代碼

jopen 12年前發布 | 41K 次閱讀 Android Android開發 移動開發

package com.su.station;

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;

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.location.Location; import android.location.LocationManager; import android.os.Bundle; import android.telephony.TelephonyManager; import android.telephony.gsm.GsmCellLocation; import android.util.Log; import android.widget.Toast;

public class TestStationLocationActivity extends Activity { private static final String TAG = "TestStationLocationActivity";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Location location = getportLocation();
    location.getLongitude();
    Toast.makeText(this, location.getLatitude()+location.getLatitude()+"", 100).show();

}

private Location getportLocation() {
    Location loc = null ;
    TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    BufferedReader br = null;
    try 
    {   
        GsmCellLocation gcl = (GsmCellLocation) tm.getCellLocation();
            if (null == gcl)
            {
                    return null;
            }
                int cid = gcl.getCid();
                int lac = gcl.getLac();
                int mcc = Integer.valueOf(tm.getNetworkOperator().substring(0,3));
                int mnc = Integer.valueOf(tm.getNetworkOperator().substring(3,5));
                JSONObject holder = new JSONObject();
                holder.put("version", "1.1.0");
                holder.put("host", "maps.google.com");
                holder.put("request_address", true);

                JSONArray array = new JSONArray();
                JSONObject data = new JSONObject();

                data.put("cell_id", cid);
                data.put("location_area_code", lac);
                data.put("mobile_country_code", mcc);
                data.put("mobile_network_code", mnc);
                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);
                if (resp.getStatusLine().getStatusCode() == 200) 
            {
                    HttpEntity entity = resp.getEntity();
                        br = new BufferedReader(new InputStreamReader(entity.getContent()));
                        StringBuffer sb = new StringBuffer();
                        String result = br.readLine();
                        while (result != null) 
                        {
                                sb.append(result);
                                result = br.readLine();
                        }

                        JSONObject data_ = new JSONObject(sb.toString());
                        data_ = (JSONObject) data_.get("location");
                    loc = new Location(LocationManager.NETWORK_PROVIDER);
                    loc.setLatitude((Double) data_.get("latitude"));
                    loc.setLongitude((Double) data_.get("longitude"));
                    Log.i(TAG, "latitude : " + loc.getLatitude() + "  longitude : " + loc.getLongitude());
                    return loc;
            }
            return null;

    } 

    catch (Exception e) 
    {
            android.util.Log.e(TAG, "network get the latitude and longitude ocurr Exception error", e);
    }
    finally
    {
            if (null != br)
            {
                    try 
                    {
                            br.close();
                    } 
                    catch (IOException e) 
                    {
                            android.util.Log.e(TAG, "network get the latitude and longitude when closed BufferedReader ocurr IOException error", e);
                    }
            }
    }
    return loc;
}

}</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!