android模拟器GPS简单应用(一)

来源:互联网 发布:黄牛抢票软件演唱会 编辑:程序博客网 时间:2024/06/07 06:48

1、首先允许GPS操作权限

  在AndroidManifest.xml 中加入代码:

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

 

2、其中主要应用到的知识点如下所示:

     LocationManager       //This class provides access to the system location services.

     LocationListener        //Used for receiving notifications from the LocationManager when the location has changed

     Location                    //A class representing a geographic location sensed at a particular time (a "fix"). 

 

3、主要实现流程

    1)获取LocationManager实例

    2)实现监听器 LocationListener

    3)注册监听器 LocationListener

    4)获取地理位置信息Location

 

4、主要接口分析与说明

     1)、android不允许直接对LocationManager进行实例化,必须通过接口getSystemService获取LocationManager实例,如:

             locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);。

     2)、监听器的接口onLocationChanged,主要负责捕获地理位置变化后的地理位置信息。

     3)、接口requestLocationUpdates注册监听器

     4)、接口getLastKnownLocation返回最后一次捕获的地理位置信息数据。

 

5、具体实现代码

 

[java] view plaincopy
  1. public class gpstest extends Activity {  
  2.     /** Called when the activity is first created. */  
  3.     LocationManager locationManager;  
  4.     TextView textv;  
  5.     Button btnGetLocation;  
  6.   
  7.     @Override  
  8.     public void onCreate(Bundle savedInstanceState) {  
  9.         super.onCreate(savedInstanceState);  
  10.         setContentView(R.layout.main);  
  11.           
  12.         textv=(TextView)findViewById(R.id.textview);  
  13.         btnGetLocation=(Button)findViewById(R.id.btnGetLocation);  
  14.         btnGetLocation.setOnClickListener(new bntOnClickListen());  
  15.           
  16.         //通过getSystemService接口获取LocationManager实例  
  17.         locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);  
  18.           
  19.         //实现监听器 LocationListener   
  20.         LocationListener locationlisten=new LocationListener() {  
  21.               
  22.             public void onStatusChanged(String arg0, int arg1, Bundle arg2) {  
  23.                 // TODO Auto-generated method stub  
  24.                 // Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数  
  25.             }  
  26.               
  27.             public void onProviderEnabled(String arg0) {  
  28.                 // TODO Auto-generated method stub  
  29.                 // Provider被enable时触发此函数,比如GPS被打开  
  30.             }  
  31.               
  32.             public void onProviderDisabled(String arg0) {  
  33.                 // TODO Auto-generated method stub  
  34.                 // Provider被disable时触发此函数,比如GPS被关闭  
  35.             }  
  36.               
  37.             //当坐标改变时触发此函数;如果Provider传进相同的坐标,它就不会被触发  
  38.             public void onLocationChanged(Location arg0) {  
  39.                 // TODO Auto-generated method stub  
  40.                 if (arg0 != null) {     
  41.                     Log.i("log""Location changed : Lat: "  + arg0.getLatitude() + " Lng: " + arg0.getLongitude());     
  42.                 }    
  43.             }  
  44.         };  
  45.           
  46.         // 注册监听器 locationListener   
  47.         //第 2 、 3个参数可以控制接收GPS消息的频度以节省电力。第 2个参数为毫秒, 表示调用 listener的周期,第 3个参数为米 ,表示位置移动指定距离后就调用 listener  
  48.         locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, locationlisten);  
  49.            
  50.     }  
  51.       
  52.     class bntOnClickListen implements OnClickListener{  
  53.   
  54.         public void onClick(View v) {  
  55.             // TODO Auto-generated method stub  
  56.             //获取地理位置信息数据(如果没实现监听器和注册监听器,好像获取不了地理数据)  
  57.             Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);  
  58.             if (location!=null) {  
  59.                 String strLati = Double.toString(location.getLatitude());  
  60.                 String strLong = Double.toString(location.getLongitude());  
  61.                 //显示地理位置数据  
  62.                 textv.setText(strLati + "/" + strLong);  
  63.             }  
  64.             else{  
  65.                 Log.i("log""location==NULL");  
  66.             }  
  67.         }  
  68.           
  69.     }  
  70. }  

 

6、GPS测试

如果是在模拟器中调试的话,有二种方法可以进行GPS测试。

第一:通过DDMS。打开"Window->Show View->Other” 中打开"Emulator Control” View即可手动设置地理位置数据,如下图所示:

 

第二:使用geo命令。开始-> 运行->输入 telnet 5554,然后在命令行下输入 geo fix -39.4 116.9 326 ,这三个参数分别代表了经度、纬度和海拔(海拔可不写)。
无论是上述的那一种方法,当android捕获到地理信息之后,都会在状态栏上显示一个卫星接收的图标,如下图:

 

0 0
原创粉丝点击