百度定位(不显示界面获取经纬度以及详细地址信息)
2015-03-09 09:51
465 查看
上图:
效果图上了!大家看看应该很明白干什么用的了!在我们的实际开发中,往往很多时候,都需要我们的定位参数上传到服务器,可是我们又不需要这种地图界面!而只是让它都在后台完成!其实这个很好解决。今天我将一步一步的把代码分享上来。
第一步:对于要用到百度定位,首先你需要去百度开发网站申请appId 和 密钥!
百度地图开发者平台创建应用和申请密钥
在这个里面,你将要把自己的应用申请到百度开发者平台,并且获取以上信息。
第二步:你将要下载最新的sdk的jar包
百度地图定位sdk开发包下载
第三步:代码的书写:
把第二步下载下来的开发包中的lib中的目录完整的复制粘贴到工程的libs目录下。
同时在配置清单文件中添加如下权限:
在配置清单文件中添加密钥与服务
这里完成后,我们书写主要的java代码了,我这里把这个类简单的整理了下:
我们只需要在我们调用的时候简单的调用就可以了:
好,到此ok,至于布局什么的,相必大家都知道了!
效果图上了!大家看看应该很明白干什么用的了!在我们的实际开发中,往往很多时候,都需要我们的定位参数上传到服务器,可是我们又不需要这种地图界面!而只是让它都在后台完成!其实这个很好解决。今天我将一步一步的把代码分享上来。
第一步:对于要用到百度定位,首先你需要去百度开发网站申请appId 和 密钥!
百度地图开发者平台创建应用和申请密钥
在这个里面,你将要把自己的应用申请到百度开发者平台,并且获取以上信息。
第二步:你将要下载最新的sdk的jar包
百度地图定位sdk开发包下载
第三步:代码的书写:
把第二步下载下来的开发包中的lib中的目录完整的复制粘贴到工程的libs目录下。
同时在配置清单文件中添加如下权限:
<!-- 这个权限用于进行网络定位 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 这个权限用于访问GPS定位 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 --> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 用于读取手机当前的状态 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 访问网络,网络定位需要上网 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 允许应用读取低级别的系统日志文件 --> <uses-permission android:name="android.permission“
在配置清单文件中添加密钥与服务
<!-- 百度密钥(自己申请):4QhGGpw4Evv808trpVBkAl1a --> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="4QhGGpw4Evv808trpVBkAl1a" /> <!-- 百度地图定位的服务 --> <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" > </service>
这里完成后,我们书写主要的java代码了,我这里把这个类简单的整理了下:
package com.lzp.locationgps; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; /** * @类名:LocationGps * @类描述:Gps定位类 * @作者:asus * @创建时间:2015年3月8日-下午2:47:02 * @修改人: * @修改时间: * @修改备注: */ public class LocationGps { private String gpsTime = ""; // 定位时间 private double latitude; // 纬度 private double longitude; // 经度 private double radius; // 半径 private String province = ""; // 省份 private String city = ""; // 城市 private String locationAddr = "";// 详细地址 private String allText = "";// 以上所有信息 private double speed; // 速度 private int satelliteNumber; // 卫星数 private LocationGpsListener listener; // 定位客户端类 public LocationClient mLocationClient = null; // 定位监听器类 public BDLocationListener myListener = new MyLocationListener(); private LocationGps() { } /* 类级的内部类,也就是静态的成员式内部类,该内部类的实例与外部类的实例 没有绑定的关系,而且只有被调用到时才会装载,从而实现了延迟加载 */ private static class SingTonHolder { /* 静态初始化器,由JVM来保证线程安全 */ private static LocationGps instance = new LocationGps(); } public void init() { // 初始化 mLocationClient = new LocationClient(MyApplication.getInstance()); // 设置定位参数 LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); // 打开GPRS option.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02 option.setScanSpan(5000);// 设置发起定位请求的间隔时间为5000ms option.setIsNeedAddress(true);// 返回的定位结果包含地址信息 option.setNeedDeviceDirect(true);// 返回的定位结果包含手机机头的方向 mLocationClient.setLocOption(option); // 注册监听函数 mLocationClient.registerLocationListener(myListener); } /* 该单例实现了延迟加载和线程安全 */ public static LocationGps getInstance() { return SingTonHolder.instance; } /** * @类名:MyLocationListener * @类描述:定位成功之后的回调函数 * @作者:asus * @创建时间:2015年3月8日-下午2:08:45 */ public class MyLocationListener implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { if (location == null) return; StringBuffer sb = new StringBuffer(256); sb.append("时间 : "); sb.append(location.getTime()); gpsTime = location.getTime(); sb.append("\n返回码 : "); sb.append(location.getLocType()); sb.append("\n纬度 : "); sb.append(location.getLatitude()); latitude = location.getLatitude(); sb.append("\n经度 : "); sb.append(location.getLongitude()); longitude = location.getLongitude(); sb.append("\n半径 : "); sb.append(location.getRadius()); radius = location.getRadius(); sb.append("\n省 : "); sb.append(location.getProvince()); province = location.getProvince(); sb.append("\n市 : "); sb.append(location.getCity()); city = location.getCity(); if (location.getLocType() == BDLocation.TypeGpsLocation) { sb.append("\n速度 : "); sb.append(location.getSpeed()); speed = location.getSpeed(); sb.append("\n卫星数 : "); sb.append(location.getSatelliteNumber()); satelliteNumber = location.getSatelliteNumber(); sb.append("\nGPS详细地址:"); sb.append(location.getAddrStr()); locationAddr = location.getAddrStr(); } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) { sb.append("\nNetWorkLocation详细地址 : "); sb.append(location.getAddrStr()); locationAddr = location.getAddrStr(); } allText = sb.toString(); listener.setGpsData(location); } } /** * @方法说明:开启定位 * @方法名称:startGps * @返回值:void */ public void startGps() { init(); // 调用此方法开始定位 mLocationClient.start(); } /** * @方法说明:注销定位 * @方法名称:stopGps * @返回值:void */ public void stopGps() { if(null == mLocationClient){ return; } mLocationClient.unRegisterLocationListener(myListener); mLocationClient.stop(); mLocationClient = null; } public String getGpsTime() { return gpsTime; } public double getLatitude() { return latitude; } public double getLongitude() { return longitude; } public double getRadius() { return radius; } public String getProvince() { return province; } public String getCity() { return city; } public String getLocationAddr() { return locationAddr; } public double getSpeed() { return speed; } public int getSatelliteNumber() { return satelliteNumber; } public String getAllText() { return allText; } public void setListener(LocationGpsListener listener) { this.listener = listener; } public interface LocationGpsListener { public void setGpsData(BDLocation location); } }
我们只需要在我们调用的时候简单的调用就可以了:
package com.lzp.locationgps; import com.baidu.location.BDLocation; import com.lzp.locationgps.LocationGps.LocationGpsListener; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView; public class MainActivity extends Activity implements OnClickListener, LocationGpsListener { private Button dingwei; private Button cancle; private TextView tv; private LocationGps gps; private ProgressBar progressBar1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gps = LocationGps.getInstance(); gps.setListener(this); dingwei = (Button) this.findViewById(R.id.button1); dingwei.setOnClickListener(this); cancle = (Button) this.findViewById(R.id.button2); cancle.setOnClickListener(this); tv = (TextView) this.findViewById(R.id.textView1); tv.setText("点击定位,获取详细信息!"); progressBar1 = (ProgressBar) this.findViewById(R.id.progressBar1); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button1: progressBar1.setVisibility(View.VISIBLE); gps.startGps(); break; case R.id.button2: progressBar1.setVisibility(View.GONE); gps.stopGps(); tv.setText("点击定位,获取详细信息!"); break; } } @Override public void setGpsData(BDLocation location) { progressBar1.setVisibility(View.GONE); tv.setText(gps.getAllText()); gps.stopGps(); } }
好,到此ok,至于布局什么的,相必大家都知道了!
相关文章推荐
- android使用百度地图定位(获取当前经纬度和地址信息)
- 开发定位以及获取当前详细地址
- 安卓定位,获取经纬度,地址信息
- android 基于百度地图api开发定位以及获取详细地址
- Android LocationManager定位之获取经纬度以及城市信息
- android 基于百度地图api开发定位以及获取详细地址
- 转载 Android Map Api 使用和开发 定位我的位置、地图弹出泡泡、通过经纬度获取地址 浮动搜索框 ,通过地址名称获取经纬度和详细地址并定位
- Android Map Api 使用和开发(3)浮动搜索框 ,通过地址名称获取经纬度和详细地址并定位
- android使用百度地图定位(获取当前经纬度和地址信息)
- 根据经纬度获取百度地图的详细地址信息
- Android Map Api 使用和开发(3)浮动搜索框 ,通过地址名称获取经纬度和详细地址并定位
- android 百度地图定位获取经纬度已经拿经纬度得到地址信息
- 利用百度地图Geocoding API获取特定地区或地址的经纬度信息
- android 基于百度地图api开发定位以及获取详细地址
- Android Map Api 使用和开发(3)浮动搜索框 ,通过地址名称获取经纬度和详细地址并定位
- iOS开发——定位获取经纬度坐标,并反编码获得地理位置信息(具体地址,国家、省、市等)
- Android Map Api 使用和开发(3)浮动搜索框 ,通过地址名称获取经纬度和详细地址并定位
- Android 基于百度地图开发定位以及获取当前详细地址(一)
- 如何通过GPS定位器,通过网页请求获取:经纬度信息和速度,以及中文地址信息
- Android地图获取详细街道地址信息 精确定位