频道栏目
首页 > 资讯 > Android基础教程 > 正文

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

16-02-02        来源:[db:作者]  
收藏   我要投稿
百度地图我们已经有了简单了解,那么今天我们再谈定位,从地图上看看自己在哪里?

准备工作:

(1)第一步,下载定位Android locSDK3.3。
../201510/GridViewLiveTiles.html

(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文件。
输入以下代码:

[html] view plain copy
 
  1. <?xml version="1.0" encoding="utf-8" ?>  
  2.   
  3. <LinearLayout   
  4.     xmlns:android="http://schemas.android.com/apk/res/android"   
  5.     android:orientation="vertical"   
  6.     android:layout_width="match_parent"   
  7.     android:layout_height="match_parent">  
  8.   
  9.     <TextView  
  10.         android:id="@+id/textview"  
  11.         android:layout_width="fill_parent"  
  12.         android:layout_height="wrap_content"  
  13.         android:text="@string/hello_world" >  
  14.     </TextView>  
  15.       
  16.        
  17.     <Button  
  18.         android:id="@+id/start"  
  19.         android:layout_width="wrap_content"  
  20.         android:layout_height="wrap_content"  
  21.         android:text="开始定位" />  
  22.       
  23.     <Button  
  24.         android:id="@+id/stop"  
  25.         android:layout_width="wrap_content"  
  26.         android:layout_height="wrap_content"  
  27.         android:text="停止定位" />  
  28.       
  29.   
  30. </LinearLayout>  


三、程序文件

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

[java] view plain copy
 
  1. package com.genwoxue.baidulocation;  
  2.   
  3. import com.baidu.location.*;  
  4.   
  5. import android.app.Application;  
  6. import android.widget.TextView;  
  7. import android.os.Vibrator;  
  8.   
  9. public class Location extends Application {  
  10.   
  11.     public LocationClient mLocationClient = null;  
  12.     private String mData;    
  13.     public MyLocationListenner myListener = new MyLocationListenner();  
  14.     public TextView mTv;  
  15.     public NotifyLister mNotifyer=null;  
  16.     public Vibrator mVibrator01;  
  17.     public static String TAG = "LocTestDemo";  
  18.       
  19.     @Override  
  20.     public void onCreate() {  
  21.         mLocationClient = new LocationClient( this );  
  22.         mLocationClient.registerLocationListener( myListener );  
  23.         super.onCreate();   
  24.     }  
  25.       
  26.     public void logMsg(String str) {  
  27.         try {  
  28.             mData = str;  
  29.             if ( mTv != null )  
  30.                 mTv.setText(mData);  
  31.         } catch (Exception e) {  
  32.             e.printStackTrace();  
  33.         }  
  34.     }  
  35.       
  36.     /** 
  37.      * 监听函数,又新位置的时候,格式化成字符串,输出到屏幕中 
  38.      */  
  39.     public class MyLocationListenner implements BDLocationListener {  
  40.         @Override  
  41.         public void onReceiveLocation(BDLocation location) {  
  42.             if (location == null)  
  43.                 return ;  
  44.             StringBuffer sb = new StringBuffer(256);  
  45.             sb.append("\nlatitude : ");  
  46.             sb.append(location.getLatitude());  
  47.             sb.append("\nlontitude : ");  
  48.             sb.append(location.getLongitude());  
  49.             sb.append("\nradius : ");  
  50.             sb.append(location.getRadius());  
  51.             logMsg(sb.toString());  
  52.         }  
  53.           
  54.         public void onReceivePoi(BDLocation poiLocation) {  
  55.             if (poiLocation == null){  
  56.                 return ;   
  57.             }  
  58.             StringBuffer sb = new StringBuffer(256);  
  59.             sb.append("\nlatitude : ");  
  60.             sb.append(poiLocation.getLatitude());  
  61.             sb.append("\nlontitude : ");  
  62.             sb.append(poiLocation.getLongitude());  
  63.             sb.append("\nradius : ");  
  64.             sb.append(poiLocation.getRadius());  
  65.         }  
  66.     }  
  67.       
  68.     public class NotifyLister extends BDNotifyListener{  
  69.         public void onNotify(BDLocation mlocation, float distance){  
  70.             mVibrator01.vibrate(1000);  
  71.         }  
  72.     }  
  73. }  

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

[java] view plain copy
 
  1. package com.genwoxue.baidulocation;  
  2.   
  3. import com.baidu.location.LocationClient;  
  4. import com.baidu.location.LocationClientOption;  
  5.   
  6. import android.app.Activity;  
  7. import android.app.Service;  
  8. import android.os.Bundle;  
  9. import android.os.Vibrator;  
  10. import android.view.View;  
  11. import android.view.View.OnClickListener;  
  12. import android.widget.Button;  
  13. import android.widget.TextView;  
  14.   
  15. public class MainActivity extends Activity {  
  16.     private TextView mTv = null;  
  17.     private Button   btnStart;  
  18.     private Button   btnStop;  
  19.     private Vibrator mVibrator01 =null;  
  20.     private LocationClient mLocClient;  
  21.   
  22.   
  23.     @Override  
  24.     public void onCreate(Bundle savedInstanceState) {  
  25.         super.onCreate(savedInstanceState);  
  26.         setContentView(R.layout.activity_main);  
  27.           
  28.         mTv = (TextView)findViewById(R.id.textview);  
  29.         btnStart = (Button)findViewById(R.id.start);  
  30.         btnStop= (Button)findViewById(R.id.stop);  
  31.   
  32.         mLocClient = ((Location)getApplication()).mLocationClient;  
  33.         ((Location)getApplication()).mTv = mTv;  
  34.         mVibrator01 =(Vibrator)getApplication().getSystemService(Service.VIBRATOR_SERVICE);  
  35.         ((Location)getApplication()).mVibrator01 = mVibrator01;  
  36.           
  37.           
  38.         //开始按钮   
  39.         btnStart.setOnClickListener( new OnClickListener() {  
  40.             @Override  
  41.             public void onClick(View v) {  
  42.                     setLocationOption();  
  43.                     mLocClient.start();  
  44.             }   
  45.         });  
  46.           
  47.           
  48.         //停止按钮   
  49.         btnStop.setOnClickListener( new OnClickListener() {  
  50.             @Override  
  51.             public void onClick(View v) {  
  52.                     mLocClient.stop();  
  53.             }   
  54.         });  
  55.     }     
  56.       
  57.       
  58.     //设置相关参数  
  59.     private void setLocationOption(){  
  60.         LocationClientOption option = new LocationClientOption();  
  61.         option.setCoorType("bd09ll");  
  62.     }  
  63.   
  64.     @Override  
  65.     public void onDestroy() {  
  66.         mLocClient.stop();  
  67.         ((Location)getApplication()).mTv = null;  
  68.         super.onDestroy();  
  69.     }  
  70.   
  71. }  


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

[html] view plain copy
 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.genwoxue.baidulocation" android:versionCode="1"  
  4.     android:versionName="1.0">  
  5.       <uses-sdk  
  6.         android:minSdkVersion="10"  
  7.         android:targetSdkVersion="15" />  
  8.         
  9.     <application android:name="com.genwoxue.baidulocation.Location"  
  10.         android:label="@string/app_name">  
  11.   
  12.         <activity android:name=".MainActivity"   
  13.             android:configChanges="orientation|keyboardHidden"  
  14.             android:label="@string/app_name">  
  15.             <intent-filter>  
  16.                 <action android:name="android.intent.action.MAIN" />  
  17.                 <category android:name="android.intent.category.LAUNCHER" />  
  18.             </intent-filter>  
  19.         </activity>  
  20.   
  21.         <service android:name="com.baidu.location.f" android:enabled="true"  
  22.             android:process=":remote">  
  23.         </service>  
  24.   
  25.     </application>  
  26.   
  27.     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>  
  28.     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>  
  29.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>  
  30.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>  
  31.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>  
  32.     <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>  
  33.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>  
  34.     <uses-permission android:name="android.permission.INTERNET" />  
  35.     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>  
  36.     <uses-permission android:name="android.permission.READ_LOGS"></uses-permission>  
  37.     <uses-permission android:name="android.permission.VIBRATE"></uses-permission>  
  38.     <uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>   
  39. </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>这个是来自百度定位中的服务,不可更改其中内容。 


五、运行结果

 

 

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

相关TAG标签
上一篇:第106章、二维码(从零开始学Android)
下一篇:第100章、WebView应用之Javascript调用Android(从零开始学Android)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站