基于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" />


另外还需要在application里面加入这两行代码

<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
原创粉丝点击