感谢:
http://www.devdiv.com/home.php?mod=space&uid=23856&do=blog&id=3684
前言:
GPS定位能提供精确, 详细的数据。但是有的时候我们不能通过GPS获得数据,如在屋子里面,无GPS功能等情况。那我们就需要其他的定位手段,基站定位是一个不错的选择。
当我们手机开机时,手机会自动向信号最强的无线通讯台联系,注册信息,这个通讯台就是我们所说的基站,每个基站都有自己的id,我们通过这个基站的id能够找到基站的位置,而国内城市的基站密度可以达到500米以下或者更低,所以能够大体上确定我们的位置。
准备工具:
1. TelephonyManager: 主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。其中包括手机SIM的状态和信息、电信网络的状态及手机用户的信息。在这里我们就是通过这个类获得基站信息。
2. GsmCellLocation:装载着从TelephonyManager中获得的信息。
3. JSONObject,JSONArray:组建json相关的类。
4. 联网相关的类。
代码:
1.获得UI组件
mTextView = (TextView) findViewById(R.id.textview);
mButton = (Button) findViewById(R.id.button);
2.获得基站信息
mTManager = (TelephonyManager) this
.getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation gcl = (GsmCellLocation) mTManager.getCellLocation();
int cid = gcl.getCid();
int lac = gcl.getLac();
int mcc = Integer.valueOf(mTManager.getNetworkOperator().substring(0,
3));
int mnc = Integer.valueOf(mTManager.getNetworkOperator().substring(3,
5));
String getNumber = "";
getNumber += ("cid:"+cid + "\n");
getNumber += ("cid:"+lac + "\n");
getNumber += ("cid:"+mcc + "\n");
getNumber += ("cid:"+mnc + "\n");
3.创建json
try {
JSONObject jObject = new JSONObject();
jObject.put("version", "1.1.0");
jObject.put("host", "maps.google.com");
jObject.put("request_address", true);
if (mcc == 460) {
jObject.put("address_language", "zh_CN");
} else {
jObject.put("address_language", "en_US");
}
JSONArray jArray = new JSONArray();
JSONObject jData = new JSONObject();
jData.put("cell_id", cid);
jData.put("location_area_code", lac);
jData.put("mobile_country_code", mcc);
jData.put("mobile_network_code", mnc);
jArray.put(jData);
jObject.put("cell_towers", jArray);
4. 创建连接,发送请求并接受回应
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(
"http://www.google.com/loc/json");
StringEntity se = new StringEntity(jObject.toString());
post.setEntity(se);
HttpResponse resp = client.execute(post);
BufferedReader br = null;
if (resp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
br = new BufferedReader(
new InputStreamReader(resp.getEntity().getContent()));
StringBuffer sb = new StringBuffer();
}
5. 获得数据 参见json Server Response
StringBuffer sb = new StringBuffer();
String result = br.readLine();
while (result != null) {
sb.append(getNumber);
sb.append(result);
result = br.readLine();
}
mTextView.setText(sb.toString());
权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
分享到:
相关推荐
android基站定位
Android 基站定位例子
android 基站定位程序 目前仅支持联通、移动通信商
Android 基站定位源码.zip
这是android实现基站定位的实现步骤及源代码。
Android 基站定位源码.rar
Android 基站定位源码.zip源码资源下载Android 基站定位源码.zip源码资源下载
Android程序研发源码Android 基站定位源码
本DEMO 是基于百度地图定位sdk 写的 基站定位 demo 可以返回 当前位置的具体地址 和 经纬度
Android基站定位源代码,用于android开发定位所用到的源码
Android基站定位源码.zip
Android 基站定位源码.zip项目安卓应用源码下载Android 基站定位源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
Android 基站定位,更精准的定位方式之一。
android系统基站定位的源代码,代码实现比较简单易懂,有注释!