第103章、百度地图定位-我在哪?(从零开始学Android)

来源:互联网 发布:sql insert into 多条 编辑:程序博客网 时间:2024/04/29 15:19

  百度地图我们已经有了简单了解,那么今天我们再谈定位,从地图上看看自己在哪里?

  基于定位Android SDK请参考百度官方网站:http://developer.baidu.com/map/geosdk-android.htm

  准备工作:    

  (1)第一步,下载定位Android locSDK3.3。
     下载地址:http://developer.baidu.com/map/static/doc/locSDK3.3.zip 

  (2)第二步,解压缩Android locSDK3.3
  

  准备工作至此已经结束。

一、工程配置

  1、第一步,在工程里新建libs文件夹,将开发包里的locSDK_3.3.jar拷贝到libs根目录下,将liblocSDK3.so拷贝到libs\armeabi目录下,拷贝完成后的工程目录如下图所示;

  

  2、第二步:在工程属性->Java Build Path->Libraries中选择“Add External JARs”,选定locSDK_3.3.jar,确定后返回。

  通过以上两步操作后,您就可以正常使用百度地图定位SDK为您提供的全部功能了。

二、设计界面

  1、布局文件

  打开res/layout/activity_main.xml文件。
  输入以下代码:

<?xml version="1.0" encoding="utf-8" ?><LinearLayout     xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="match_parent"     android:layout_height="match_parent">    <TextView        android:id="@+id/textview"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="@string/hello_world" >    </TextView>             <Button        android:id="@+id/start"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="开始定位" />        <Button        android:id="@+id/stop"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="停止定位" />    </LinearLayout>


三、程序文件

  1、Location.java
  打开“src/com.genwoxue.baidulocation/Location.java”文件。
  然后输入以下代码:

package com.genwoxue.baidulocation;import com.baidu.location.*;import android.app.Application;import android.widget.TextView;import android.os.Vibrator;public class Location extends Application {public LocationClient mLocationClient = null;private String mData;  public MyLocationListenner myListener = new MyLocationListenner();public TextView mTv;public NotifyLister mNotifyer=null;public Vibrator mVibrator01;public static String TAG = "LocTestDemo";@Overridepublic void onCreate() {mLocationClient = new LocationClient( this );mLocationClient.registerLocationListener( myListener );super.onCreate(); }public void logMsg(String str) {try {mData = str;if ( mTv != null )mTv.setText(mData);} catch (Exception e) {e.printStackTrace();}}/** * 监听函数,又新位置的时候,格式化成字符串,输出到屏幕中 */public class MyLocationListenner implements BDLocationListener {@Overridepublic void onReceiveLocation(BDLocation location) {if (location == null)return ;StringBuffer sb = new StringBuffer(256);sb.append("\nlatitude : ");sb.append(location.getLatitude());sb.append("\nlontitude : ");sb.append(location.getLongitude());sb.append("\nradius : ");sb.append(location.getRadius());logMsg(sb.toString());}public void onReceivePoi(BDLocation poiLocation) {if (poiLocation == null){return ; }StringBuffer sb = new StringBuffer(256);sb.append("\nlatitude : ");sb.append(poiLocation.getLatitude());sb.append("\nlontitude : ");sb.append(poiLocation.getLongitude());sb.append("\nradius : ");sb.append(poiLocation.getRadius());}}public class NotifyLister extends BDNotifyListener{public void onNotify(BDLocation mlocation, float distance){mVibrator01.vibrate(1000);}}}

  2、MainActivity.java
  打开“src/com.genwoxue.baidumap/MainActivity.java”文件。
  然后输入以下代码:

package com.genwoxue.baidulocation;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import android.app.Activity;import android.app.Service;import android.os.Bundle;import android.os.Vibrator;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity {private TextView mTv = null;private Button   btnStart;private Button   btnStop;private Vibrator mVibrator01 =null;private LocationClient mLocClient;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTv = (TextView)findViewById(R.id.textview);btnStart = (Button)findViewById(R.id.start);btnStop= (Button)findViewById(R.id.stop);mLocClient = ((Location)getApplication()).mLocationClient;((Location)getApplication()).mTv = mTv;mVibrator01 =(Vibrator)getApplication().getSystemService(Service.VIBRATOR_SERVICE);((Location)getApplication()).mVibrator01 = mVibrator01;//开始按钮 btnStart.setOnClickListener( new OnClickListener() {@Overridepublic void onClick(View v) {setLocationOption();mLocClient.start();} });//停止按钮 btnStop.setOnClickListener( new OnClickListener() {@Overridepublic void onClick(View v) {mLocClient.stop();} });}   //设置相关参数private void setLocationOption(){LocationClientOption option = new LocationClientOption();option.setCoorType("bd09ll");}@Overridepublic void onDestroy() {mLocClient.stop();((Location)getApplication()).mTv = null;super.onDestroy();}}


四、配置文件
  打开“AndroidManifest.xml”文件。

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.genwoxue.baidulocation" android:versionCode="1"android:versionName="1.0">  <uses-sdk        android:minSdkVersion="10"        android:targetSdkVersion="15" />  <application android:name="com.genwoxue.baidulocation.Location"android:label="@string/app_name"><activity android:name=".MainActivity"     android:configChanges="orientation|keyboardHidden"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><service android:name="com.baidu.location.f" android:enabled="true"android:process=":remote"></service></application><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><uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission> </manifest>


  注意: 

   由于Location.java继承自Application,所以需要在配置文件中<application android:name="com.genwoxue.baidulocation.Location" ……>节中需要加android:name,其中com.genwoxue.baidulocation为我们的包名称,Location为继承Application的类名称。

  <service android:name="com.baidu.location.f" android:enabled="true"   android:process=":remote">  </service>这个是来自百度定位中的服务,不可更改其中内容。 


五、运行结果

   

  我们已经轻而易举地获得了经纬路,那么如果你想在百度地图的位置,那么把这个经纬度放在上一章《百度地图》中,是不是很简单呢?

 

参考文章:

  AndroidManifest.xml中application name功能介绍

 

原创粉丝点击