基于android系统实现的简单定位功能
来源:互联网 发布:广东网络干部培训登录 编辑:程序博客网 时间:2024/05/04 03:55
首先指出我用的百度定位,参考的百度sdk
界面很简单,图片展示如下
代码分为两个类,当然额外还涉及一些配置信息
配置文件里面加入权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > </uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" > </uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE" > </uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" > </uses-permission> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" > </uses-permission> <uses-permission android:name="android.permission.READ_LOGS" > </uses-permission> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" />
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" > </service> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="8YIqS8pkattbIdsH2xgoEqLG" /> //value值代表自己应用在百度申请到的key值
最后是两端主代码:
public class MyApplication extends Application {public LocationClient mLocationClient;private MyLocationListener mMyLocationListener;public TextView mLocationResult;@Overridepublic void onCreate() {super.onCreate();mLocationClient = new LocationClient(this);mMyLocationListener = new MyLocationListener();mLocationClient.registerLocationListener(mMyLocationListener);}/** * 实现实位回调监听 */public class MyLocationListener implements BDLocationListener {@Overridepublic void onReceiveLocation(BDLocation location) {// Receive LocationStringBuffer sb = new StringBuffer(256);sb.append("time : ");sb.append(location.getTime());sb.append("\nlatitude : ");sb.append(location.getLatitude());sb.append("\nlontitude : ");sb.append(location.getLongitude());if (location.getLocType() == BDLocation.TypeGpsLocation) {sb.append("\nspeed : ");sb.append(location.getSpeed());sb.append("\nsatellite : ");sb.append(location.getSatelliteNumber());sb.append("\ndirection : ");sb.append(location.getDirection());} else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {sb.append("\naddr : ");sb.append(location.getAddrStr());// sb.append(location.getCity());}logMsg(sb.toString());}@Overridepublic void onReceivePoi(BDLocation arg0) {}}/** * 显示请求字符串 * * @param str */public void logMsg(String str) {try {if (mLocationResult != null)mLocationResult.setText(str);} catch (Exception e) {e.printStackTrace();}}}
还有activity文件:
public class MainActivity extends Activity implements OnClickListener {private Button mTestLocBtn;private LocationClient mLocClient;private TextView mLocationResult;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);mLocClient = ((MyApplication) getApplication()).mLocationClient;mLocationResult = (TextView) findViewById(R.id.location_result);((MyApplication) getApplication()).mLocationResult = mLocationResult;mTestLocBtn = (Button) findViewById(R.id.test_demo);mTestLocBtn.setOnClickListener(this);}@Overrideprotected void onStart() {super.onStart();}private boolean mLocationSequency = false;@Overridepublic void onClick(View v) {setLocationOption();// 开始定位mLocClient.start();// 停止定位// ((MyApplication)getApplication()).mLocationClient.stop();if (!mLocationSequency && mLocClient.isStarted()) {// 单次请求定位mLocClient.requestLocation();}}// 设置Optionprivate void setLocationOption() {try {LocationClientOption option = new LocationClientOption();// 设置定位参数包括:定位模式(高精度定位模式,低功耗定位模式和仅用设备定位模式),返回坐标类型,是否打开GPS等等。// 高精度定位模式:这种定位模式下,会同时使用网络定位和GPS定位,优先返回最高精度的定位结果;// 低功耗定位模式:这种定位模式下,不会使用GPS,只会使用网络定位(Wi-Fi和基站定位);// 仅用设备定位模式:这种定位模式下,不需要连接网络,只使用GPS进行定位,这种模式下不支持室内环境的定位。// Hight_Accuracy 高精度定位模式// Battery_Saving 低功耗定位模式// Device_Sensors 仅用设备定位模式option.setLocationMode(LocationMode.Battery_Saving);option.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02option.setScanSpan(5000);// 设置发起定位请求的间隔时间为5000msoption.setNeedDeviceDirect(false);// 返回的定位结果包含手机机头的方向option.setIsNeedAddress(true);// 返回的定位结果包含地址信息mLocClient.setLocOption(option);} catch (Exception e) {e.printStackTrace();}}}上面很多地方都加了备注,本人比较懒,就不仔细讲解了。提供源代码下载地址,有疑问可留言。
http://download.csdn.net/detail/u013936108/7518111
声明:博客可转发,下载地址一定要标上,给其它朋友提供点方便。
0 0
- 基于android系统实现的简单定位功能
- android 系统基于wifi 定位的实现
- 基于百度地图 Android SDKv1.3.5实现简单的定位功能,自定义标题栏
- 基于百度地图 Android SDKv1.3.5实现简单的定位功能,自定义标题栏
- android 定位功能的实现
- Android基于百度API的定位功能
- 百度地图实现简单的定位功能
- 基于ip定位城市的简单实现
- android定位功能的简单应用
- 基于OpenGL的Android系统视频转换功能实现
- 基于OpenGL的Android系统视频转换功能实现
- 实现android基于百度的定位
- Android开发-----定位功能的实现----腾讯地图定位
- 在Android系统上定位功能实现方法
- 在Android系统上定位功能实现方法
- 用jquery实现基于文本的搜索和定位功能
- 基于OpenCascade的简单CAD功能实现
- Android基于百度定位SDK v4.1(LBS)实现定位功能
- poj1035
- ubuntu12.04服务器版本hadoop 1.2.1集群安装遇到问题总结
- linux学习(二)
- MongoNote01.Start
- 4.7寸iPhone6未配蓝宝石屏
- 基于android系统实现的简单定位功能
- 个人品牌
- VS2008中解决“cout未知标识符”问题
- 【英语学习】易错句
- hdu 2665 Kth number(划分树)
- ubuntu+qt+opencv环境配置
- Xcode cannot run using the selected device的解决办法
- swift UIProgressView UISilder UISwitch使用
- MyEclipse中快速重写(Override)基类方法的技巧