- 浏览: 252648 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
maozilee:
njoiop 写道看得懂吗,看到这个还不错(http://ww ...
使用百度地图API将谷歌地图坐标转换为百度地图坐标 -
njoiop:
看得懂吗,看到这个还不错(http://www.haoserv ...
使用百度地图API将谷歌地图坐标转换为百度地图坐标 -
di1984HIT:
不错。,不错
MySQL 5.5中使用UNIX_TIMESTAMP分区【按天】 -
zhouhongyan123:
js地址变了!! http://developer.baidu ...
GPS定位转百度坐标,精度很高! -
tanier53:
那我最近也在做大批量导入这个功能,你说得比较好,但我有疑问数据 ...
用Java向数据库中插入大量数据时的优化
package com.mopa.LocationMe; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.json.JSONArray; import org.json.JSONObject; import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Looper; import android.telephony.TelephonyManager; import android.telephony.gsm.GsmCellLocation; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.RelativeLayout.LayoutParams; import android.widget.TextView; public class LocationMe extends Activity { /** * mTxtLocal显示结果 * mLocalOkListener接口对象的引用 * mProgressDialog进度条 * HttpClient,HttpParams * timeout超时设置 */ private TextView mTxtLocal=null; private OnGetLocalOkListener mLocalOkListener=null; private ProgressDialog mProgressDialog = null; private HttpClient httpclient; private HttpParams httpParameters; private int timeoutConnection = 3000; private int timeoutSocket = 5000; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //布局 RelativeLayout mRlayout=new RelativeLayout(this); LayoutParams params=new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.ALIGN_PARENT_TOP); params.addRule(RelativeLayout.ALIGN_PARENT_LEFT); Button mBtnGetLocal=new Button(this); mBtnGetLocal.setText("Get Me-Location."); mRlayout.addView(mBtnGetLocal,params); mBtnGetLocal.setId(11); //设置onClickListener监听事件 mBtnGetLocal.setOnClickListener(mOnClickListener); params=new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.BELOW,11); mTxtLocal=new TextView(this); mRlayout.addView(mTxtLocal,params); setContentView(mRlayout); } //监听对象,这里是个匿名内部类. private OnClickListener mOnClickListener=new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub getItude(); }//end onClick; }; //通过经纬度获取地理信息 private void getLocalByItude(String latitude,String longitude) { HttpURLConnection conn = null; String line=null; try { URL url=new URL("http://maps.google.cn/maps/geo?key=abcdefg&q=" + latitude + "," + longitude); conn = (HttpURLConnection) url.openConnection(); conn.setDoInput(true); conn.setDoOutput(true); conn.setUseCaches(false); conn.setConnectTimeout(timeoutConnection); conn.setReadTimeout(timeoutSocket); conn.setRequestMethod("GET"); InputStream inputStream=conn.getInputStream(); InputStreamReader inStreamReader=new InputStreamReader(inputStream,"utf-8"); BufferedReader bufReader=new BufferedReader(inStreamReader); StringBuffer bufStr=new StringBuffer(); while((line=bufReader.readLine())!=null) { bufStr.append(line); } line=bufStr.toString(); if(line!=null&&line.length()>0) { JSONObject jsonobject = new JSONObject(line); JSONArray jsonArray = new JSONArray(jsonobject.get("Placemark") .toString()); line=""; for (int i = 0; i < jsonArray.length(); i++) { line=jsonArray.getJSONObject(i).getString("address"); } //回调 mLocalOkListener.onGetOk(line); } } catch (Exception e) { // TODO: handle exception mLocalOkListener.onGetOk(""); } finally{ if(conn!=null) { conn.disconnect(); mLocalOkListener.onGetOk(line); } } } //获得主线程的Handler private Handler mHandler=new Handler(Looper.getMainLooper()); private void getItude() { mProgressDialog = new ProgressDialog(this); mProgressDialog.setMessage("正在获取中..."); mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); mProgressDialog.show(); //匿名内部类,回调调用的函数 this.setOnGetLocalOkListener(new OnGetLocalOkListener() { @Override public void onGetOk(String local) { // TODO Auto-generated method stub final String mlocal=local; mHandler.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub if(mlocal.length()>0) { mTxtLocal.setText(mlocal); System.out.println("onGetOk........"); new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub saveLocal(mlocal); } }).start(); mProgressDialog.dismiss(); } else { mTxtLocal.setText("获取位置失败,请检查网络是否开启"); mProgressDialog.dismiss(); } } }); } }); //开启新的线程去获取经纬度 new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub TelephonyManager mTelNet = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String operator=mTelNet.getNetworkOperator(); String mcc=operator.substring(0,3); String mnc=operator.substring(3); GsmCellLocation location=(GsmCellLocation)mTelNet.getCellLocation(); int cid=location.getCid(); int lac=location.getLac(); httpParameters = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); httpclient = new DefaultHttpClient(httpParameters); HttpPost post=new HttpPost("http://www.google.com/loc/json"); try { 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); JSONObject tower=new JSONObject(); tower.put("mobile_country_code", mcc); tower.put("mobile_network_code", mnc); tower.put("cell_id", cid); tower.put("location_area_code", lac); JSONArray towerarray=new JSONArray(); towerarray.put(tower); holder.put("cell_towers", towerarray); StringEntity query=new StringEntity(holder.toString()); post.setEntity(query); HttpResponse response=httpclient.execute(post); 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); } JSONObject json=new JSONObject(strBuff.toString()); JSONObject subjosn=new JSONObject(json.getString("location")); getLocalByItude(subjosn.getString("latitude"),subjosn.getString("longitude")); } catch (Exception e) { // TODO: handle exception mLocalOkListener.onGetOk(""); } finally{ post.abort(); httpclient=null; } } }).start(); } FileWriter mFileWriter=null; //写文件,保存刚才获取成功的地理位置 public void saveLocal(String local) { // TODO Auto-generated method stub try { String strFiles=Environment.getExternalStorageDirectory().toString()+"/Local/"; File outDir=new File(strFiles); File outFile=new File(strFiles+"LocalMe.txt"); if(outDir.exists()==false) { outDir.mkdirs(); } System.out.println(outFile.getAbsolutePath()); if(outFile.exists()==false) { System.out.println("outFile.exists()==false"); outFile.createNewFile(); } System.out.println(outFile.getAbsolutePath()); mFileWriter=new FileWriter(outFile,true); //加入日期 Date date = new Date(); SimpleDateFormat sDataForamat = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA); String strTime = sDataForamat.format(date); mFileWriter.write(strTime+":"+local+"\n"); } catch (IOException e) { // TODO: handle exception e.printStackTrace(); }finally { if(mFileWriter!=null) { try { mFileWriter.close(); } catch (IOException e2) { // TODO: handle exception } } } } //设置监听类的引用对象 public void setOnGetLocalOkListener(OnGetLocalOkListener listener) { mLocalOkListener = listener; } //监听类接口 public interface OnGetLocalOkListener { void onGetOk(String local); } }
来源:http://www.cnblogs.com/patui/archive/2011/09/10/2173434.html
发表评论
-
Android Get Network Type获得网络类型
2012-07-09 00:14 2111TelephonyManager teleMan = (Tel ... -
BlueStacks让 Android 应用跑在 Windows 平台上!
2011-12-21 13:55 1255BlueStacks 的产品能够让 Android 上的 ... -
Java下面根据两点经纬度坐标来算距离
2011-09-22 16:44 10868public class Test { priva ... -
【转】android hal 层GPS 研究总结
2011-09-22 01:41 4205/Eclair/hardware/libhardware_ ... -
android GPS JAVA 获取GPS功能是否禁用
2011-09-22 01:39 1588获取GPS功能是否禁用: mgr=(Locatio ... -
android GPS JAVA应用程序编程-------获得经纬度,卫星信息等
2011-09-22 01:39 2057package android.test; ...
相关推荐
综上所述,Android基于GeolocationAPI的基站定位涉及到网络通信、JSON解析、UI更新以及权限管理等多个方面,需要开发者对Android系统和网络编程有深入理解。在实际应用中,还需要考虑到不同设备、网络环境的差异,...
总的来说,Google基站定位Java代码涉及到的主要知识点包括:Android系统的TelephonyManager类,Google Maps Geolocation API的使用,基站信息的获取,以及API请求和响应的处理。在实际开发中,还需要考虑API调用频率...
HTML5的地理定位功能演示
全球定位API(Geolocation API)是Web开发中的一个重要工具,它允许Web应用程序获取用户设备的地理位置信息,为实现基于位置的服务提供了便利。这一API是W3C组织制定的标准,旨在提高网页与移动应用的地理定位功能,...
当前,在Android上,它使用 。 Google不推荐使用此API,因为它不如推荐的准确和慢。 这是我们希望在不久的将来更改的内容 。 为了将新的与React Native一起使用,请查看替代库: 入门 yarn add @react-native-...
一个简单的学习项目,使我的脑袋环绕HTML5地理位置API和Google Maps。 包括Bootstrap 3,Angularjs,angular-google-maps和lodash。 使用Surge.sh托管
诺基亚 GSM 定位黑客 用 Python 编写的一组黑客,使运行 Symbian 60 的诺基亚手机记录(和报告) 蜂窝信息及其地理等效信息。 该软件基于 py60 Python 浅蓝 谷歌齿轮 手机使用 Py60 收集数据(如 、 、 和 ),...
3. **定位用户**:使用`GeolocationApi`来获取设备的位置信息。这通常需要用户的同意,因为涉及位置权限。一旦得到许可,API会返回包含经度和纬度的`LatLng`对象。 4. **搜索附近地点**:有了用户的位置信息后,...
最后,第11章介绍GeolocationAPI,用于获取用户的地理位置信息,并结合GoogleMapsAPI实现具体应用。 本书可作为HTML5开发的工具书和学习读物,书中的源代码可以在支持网站下载。书籍的编写由多位计算机专业的副教授...
8. **地理定位**:可以使用JavaScript库(如`geoip-js`或`geolocationapi`)获取用户的IP地址,然后通过IP查找服务(如MaxMind)推测用户可能所在的地区。 9. **Cookie**:除了会话,还可以使用Cookie保存用户的...
差距 Google API检查器。... GeolocationAPI RouteToTraveledAPI SpeedLimitRoadsAPI PlaceDetailsAPI NearbySearchPlacesAPI TextSearchPlacesAPI PlacesPhotoAPI PlayableLocationsAPI FCMAPI