展会信息港展会大全

基于GeolocationAPI的基站定位
来源:互联网   发布日期:2016-01-14 12:24:07   浏览:2573次  

导读:发送的格式:{ location: { latitude: 51.0, longitude: -0.1, altitude: 30.1, accuracy: 1200.1, altitude_accuracy: 10.1, address: { stree......

发送的格式:

{

"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) {

;

}

}

}

赞助本站

人工智能实验室
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港