使用getLastKnownLocation()来获取location值为空的问题

绵羊mie 2016-04-17 12:05:28
public class MainActivity extends Activity {

private TextView positionTextView;
private LocationManager locationManager;
private String provider;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
positionTextView =(TextView)findViewById(R.id.position_text_view);


locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
//获取所有可用的位置提供器
List<String> providerList=locationManager.getProviders(true);
if(providerList.contains(LocationManager.GPS_PROVIDER))
{
provider=LocationManager.GPS_PROVIDER;

}
else if(providerList.contains(LocationManager.NETWORK_PROVIDER))
{
provider=LocationManager.NETWORK_PROVIDER;
}
else {
Toast.makeText(this,"No location provider to use",Toast.LENGTH_LONG).show();
return;
}
Location location=locationManager.getLastKnownLocation(provider);
if(location!=null)
{
//显示当前位置信息
showLocation(location);
}
else {
Toast.makeText(MainActivity.this,"Location为空",Toast.LENGTH_LONG).show();
}

locationManager.requestLocationUpdates(provider, 5000,1,locationListener);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private void showLocation(Location location)
{
String currentPositionString="latitude is"+location.getLatitude()+"\n"+"longitude id"
+location.getLatitude();
positionTextView.setText(currentPositionString);
}
LocationListener locationListener =new LocationListener() {

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub

}

@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub

}

@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
showLocation(location);
}
};
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if(locationManager!=null)
{
//移除监听
locationManager.removeUpdates(locationListener);
}
}

}

使用gps定位将定位后的信息显示在textview上 但是定位方法为gps的时候location的值为空使用网络定位时就好用
...全文
2026 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hqh2010_9 2018-06-04
  • 打赏
  • 举报
回复
使用网络定位时,mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 2000, 1, locationListener);
网易云捕 2016-07-16
  • 打赏
  • 举报
回复
有可能有这些原因吧, lz可以试下: 1、在模拟器里运行?如果是的话,换真机试一下, 模拟器没有gps模块,当然可以让模拟器模拟gps信号,可以在monitor里发送, 也可以用命令行的形式。 2、如果是真机,是在室内?在室内可能导致gps接收不到信号, 拿手机(开启gps, 打开百度地图什么的)出去跑两步。 3、gps服务没有开启? 在“设置”里面开启定位服务吧, 并选择gps定位。 4、gps并没有存储 last location, 这种情况也需要拿手机出去走两步。 5、getLastKnowLocation是到的location是空,那locationListener的onLocationChanged一直不会被调用么, 有可能在这个方法里有数据输出。 ///
荒漠的远行者 2016-07-15
  • 打赏
  • 举报
回复
遇到同样的问题

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧