2 hxn 217 hxn_217 于 2013.03.15 15:19 提问

getLastknownLocation()在 nexus 返回null值

我使用下面的代码来开发一个基于位置定位的项目,这个项目我是用的是google api 8。

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
    currloc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    TextView t = (TextView)findViewById(R.id.textView1);
    try{
        t.setText("Your current location is - "+currloc.getLatitude()+","+currloc.getLongitude());
    }catch (Exception e) {
        // TODO: handle exception
        t.setText("cant find current location ");
    }

这段代码在galaxy tab上能正常运行,htc上也可以。
但是当我使用nexus的时候,location得到的是null。对于galaxy nexus来说,我是不是得改变api版本,或者说还有其他一些特殊需求吗?

3个回答

yongyong_21
yongyong_21   2013.03.15 16:33
已采纳

仿照下面的代码:

Step1: into your oncreate

LocationListener locationListener = new LocalLocationListener();
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);

Step2: into class body

/**Listener on location change*/
private class LocalLocationListener implements LocationListener
{

    public void onLocationChanged(Location location)
    {
        String text = "My current Location is: "+location.getLatitude()+", "+location.getLongitude();
        GeoPoint geoPoint = new GeoPoint((int)(location.getLatitude()* 1E6), (int)(location.getLatitude() * 1E6));
        mapController_.animateTo(geoPoint);
        Toast.makeText(LocalMap.this, text, Toast.LENGTH_SHORT).show();
        Log.i("onLocationChanged", text);

    }

    public void onProviderDisabled(String provider)
    {
        // TODO Auto-generated method stub
        Toast.makeText(LocalMap.this, "GPS Disable", Toast.LENGTH_SHORT).show();
        Log.i("onProviderDisabled", "GPS Disable");
    }

    public void onProviderEnabled(String provider)
    {
        // TODO Auto-generated method stub
        Toast.makeText(LocalMap.this, "GPS Enable", Toast.LENGTH_SHORT).show();
        Log.i("onProviderEnabled", "GPS Enable");
    }

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

    }
tangren03
tangren03   2013.03.16 18:19

Android SDK中的定位API在不同的设备或版本上经常会有问题,直接使用会导致适配问题的出现,就好比你提出的问题。建议使用百度或高德开放的定位SDK,有完善、易用的功能服务。CSDN移动问答

li674688017
li674688017   2013.03.28 16:17

机器没有获取过定位信息就返回null了,api文档有说明

Returns a Location indicating the data from the last known location fix obtained from the given provider.

This can be done without starting the provider. Note that this location could be out-of-date, for example if the device was turned off and moved to another location.

If the provider is currently disabled, null is returned.

Parameters
provider the name of the provider

Returns
the last known location for the provider, or null

所以你调用此方法获取的结果一定要做空指针判断

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
关于定位时,getLastKnownLocation返回值为null所碰到的问题
今天百度了yi'xia
getLastKnownLocation()返回null的解决
这段时间,定位的头个难题就是GPS定位问题,今天中午终于解决了,在这里面小小分享一下心得,顺便将代码奉上。 getLastKnownLocation仅仅是获取当缓存中的上一次打开地图缓存起来的位置,我总是看着不对劲希望有一个getCurrentLocation之类的函数,可惜木有... ... 所以只好另想起他的办法了~  方法就是用一个循环直到获得location为止~ Ja
android getLastKnownLocation 返回null
在使用LocationManager.getLastKnownLocation("gps")获取gps定位的过程中老是报空指针异常  在网上百度查了不少资料发现这个问题多出现在2.0以上版本  解决方法多是:  1.在AndroidManifest.xml中添加 Xml代码  uses-permission android:name="android.perm
Android GPS getLastKnownLocation()返回null的解决
在使用LocationManager.getLastKnownLocation("gps")获取gps定位的过程中老是报空指针异常 在网上百度查了不少资料发现这个问题多出现在2.0以上版本 解决方法多是: 1.在AndroidManifest.xml中添加 Xml代码   uses-permission android:name="android.permission
android getLastKnownLocation()获取当前位置为null解决方法
用Google map api开发是一件令人纠结的事情 使用 getLastKnownLocation() 总是莫名奇妙的获取不到值,为null,然后又莫名其妙的好了。调试了半天也没用,上网找资料,前篇一律的一个答案 所以以后就让它自生自灭吧。 LocationManage
[android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题
前一篇百度地图开发讲述"(二).定位城市位置和城市POI搜索",主要通过监听对象MKSearchListener类实现城市兴趣点POI(Point of Interest)搜索。该篇讲述定位当前自己的位置及使用getLastKnownLocation获取location总时为空值的问题。其基本步骤如下: 1.先实例LocationManager,getSystemService(Context.LOCATION_SERVICE)再确定获取系统的定位服务;2.选择位置提供器...最后提出问题及解决方法包括源码
locationManager.getLastKnownLocation(locationProvider);//地理位置获取为null的解决方案
方案一:没有加权限<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="and
Android 解决 GetLastKnownLocation(provider) = null
事情的起因就是我用系统的GetLastKnownLocation输出结果永远是null。后来看大家说这个方法在室内90%都不管用。于是查了国内各大网站给出了两个解决办法:1.while(GetLastKnownLocation(provider) = null){    GetLastKnownLocation = null}2.locationManager.setTestProviderEna...
getLastKnownLocation 返回null
在使用LocationManager.getLastKnownLocation("gps")获取gps定位的过程中老是报空指针异常。 在网上百度查了不少资料发现这个问题多出现在2.0以上版本。 解决方法多是: 1.在AndroidManifest.xml中添加 Xml代码 uses-permission android:name="android.permiss
Android保证首次获取到的location对象不为空的解决方案
在阅读《第一行代码》和《疯狂android讲义》后,得到的启发式解决方案。 如果仅以GPS_PROVIDER获取location对象,那么在onCreate方法中,location一般都会为空,且在室内无法测试。 所以有了如下简单的解决方案: package com.example.locationtest; import android.location.Location; import