通过SIM卡获取GPS,android基站定位原理
2011-10-31 09:51
681 查看
TelephonyManager telManager=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); GsmCellLocation glc=(GsmCellLocation) telManager.getCellLocation(); int cid=glc.getCid();///gsm cell id, -1 if unknown, 0xffff max legal value 基站ID号 int lac=glc.getLac();//写入区域代码 String strOperator=telManager.getNetworkOperator(); int mcc=Integer.valueOf(strOperator.substring(0, 3));//写入当前城市代码 int mnc=Integer.valueOf(strOperator.substring(3, 5));//写入网络代码 String getNumber=""; getNumber+=("cid:"+cid+"\n"); getNumber+=("cid:"+lac+"\n"); getNumber+=("cid:"+mcc+"\n"); getNumber+=("cid:"+mnc+"\n"); 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); 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(); String result=br.readLine(); while(result!=null) { sb.append(getNumber); sb.append(result); result=br.readLine(); } String s=sb.toString(); s=s.substring(s.indexOf("{")); btn.setText(s); JSONObject jo=new JSONObject(s); String values=""; JSONObject arr= jo.getJSONObject("location"); String lat= arr.get("latitude").toString(); String lon=arr.getString("longitude").toString(); Toast.makeText(getApplicationContext(), "经度:"+lon+" 纬度:"+lat,1).show(); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } 最后还要加入网络访问权限 <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
相关文章推荐
- Android基站定位——通过手机信号获取基站信息(一)
- Android基站定位——通过手机信号获取基站信息
- Android获取手机基站信息并进行基站定位(基站定位原理)
- Android获取手机基站信息并进行基站定位(基站定位原理)
- android通过gps获取定位的位置数据和gps经纬度
- Android基站定位——通过手机信号获取基站信息(一)
- Android基站定位——通过手机信号获取基站信息(一)
- 通过gps,wifi,基站定位获取当前位置
- Android基站定位——通过手机信号获取基站信息(一)
- Android基站定位——通过手机信号获取基站信息(一)
- Android基站定位——通过手机信号获取基站信息(一)
- 通过android手机内置GPS获取平面直角坐标和高斯坐标的原理(附代码)
- Android GPS定位 获取经纬度
- Android 通过反射及AIDL获取双卡手机SIM卡相关信息,及注册监听
- 有关基站定位获取GPS以及基站信息的程序
- Android Service获取当前位置(GPS+基站)
- WIFI之一:WIFI常识 && ANDROID平台上调试APM6633 && 基站定位原理
- android GSM+CDMA基站定位--获取移动网络相关信息
- android 通过GPS获取用户地理位置并监听位置变化
- Android Service获取当前位置(GPS+基站)