歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android的基站、WIFI、GPS定位集合【源碼】

Android的基站、WIFI、GPS定位集合【源碼】

日期:2017/3/1 10:55:50   编辑:Linux編程

集合了gps、wifi、基站定位。

其中GPS定位首先是GpsTask類異步返回GPS經緯度信息

Android的基站、WIFI、GPS定位集合【源碼】下載地址:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /pub/Android源碼集錦/2011年/11月/Android的基站、WIFI、GPS定位集合【源碼】/

----------------------分割線----------------------

GpsTask gpstask = new GpsTask(GpsActivity.this,
new GpsTaskCallBack() {

@Override
public void gpsConnectedTimeOut() {
gps_tip.setText("獲取GPS超時了");
}

@Override
public void gpsConnected(GpsData gpsdata) {
do_gps(gpsdata);
}

}, 3000);
gpstask.execute();

其中3000是設置獲取gps數據timeout時間。GpsTask是根據

locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);


獲取最後一次GPS信息,如果返回為Null則是根據監聽獲取Location信息發生改變時返回的GPS信息。因為手機獲取GPS信息時間比較長,所以這個類實際使用時可能還存在一些BUG。

IAddressTask封裝了獲取地理位置的方法,具體代碼如下:

package com.maxtech.common.gps;

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

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.telephony.TelephonyManager;
import android.telephony.gsm.GsmCellLocation;

public abstract class IAddressTask {

protected Activity context;

public IAddressTask(Activity context) {
this.context = context;
}

public abstract HttpResponse execute(JSONObject params) throws Exception;

public MLocation doWifiPost() throws Exception {
return transResponse(execute(doWifi()));
}

public MLocation doApnPost() throws Exception {
return transResponse(execute(doApn()));
}

public MLocation doGpsPost(double lat, double lng) throws Exception {
return transResponse(execute(doGps(lat, lng)));
}

private MLocation transResponse(HttpResponse response) {
MLocation location = null;
if (response.getStatusLine().getStatusCode() == 200) {
location = new MLocation();
HttpEntity entity = response.getEntity();
BufferedReader br;
try {
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 json = new JSONObject(sb.toString());
JSONObject lca = json.getJSONObject("location");

location.Access_token = json.getString("access_token");
if (lca != null) {
if(lca.has("accuracy"))
location.Accuracy = lca.getString("accuracy");
if(lca.has("longitude"))
location.Latitude = lca.getDouble("longitude");
if(lca.has("latitude"))
location.Longitude = lca.getDouble("latitude");
if(lca.has("address")) {
JSONObject address = lca.getJSONObject("address");
if (address != null) {
if(address.has("region"))
location.Region = address.getString("region");
if(address.has("street_number"))
location.Street_number = address
.getString("street_number");
if(address.has("country_code"))
location.Country_code = address
.getString("country_code");
if(address.has("street"))
location.Street = address.getString("street");
if(address.has("city"))
location.City = address.getString("city");
if(address.has("country"))
location.Country = address.getString("country");
}
}
}
} catch (Exception e) {
e.printStackTrace();
location = null;
}
}
return location;
}

private JSONObject doGps(double lat, double lng) throws Exception {
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);

JSONObject data = new JSONObject();
data.put("latitude", lat);
data.put("longitude", lng);
holder.put("location", data);

return holder;
}

private JSONObject doApn() throws Exception {
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);

TelephonyManager tm = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation gcl = (GsmCellLocation) tm.getCellLocation();
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));

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);

return holder;
}

private JSONObject doWifi() throws Exception {<br /> 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);

WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

if(wifiManager.getConnectionInfo().getBSSID() == null) {
throw new RuntimeException("bssid is null");
}

JSONArray array = new JSONArray();
JSONObject data = new JSONObject();
data.put("mac_address", wifiManager.getConnectionInfo().getBSSID());
data.put("signal_strength", 8);
data.put("age", 0);
array.put(data);
holder.put("wifi_towers", array);

return holder;
}

public static class MLocation {
public String Access_token;

public double Latitude;

public double Longitude;

public String Accuracy;

public String Region;

public String Street_number;

public String Country_code;

public String Street;

public String City;

public String Country;

@Override
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append("Access_token:" + Access_token + "\n");
buffer.append("Region:" + Region + "\n");
buffer.append("Accuracy:" + Accuracy + "\n");
buffer.append("Latitude:" + Latitude + "\n");
buffer.append("Longitude:" + Longitude + "\n");
buffer.append("Country_code:" + Country_code + "\n");
buffer.append("Country:" + Country + "\n");
buffer.append("City:" + City + "\n");
buffer.append("Street:" + Street + "\n");
buffer.append("Street_number:" + Street_number + "\n");
return buffer.toString();
}
}

}
Copyright © Linux教程網 All Rights Reserved