textview-Android获取当前位置,location为空

问题描述

Android获取当前位置,location为空

MainActivity.java:
public class MainActivity extends Activity {
LocationManager locationManager ;
String provider;
TextView location_msg;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
location_msg = (TextView) findViewById(R.id.location_msg);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
List 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(MainActivity.this, "here are no useful location service", 1000).show();
        return;
    }

    Location location = locationManager.getLastKnownLocation(provider);
    if(location!=null)
    {
        Log.i(">>>>>>>MainActivity", "显示位置信息,信息呢?");
        showLocation(location);

    }
    else
    {
        Log.i(">>>>>>>MainActivity", "信息显示为空。。。。。。");

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

}   

private void showLocation(Location location) {
    String position = "latitude is " + location.getLatitude() + "
"
            + "longitude is " + location.getLongitude();
    location_msg.setText("HELLO WORLD");
    location_msg.setTextColor(Color.BLUE);
    //Log.i(">>>>>>>MainActivity", "显示位置信息,信息呢?");
}
@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    if(locationManager!=null)
    {
        locationManager.removeUpdates(listener);

    }
}
LocationListener listener = new LocationListener() {

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {

    }

    @Override
    public void onProviderEnabled(String provider) {

    }

    @Override
    public void onProviderDisabled(String provider) {

    }

    @Override
    public void onLocationChanged(Location location) {
        showLocation(location);
    }
};

}
布局文件为:一个TextView显示地理位置:经度和纬度
AndroidManifest.xml文件添加访问位置权限:


解决方案

? ? ?通过最后一次的地理位置来获得Location对象:location = locationManager.getLastKnownLocation(provider);得出location为空。查看各种资料发现,getLastKnownLocation仅仅是获取当缓存中的上一次打开地图缓存起来的位置,不可能一次就能获取,那唯有location为空的时候继续......
答案就在这里:Android获取当前位置,location为空

解决方案二:

如果以前没有获得过,那你用过去最后一次是获取不到的,你就在监听事件中获取就行了

解决方案三:

http://blog.csdn.net/column/details/android-jacksen-map.html

参考一下。

时间: 2024-09-20 13:11:07

textview-Android获取当前位置,location为空的相关文章

Android获取当前位置的经纬度数据_Android

现在有这么一个需求:开启一个Service服务,获取当前位置的经纬度数据,将获取的数据以广播的方式发送出去,注册广播的Activity接收广播信息,并将接收到的数据在当前Activity显示,如果当前位置发生变化,经纬度数据改变,获取改变后的经纬度数据,通过Handler发送消息,更新UI界面,显示更新后的内容,请问这样子的Demo该如何实现? LocationTool获取当前位置信息 Android手机获取当前位置的方式:GPS定位,WIFI定位,基站定位,当前Demo使用GPS卫星定位,在L

Android获取手机位置的实现代码_Android

本文实例为大家分享了Android获取手机位置的方法,供大家参考,具体内容如下 1.项目Src下创建...service包,然后新建GPSService类 package com.zebra.mobilesafe.service; import java.io.IOException; import java.io.InputStream; import android.app.Service; import android.content.Intent; import android.cont

Android获取手机位置的实现代码

本文实例为大家分享了Android获取手机位置的方法,供大家参考,具体内容如下 1.项目Src下创建...service包,然后新建GPSService类 package com.zebra.mobilesafe.service; import java.io.IOException; import java.io.InputStream; import android.app.Service; import android.content.Intent; import android.cont

Android获取当前位置的经纬度数据

现在有这么一个需求:开启一个Service服务,获取当前位置的经纬度数据,将获取的数据以广播的方式发送出去,注册广播的Activity接收广播信息,并将接收到的数据在当前Activity显示,如果当前位置发生变化,经纬度数据改变,获取改变后的经纬度数据,通过Handler发送消息,更新UI界面,显示更新后的内容,请问这样子的Demo该如何实现? LocationTool获取当前位置信息 Android手机获取当前位置的方式:GPS定位,WIFI定位,基站定位,当前Demo使用GPS卫星定位,在L

Android获取当前运行的类名或者方法_Android

本文实例讲述了Android获取当前运行的类名或者方法.分享给大家供大家参考.具体实现方法如下: public static String getCurrentMethodName() { int level = 1; StackTraceElement[] stacks = new Throwable().getStackTrace(); String methodName = stacks[level].getMethodName(); return methodName; } public

Android实现Service获取当前位置(GPS+基站)的方法_Android

本文实例讲述了Android实现Service获取当前位置(GPS+基站)的方法.分享给大家供大家参考.具体如下 需求详情 1).Service中每隔1秒执行一次定位操作(GPS+基站) 2).定位的结果实时显示在界面上(要求得到经度.纬度) 技术支持 1).获取经纬度 通过GPS+基站获取经纬度先通过GPS来获取如果为空改用基站进行获取–>GPS+基站(基站获取支持联通.电信.移动). 2).实时获取经纬度 为了达到实时获取经纬度需在后台启动获取经纬度的Service然后把经纬度数据通过广播发

在Android Studio中使用BaiduMap SDK实时获取当地位置信息_Android

配置BaiduMap 环境 1.在百度API中新建自己的一个APP包名和APP名需要注意和自己Android Studio 中的包名和APP名保持一致: 2.百度地图中还需要填写一个SHA1 数字签名: a.输入keytool -list -v -keystore debug.keystore,会得到三种指纹证书,选取SHA1类型的证书(密钥口令是android),这个获取到的SHA1的值和ecplise中获取的值是一样的,是作为debug用的. b.输入keytool -list -v -ke

Android实现Service获取当前位置(GPS+基站)的方法

本文实例讲述了Android实现Service获取当前位置(GPS+基站)的方法.分享给大家供大家参考.具体如下: 需求详情: 1).Service中每隔1秒执行一次定位操作(GPS+基站) 2).定位的结果实时显示在界面上(要求得到经度.纬度) 技术支持: 1).获取经纬度 通过GPS+基站获取经纬度,先通过GPS来获取,如果为空改用基站进行获取–>GPS+基站(基站获取支持联通.电信.移动). 2).实时获取经纬度 为了达到实时获取经纬度,需在后台启动获取经纬度的Service,然后把经纬度

Android百度地图定位后获取周边位置的实现代码

本文实例讲解Android百度地图定位后获取周边位置的实现代码,分享给大家供大家参考,具体内容如下 效果图: 具体代码: 1.布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical&q