public void onClick(View v) { // TODO Auto-generated method stub tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); //int type = tm.getNetworkType(); //if (type ==TelephonyManager.NETWORK_TYPE_CDMA) { location = (CdmaCellLocation) tm.getCellLocation(); if(location == null) return; int sid = location.getSystemId();//系统标识 mobileNetworkCode int bid = location.getBaseStationId();//基站小区号 cellId int nid = location.getNetworkId();//网络标识 locationAreaCode Log.i(\"sid:\", \"\" + sid); Log.i(\"bid:\", \"\" + bid); Log.i(\"nid:\", \"\" + nid); ArrayListCellID = new ArrayList (); CellIDInfo info = new CellIDInfo(); info.cellId = bid; info.locationAreaCode = nid; info.mobileNetworkCode = String.valueOf(sid); info.mobileCountryCode = tm.getNetworkOperator().substring(0, 3); info.mobileCountryCode = tm.getNetworkOperator().substring(3, 5); info.radioType = \"cdma\"; CellID.add(info); Log.d(\"cellId:\", \"\" + info.cellId); Log.d(\"locationAreaCode:\", \"\" + info.locationAreaCode); Log.d(\"mobileNetworkCode:\", info.mobileNetworkCode); Log.d(\"mobileCountryCode:\", info.mobileCountryCode); Location loc = callGear(CellID); if (loc !=null) mTextView.setText(\"纬度:\" + loc.getLatitude() + \"\\n经度:\" + loc.getLongitude()); //}// end if}// end onclick
private Location callGear(ArrayListcellID) { if (cellID == null) 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\", cellID.get(0).mobileCountryCode); holder.put(\"home_mobile_network_code\", cellID.get(0).mobileNetworkCode); holder.put(\"radio_type\", cellID.get(0).radioType); 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); current_data.put(\"mobile_network_code\", cellID.get(0).mobileNetworkCode); current_data.put(\"age\", 0); current_data.put(\"signal_strength\", -60); current_data.put(\"timing_advance\", 5555); array.put(current_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()); Log.d(\"-\", 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(); } Log.d(\"-\", \"null 1\"); return null; }