网络编号不能填写01,一定要填写1
我使用联通的卡,网络01,需要填写1
version string google api 版本[必]
host string 服务器域名[必]
home_mobile_country_code integer 移动用户所属国家代号[选 中国460]
home_mobile_network_code integer 移动系统号码[选 默认0]
address_language string 反馈数据语言[选 中国 zh_CN]
radio_type string 信号类型[选 gsm|cdma|wcdma]
request_address bool 是否返回数据[必]
cell_towers object 移动基站参数对象[必]
cell_id integer 基站ID[必]
location_area_code integer 地区区域码[必]
age integer 使用好久的数据库[选 默认0表示使用最新的数据库]
timing_advance integer 距离单位
package com.genius.cell;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
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.JSONException;
import org.json.JSONObject;
import android.location.Location;
import android.location.LocationManager;
import android.util.Log;
public class WebManager {
public static Location callGear(List<CellIDInfo> cellID) {
if (cellID == null || cellID.size() == 0)
return null;
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://www.google.com/loc/json");
JSONObject holder = new JSONObject();
try {
holder.put("version", "1.1.0");
holder.put("host", "maps.google.com");
// 非常的慢 holder.put("home_mobile_country_code", 460);
// holder.put("home_mobile_network_code", 1);
holder.put("radio_type", "gsm");
holder.put("request_address", true);
if ("460".equals(cellID.get(0).mobileCountryCode))
holder.put("address_language", "zh_CN");
else
holder.put("address_language", "en_US");
JSONObject data,current_data;
JSONArray array = new JSONArray();
current_data = new JSONObject();
current_data.put("cell_id", cellID.get(0).cellId);
current_data.put("location_area_code", cellID.get(0).locationAreaCode);
current_data.put("mobile_country_code", cellID.get(0).mobileCountryCode);
System.out.println(""+cellID.get(0));
current_data.put("mobile_network_code", 1);//0
current_data.put("age", 0);
current_data.put("signal_strength", -60);
current_data.put("timing_advance", 5555);
array.put(current_data);
// if (cellID.size() > 2) {
// for (int i = 1; i < cellID.size(); i++) {
// data = new JSONObject();
// data.put("cell_id", cellID.get(i).cellId);
// data.put("location_area_code", cellID.get(i).locationAreaCode);
// data.put("mobile_country_code", cellID.get(i).mobileCountryCode);
// data.put("mobile_network_code", cellID.get(i).mobileNetworkCode);
// data.put("age", 0);
// array.put(data);
// }
// }
holder.put("cell_towers", array);
StringEntity se = new StringEntity(holder.toString());
Log.e("Location send", 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) {
Log.e("Locaiton reseive-->", result);
sb.append(result);
result = br.readLine();
}
data = new JSONObject(sb.toString());
data = (JSONObject) data.get("location");
Location loc = new Location(LocationManager.NETWORK_PROVIDER);
loc.setLatitude((Double) data.get("latitude"));
loc.setLongitude((Double) data.get("longitude"));
loc.setAccuracy(Float.parseFloat(data.get("accuracy").toString()));
loc.setTime( System.currentTimeMillis());//AppUtil.getUTCTime());
return loc;
} catch (JSONException e) {
e.printStackTrace();
return null;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static String getAddress(Location itude) throws Exception {
String resultString = "";
/** 这里采用get方法,直接将参数加到URL上 */
String urlString = String.format("http://maps.google.cn/maps/geo?key=abcdefg&q=%s,%s", itude.getLatitude(), itude.getLongitude());
Log.i("URL", urlString);
/** 新建HttpClient */
HttpClient client = new DefaultHttpClient();
/** 采用GET方法 */
HttpGet get = new HttpGet(urlString);
try {
/** 发起GET请求并获得返回数据 */
HttpResponse response = client.execute(get);
HttpEntity entity = response.getEntity();
BufferedReader buffReader = new BufferedReader(new InputStreamReader(entity.getContent()));
StringBuffer strBuff = new StringBuffer();
String result = null;
while ((result = buffReader.readLine()) != null) {
strBuff.append(result);
}
resultString = strBuff.toString();
Log.e("resultAdress--->", resultString);
/** 解析JSON数据,获得物理地址 */
if (resultString != null && resultString.length() > 0) {
JSONObject jsonobject = new JSONObject(resultString);
JSONArray jsonArray = new JSONArray(jsonobject.get("Placemark").toString());
resultString = "";
for (int i = 0; i < jsonArray.length(); i++) {
resultString = jsonArray.getJSONObject(i).getString("address");
}
}
} catch (Exception e) {
throw new Exception("获取物理位置出现错误:" + e.getMessage());
} finally {
get.abort();
client = null;
}
return resultString;
}
}
holder.put("version", "1.1.0");
holder.put("host", "maps.baidu.com");//maps.google.com 使用google的出现异常 ,替换上百度的问起解决
holder.put("home_mobile_country_code", 460);
holder.put("home_mobile_network_code", 0);