zoukankan      html  css  js  c++  java
  • 安卓开发笔记①:利用高德地图API进行定位、开发电子围栏、天气预报、轨迹记录、搜索周边(位置)

    高德地图开发时需要导入的包在下面的网盘链接中:(由于高德地图api更新得太快,官网上最新的包使用起来没有之前的方便,所以以下提供最全面的原始包)

    链接:http://pan.baidu.com/s/1eR8Nchc 密码:be1v     

    其中armeabi这个文件夹和其他4个jar是必要导入的,另外两个文件夹确保兼容性。

    ①首先登陆高德lbs开放平台获取Key,下面是官方详细教程:

    http://lbs.amap.com/dev/ticket#/faqcat/1

    (本人使用的是eclipse,所以获取安全码SHA1的方法为Windows->preferences->Android->build,如下图所示的SHA1 fingerprint)

    然后你要设置你所开发的app的包,即在下面的Package中输入你的app包名(这点不能输错)

    ②申请到key之后,修改安卓项目的AndroidManifest.xml文件,即获取相关的权限和导入key(才能正常启动高德地图)

    11个<uses-permission....>就是相关权限的设置,把代码写进去

    还有加一个<meta-data....>把你的key导入进去,需要记住android:name="com.amap.api.v2.apikey"

    下面的代码都是调试所用,所有信息都将在logcat栏目里面显示。

    ③进行定位:

    [java] view plain copy
     
     
     
     在CODE上查看代码片派生到我的代码片
    1. package (你的包名);  
    2.   
    3. import com.amap.api.location.AMapLocation;  
    4. import com.amap.api.location.AMapLocationListener;  
    5. import com.amap.api.location.LocationManagerProxy;  
    6. import com.amap.api.location.LocationProviderProxy;  
    7. import com.amap.api.maps.model.MyLocationStyle;  
    8.   
    9. import android.app.Activity;  
    10. import android.location.Location;  
    11. import android.os.Bundle;  
    12. import android.util.Log;  
    13. import android.view.Menu;  
    14. import android.view.MenuItem;  
    15.   
    16. public class MainActivity extends Activity implements AMapLocationListener {  
    17.     LocationManagerProxy mLocationManagerProxy;  
    18.     @Override  
    19.     protected void onCreate(Bundle savedInstanceState) {  
    20.         super.onCreate(savedInstanceState);  
    21.         setContentView(R.layout.activity_main);  
    22.         mLocationManagerProxy=LocationManagerProxy.getInstance(this);  
    23.         mLocationManagerProxy.requestLocationData(LocationProviderProxy.AMapNetwork, 2000, 15, this);  
    24.     }  
    25.   
    26.     @Override  
    27.     public boolean onCreateOptionsMenu(Menu menu) {  
    28.         // Inflate the menu; this adds items to the action bar if it is present.  
    29.         getMenuInflater().inflate(R.menu.main, menu);  
    30.         return true;  
    31.     }  
    32.   
    33.     @Override  
    34.     public boolean onOptionsItemSelected(MenuItem item) {  
    35.         // Handle action bar item clicks here. The action bar will  
    36.         // automatically handle clicks on the Home/Up button, so long  
    37.         // as you specify a parent activity in AndroidManifest.xml.  
    38.         int id = item.getItemId();  
    39.         if (id == R.id.action_settings) {  
    40.             return true;  
    41.         }  
    42.         return super.onOptionsItemSelected(item);  
    43.     }  
    44.   
    45.     @Override  
    46.     public void onLocationChanged(Location location) {  
    47.         // TODO Auto-generated method stub  
    48.           
    49.     }  
    50.   
    51.     @Override  
    52.     public void onStatusChanged(String provider, int status, Bundle extras) {  
    53.         // TODO Auto-generated method stub  
    54.           
    55.     }  
    56.   
    57.     @Override  
    58.     public void onProviderEnabled(String provider) {  
    59.         // TODO Auto-generated method stub  
    60.           
    61.     }  
    62.   
    63.     @Override  
    64.     public void onProviderDisabled(String provider) {  
    65.         // TODO Auto-generated method stub  
    66.           
    67.     }  
    68.  @Override  
    69. protected void onDestroy() {  
    70.     // TODO Auto-generated method stub  
    71.     super.onDestroy();  
    72.     mLocationManagerProxy.destroy();  
    73. }  
    74.     @Override  
    75.     public void onLocationChanged(AMapLocation arg0) {  
    76.         // TODO Auto-generated method stub  
    77.         if(arg0!=null&&arg0.getAMapException().getErrorCode()==0){  
    78.             Log.i("helloworld", arg0.toString());  
    79.         }  
    80.     }  
    ④开发电子围栏(也就是设置一个点,可以设置半径,可以监控自己的位置是在圈内还是圈外)
    [java] view plain copy
     
     
     
     在CODE上查看代码片派生到我的代码片
    1.  package (你的包名);  
    2.   
    3. import com.amap.api.maps.AMap.OnMapClickListener;  
    4. import com.amap.api.location.AMapLocation;  
    5. import com.amap.api.location.AMapLocationListener;  
    6. import com.amap.api.location.LocationManagerProxy;  
    7. import com.amap.api.maps.MapView;  
    8. import com.amap.api.maps.model.CircleOptions;  
    9. import com.amap.api.maps.model.LatLng;  
    10.   
    11. import android.app.Activity;  
    12. import android.app.PendingIntent;  
    13. import android.content.BroadcastReceiver;  
    14. import android.content.Context;  
    15. import android.content.Intent;  
    16. import android.content.IntentFilter;  
    17. import android.location.Location;  
    18. import android.location.LocationManager;  
    19. import android.os.Bundle;  
    20. import android.util.Log;  
    21.   
    22. public class GeoFenceActivity extends Activity implements OnMapClickListener,AMapLocationListener{  
    23.     LocationManagerProxy mLocationManagerProxy;  
    24.     MapView mapView;  
    25.     String GEOFENCE_BROADCAST_ACTION="com.example.helloworld";  
    26.     PendingIntent mPendingIntent;  
    27.     @Override  
    28.     protected void onCreate(Bundle savedInstanceState) {  
    29.         // TODO Auto-generated method stub  
    30.         super.onCreate(savedInstanceState);  
    31.         setContentView(R.layout.activity_main);  
    32.         mLocationManagerProxy=LocationManagerProxy.getInstance(this);  
    33.     mapView=(MapView)findViewById(R.id.main_mapView);  
    34.     mapView.onCreate(savedInstanceState);  
    35.     mapView.getMap().setOnMapClickListener(this);  
    36.     Intent intent=new Intent(GEOFENCE_BROADCAST_ACTION);  
    37.     mPendingIntent=PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);  
    38.     IntentFilter intentfilter=new IntentFilter();  
    39.     intentfilter.addAction(GEOFENCE_BROADCAST_ACTION);  
    40.     this.registerReceiver(mGeoFenceReceiver, intentfilter);  
    41.     mLocationManagerProxy.requestLocationData(LocationManager.GPS_PROVIDER,2000,15, this);  
    42.     }  
    43.     private BroadcastReceiver mGeoFenceReceiver=new BroadcastReceiver(){  
    44.   
    45.         @Override  
    46.         public void onReceive(Context context, Intent intent) {  
    47.             // TODO Auto-generated method stub  
    48.             Log.e("helloworld", "收到广播");  
    49.             int i= intent.getIntExtra("status", -1);  
    50.             if(i==1){  
    51.                 Log.e("helloworld", "在地理围栏内部");  
    52.             }  
    53.             if(i==0){  
    54.                 Log.e("helloworld", "在地理围栏外部");  
    55.             }  
    56.         }  
    57.   
    58.     };  
    59.     @Override  
    60.     protected void onResume() {  
    61.         // TODO Auto-generated method stub  
    62.         super.onResume();  
    63.         mapView.onResume();  
    64.       
    65.     }  
    66. @Override  
    67. protected void onDestroy() {  
    68.     // TODO Auto-generated method stub  
    69.     super.onDestroy();  
    70. }  
    71. @Override  
    72. public void onMapClick(LatLng arg0) {  
    73.     // TODO Auto-generated method stub  
    74.     Log.e("helloworld", "lat ="+arg0.latitude);  
    75.     Log.e("helloworld", "lon ="+arg0.longitude);  
    76.     mapView.getMap().addCircle(new CircleOptions().center(arg0).radius(1000));  
    77.     mLocationManagerProxy.addGeoFenceAlert(arg0.latitude, arg0.longitude, 1000, 1000*60*30, mPendingIntent);  
    78. }  
    79. @Override  
    80. public void onLocationChanged(Location location) {  
    81.     // TODO Auto-generated method stub  
    82.       
    83. }  
    84. @Override  
    85. public void onStatusChanged(String provider, int status, Bundle extras) {  
    86.     // TODO Auto-generated method stub  
    87.       
    88. }  
    89. @Override  
    90. public void onProviderEnabled(String provider) {  
    91.     // TODO Auto-generated method stub  
    92.       
    93. }  
    94. @Override  
    95. public void onProviderDisabled(String provider) {  
    96.     // TODO Auto-generated method stub  
    97.       
    98. }  
    99. @Override  
    100. public void onLocationChanged(AMapLocation arg0) {  
    101.     // TODO Auto-generated method stub  
    102.       
    103. }  
    104. }  

    ⑤天气预报(现在或未来的):

    [java] view plain copy
     
     
     
     在CODE上查看代码片派生到我的代码片
    1. package (你的包名);  
    2.   
    3. import java.util.List;  
    4.   
    5. import com.amap.api.location.AMapLocalDayWeatherForecast;  
    6. import com.amap.api.location.AMapLocalWeatherForecast;  
    7. import com.amap.api.location.AMapLocalWeatherListener;  
    8. import com.amap.api.location.AMapLocalWeatherLive;  
    9. import com.amap.api.location.LocationManagerProxy;  
    10.   
    11. import android.app.Activity;  
    12. import android.os.Bundle;  
    13. import android.util.Log;  
    14.   
    15. public class WeatherActivity extends Activity implements AMapLocalWeatherListener{  
    16. LocationManagerProxy mLocationManagerProxy;  
    17.     @Override  
    18. protected void onCreate(Bundle savedInstanceState) {  
    19.     // TODO Auto-generated method stub  
    20.     super.onCreate(savedInstanceState);  
    21.     setContentView(R.layout.activity_main);  
    22.     mLocationManagerProxy=LocationManagerProxy.getInstance(this);  
    23.     mLocationManagerProxy.requestWeatherUpdates(LocationManagerProxy.WEATHER_TYPE_FORECAST,this);  
    24. }  
    25. @Override  
    26.     protected void onDestroy() {  
    27.         // TODO Auto-generated method stub  
    28.         super.onDestroy();  
    29.     }  
    30. @Override  
    31. public void onWeatherForecaseSearched(AMapLocalWeatherForecast arg0) {  
    32.     // TODO Auto-generated method stub  
    33.     //未来天气  
    34. List<AMapLocalDayWeatherForecast> list=arg0.getWeatherForecast();  
    35. for(int i=0;i<list.size();i++){  
    36.     AMapLocalDayWeatherForecast dayweather=list.get(i);  
    37.     Log.i("helloworld", "城市"+dayweather.getCity());  
    38.     Log.i("helloworld", "时间"+dayweather.getDate());  
    39.     Log.i("helloworld", "温度"+dayweather.getDayTemp());  
    40.     Log.i("helloworld", "风力"+dayweather.getDayWindPower());  
    41. }  
    42. }  
    43. @Override  
    44. public void onWeatherLiveSearched(AMapLocalWeatherLive arg0) {  
    45.     // TODO Auto-generated method stub  
    46.     //当天天气  
    47.     Log.i("helloworld", "城市"+arg0.getCity());  
    48.     Log.i("helloworld", "湿度"+arg0.getHumidity());  
    49.     Log.i("helloworld", "风力"+arg0.getWindPower());  
    50. }  
    51. }  

    ⑥轨迹记录(这里是有模拟轨迹数据,如果是真正的设备的话可以把每次定位的数据放入容器中再读取轨迹)
    [java] view plain copy
     
     
     
     在CODE上查看代码片派生到我的代码片
    1. package com.example.maptest;  
    2.   
    3. import java.util.ArrayList;  
    4. import java.util.List;  
    5.   
    6. import com.amap.api.location.AMapLocation;  
    7. import com.amap.api.location.AMapLocationListener;  
    8. import com.amap.api.maps.AMap.OnMapLoadedListener;  
    9. import com.amap.api.maps.MapView;  
    10. import com.amap.api.maps.model.LatLng;  
    11. import com.amap.api.maps.model.PolygonOptions;  
    12.   
    13. import android.app.Activity;  
    14. import android.location.Location;  
    15. import android.os.Bundle;  
    16. import android.os.Trace;  
    17.   
    18. public class TrackActivity extends Activity implements OnMapLoadedListener{  
    19. MapView mapview;  
    20. double Trace[]={  
    21.         40.03833763826341,116.44161604271481,  
    22.         40.038120,116.441789,  
    23.         40.0378823754,116.441780,  
    24.         40.037589,116.441768,  
    25.         40.03744051,116.44175,  
    26.         40.036884,116.441722,  
    27.         40.03663242,116.441705466};  
    28. List<LatLng>list;  
    29. @Override  
    30.     protected void onCreate(Bundle savedInstanceState) {  
    31.         // TODO Auto-generated method stub  
    32.         super.onCreate(savedInstanceState);  
    33.         setContentView(R.layout.activity_main);  
    34.         mapview=(MapView)findViewById(R.id.main_mapView);  
    35.         mapview.onCreate(savedInstanceState);  
    36.         mapview.getMap().setOnMapLoadedListener(this);  
    37.         list=new ArrayList<LatLng>();  
    38.         for(int i=0;i<Trace.length-1;i++){  
    39.             LatLng latlng=new LatLng(Trace[i], Trace[++i]);  
    40.             list.add(latlng);  
    41.         }  
    42. }  
    43. @Override  
    44.     protected void onResume() {  
    45.         // TODO Auto-generated method stub  
    46.         super.onResume();  
    47.         mapview.onResume();  
    48. }  
    49.     @Override  
    50.         protected void onDestroy() {  
    51.             // TODO Auto-generated method stub  
    52.             super.onDestroy();  
    53.         }  
    54.     @Override  
    55.     public void onMapLoaded() {  
    56.         // TODO Auto-generated method stub  
    57.         mapview.getMap().addPolygon(new PolygonOptions().addAll(list));  
    58.     }  
    59.   
    60. }  


    ⑦搜索周边位置(以下例子是将搜索范围确定在“杨小贤”,“餐饮”,“广州市”)并且是以自己所在大学城位置为中心半径为200000m范围内搜索:
    [java] view plain copy
     
     
     
     在CODE上查看代码片派生到我的代码片
    1. package (你的包名);  
    2.   
    3. import java.util.List;  
    4.   
    5. import com.amap.api.location.AMapLocation;  
    6. import com.amap.api.location.AMapLocationListener;  
    7. import com.amap.api.location.LocationManagerProxy;  
    8. import com.amap.api.location.LocationProviderProxy;  
    9. import com.amap.api.maps.MapView;  
    10. import com.amap.api.services.core.LatLonPoint;  
    11. import com.amap.api.services.core.PoiItem;  
    12. import com.amap.api.services.poisearch.PoiItemDetail;  
    13. import com.amap.api.services.poisearch.PoiResult;  
    14. import com.amap.api.services.poisearch.PoiSearch;  
    15. import com.amap.api.services.poisearch.PoiSearch.OnPoiSearchListener;  
    16. import com.amap.api.services.poisearch.PoiSearch.SearchBound;  
    17.   
    18. import android.app.Activity;  
    19. import android.location.Location;  
    20. import android.os.Bundle;  
    21. import android.util.Log;  
    22. import android.view.View;  
    23. import android.view.View.OnClickListener;  
    24. import android.widget.Button;  
    25.   
    26. public class SearchActivity extends Activity implements AMapLocationListener,OnPoiSearchListener,OnClickListener {  
    27.     LocationManagerProxy mLocationManagerProxy;  
    28.     MapView mapView;  
    29.     @Override  
    30.     protected void onCreate(Bundle savedInstanceState) {  
    31.         // TODO Auto-generated method stub  
    32.         super.onCreate(savedInstanceState);  
    33.         setContentView(R.layout.activity_main);  
    34.         mapView=(MapView)findViewById(R.id.main_mapView);  
    35.         mapView.onCreate(savedInstanceState);  
    36.         mLocationManagerProxy=LocationManagerProxy.getInstance(this);  
    37.         mLocationManagerProxy.requestLocationData(LocationProviderProxy.AMapNetwork, 2000, 15, this);  
    38.     Button button=(Button)findViewById(R.id.button);  
    39.     button.setOnClickListener(this);  
    40.     }  
    41.     @Override  
    42.     public void onLocationChanged(Location location) {  
    43.         // TODO Auto-generated method stub  
    44.           
    45.     }  
    46.   
    47.     @Override  
    48.     public void onStatusChanged(String provider, int status, Bundle extras) {  
    49.         // TODO Auto-generated method stub  
    50.           
    51.     }  
    52.  @Override  
    53. protected void onDestroy() {  
    54.     // TODO Auto-generated method stub  
    55.     super.onDestroy();  
    56. }  
    57.  @Override  
    58. protected void onResume() {  
    59.     // TODO Auto-generated method stub  
    60.     super.onResume();  
    61. }  
    62.     @Override  
    63.     public void onProviderEnabled(String provider) {  
    64.         // TODO Auto-generated method stub  
    65.           
    66.     }  
    67.   
    68.     @Override  
    69.     public void onProviderDisabled(String provider) {  
    70.         // TODO Auto-generated method stub  
    71.           
    72.     }  
    73. AMapLocation location;  
    74.     @Override  
    75.     public void onLocationChanged(AMapLocation arg0) {  
    76.         // TODO Auto-generated method stub  
    77.         location=arg0;  
    78.         Log.e("helloworld", arg0.toString());  
    79.           
    80.     }  
    81.     @Override  
    82.     public void onPoiItemDetailSearched(PoiItemDetail arg0, int arg1) {  
    83.         // TODO Auto-generated method stub  
    84.           
    85.     }  
    86.     @Override  
    87.     public void onPoiSearched(PoiResult arg0, int arg1) {  
    88.         // TODO Auto-generated method stub  
    89.         if(arg1==0){  
    90.             List<PoiItem>list=arg0.getPois();  
    91.             for(int i=0;i<list.size();i++){  
    92.                 PoiItem item=list.get(i);  
    93.                 Log.e("helloworld", item.toString());  
    94.             }  
    95.         }  
    96.     }  
    97.  public void search(){  
    98.      PoiSearch.Query query=new PoiSearch.Query("杨小贤", "餐饮", "广州市");  
    99.      query.setPageSize(10);//每页显示多少个poiitem  
    100.      query.setPageNum(0);  
    101.      PoiSearch poiSearch=new PoiSearch(this, query);  
    102.      poiSearch.setOnPoiSearchListener(this);  
    103.      LatLonPoint poinot=new LatLonPoint(location.getLatitude(), location.getLongitude());  
    104.        
    105.      poiSearch.setBound(new SearchBound(poinot, 200000, true));  
    106.      poiSearch.searchPOIAsyn();  
    107.  }  
    108. @Override  
    109. public void onClick(View v) {  
    110.     // TODO Auto-generated method stub  
    111.     search();  
    112. }  
    113. }  




     
     

    http://blog.csdn.NET/CSDN568302203/article/details/52403706

  • 相关阅读:
    SimpleCursorAdapter的使用
    sizeof和strlen的区别和联系总结
    设计模式-工厂方法模式
    Python第四章-字典
    Python第四章-字典
    Python第三章-字符串
    Python第三章-字符串
    Python 第二章-列表和元组
    Python 第二章-列表和元组
    设计模式-简单工厂模式
  • 原文地址:https://www.cnblogs.com/jjg0519/p/6673662.html
Copyright © 2011-2022 走看看