android 获取粗略位置_Android 获取地理位置的经度和纬度(zz)

在Android应用程序中,可以使用LocationManager来获取移动设备所在的地理位置信息。看如下实例:新建android应用程序TestLocation。

1、activity_main.xml布局文件

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:id="@+id/positionView"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

用于显示获取到的位置信息。

2、MainActivity.java

packagecom.example.testlocation;

importjava.util.List;

importandroid.app.Activity;

importandroid.content.Context;

importandroid.location.Location;

importandroid.location.LocationListener;

importandroid.location.LocationManager;

importandroid.os.Bundle;

importandroid.view.Menu;

importandroid.widget.TextView;

importandroid.widget.Toast;

publicclassMainActivityextendsActivity {

privateTextView postionView;

privateLocationManager locationManager;

privateString locationProvider;

@Override

protectedvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//获取显示地理位置信息的TextView

postionView = (TextView) findViewById(R.id.positionView);

//获取地理位置管理器

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

//获取所有可用的位置提供器

List providers = locationManager.getProviders(true);

if(providers.contains(LocationManager.GPS_PROVIDER)){

//如果是GPS

locationProvider = LocationManager.GPS_PROVIDER;

}elseif(providers.contains(LocationManager.NETWORK_PROVIDER)){

//如果是Network

locationProvider = LocationManager.NETWORK_PROVIDER;

}else{

Toast.makeText(this,"没有可用的位置提供器", Toast.LENGTH_SHORT).show();

return;

}

//获取Location

Location location = locationManager.getLastKnownLocation(locationProvider);

if(location!=null){

//不为空,显示地理位置经纬度

showLocation(location);

}

//监视地理位置变化

locationManager.requestLocationUpdates(locationProvider, 3000,1, locationListener);

}

/**

* 显示地理位置经度和纬度信息

* @param location

*/

privatevoidshowLocation(Location location){

String locationStr = "维度:"+ location.getLatitude() +"\n"

+ "经度:"+ location.getLongitude();

postionView.setText(locationStr);

}

/**

* LocationListern监听器

* 参数:地理位置提供器、监听位置变化的时间间隔、位置变化的距离间隔、LocationListener监听器

*/

LocationListener locationListener =  newLocationListener() {

@Override

publicvoidonStatusChanged(String provider,intstatus, Bundle arg2) {

}

@Override

publicvoidonProviderEnabled(String provider) {

}

@Override

publicvoidonProviderDisabled(String provider) {

}

@Override

publicvoidonLocationChanged(Location location) {

//如果位置发生变化,重新显示

showLocation(location);

}

};

@Override

protectedvoidonDestroy() {

super.onDestroy();

if(locationManager!=null){

//移除监听器

locationManager.removeUpdates(locationListener);

}

}

@Override

publicbooleanonCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

returntrue;

}

}从上面可以看出,获取地理位置信息主要分如下步骤:

(1)获取LocationManager实例,通过getSystemService方法,传入Context.LOCATION_SERVICE参数。

(2)获取可用的位置提供器,有GPS_PROVIDER、NETWORK_PROVIDER、PASSIVE_PROVIDER三种,前两种比较常用。

(3)将(2)获取到的位置提供器传入LocationManager的方法getLastKnownLocation,即可获取Location信息。

如果移动设备地理位置不断发生变化,则实时更新需要进行如下步骤:

(4)调用LocationManager的requestLocationUpdates方法,第一个参数是位置提供器,第二个参数是监听位置变化的时间间隔(毫秒),第三个参数是监听位置变化的距             离间隔(米),第四个参数是LocationListener监听器

(5)当位置发生变化后,就会调用监听器的onLocationChanged方法。

(6)为了省电,节约资源,当程序关闭后,调用LocationManager的removeUpdates方法移除监听器。

3、获取权限

修改AndroidManifest.xml,添加如下代码:

4、效果

使用模拟器进行测试:点击send

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值