LocationClient getLastLocation()返回null

就像我在测试一个nexus s(4.0.4提供google play服务)和avd(4.2.2 with google api)之前遇到的问题一样,在这两种情况下,locationclient getLastLocation()总是返回null。


public class MainActivity extends Activity implements LocationListener,

        GooglePlayServicesClient.ConnectionCallbacks,

        GooglePlayServicesClient.OnConnectionFailedListener {


    private LocationClient mLocationClient;

    private LocationRequest mLocationRequest;

    boolean mUpdatesRequested = false;

    boolean mConnected = false;

    SharedPreferences mPrefs;

    SharedPreferences.Editor mEditor;

    private TextView mText;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        mText = (TextView) findViewById(R.id.text);

        mLocationRequest = LocationRequest.create();

        mLocationRequest

                .setInterval(LocationUtils.UPDATE_INTERVAL_IN_MILLISECONDS);

    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

        mLocationRequest

.setFastestInterval(LocationUtils.FAST_INTERVAL_CEILING_IN_MILLISECONDS);

        mUpdatesRequested = false;

        mPrefs = getSharedPreferences(LocationUtils.SHARED_PREFERENCES,

                Context.MODE_PRIVATE);

        mEditor = mPrefs.edit();

        mLocationClient = new LocationClient(this, this, this);

    }

    @Override

    public void onStart() {

        super.onStart();

        /*

         * Connect the client. Don't re-start any requests here; instead, wait

         * for onResume()

         */

        mLocationClient.connect();

    }

在onConnected()打电话之前getLastLocation(),但仍然没有运气。哪里是错误,提前谢谢。


蓝山帝景
浏览 831回答 3
3回答

万千封印

目前,Fused Location Provider如果至少有一个客户端连接到它,则仅保留后台位置。一旦第一个客户端连接,它将立即尝试获取位置。如果您的活动是第一个客户端连接,并调用getLastLocation()在马上onConnected(),可能没有足够的时间在第一位置进去。

catspeake

按照教程中的说明我遇到了同样的问题。在电话上它工作,并在(Genymotion)模拟器它没有。解在AndroidManifest.xml中,更改以下内容:<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />对此:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />......然后你马上就到了。无需更改代码(以收听位置更新)。

凤凰求蛊

您的设备未启用“Wi-Fi和移动网络位置”也可能导致此问题。LocationClient(融合位置提供商)使用GPS和WiFi。GPS需要一段时间才能找到您的位置,而wifi速度要快得多。但是,如果连接了这两个服务中的任何一个,则将调用onConnected的回调方法。如果您尝试立即在onConnected方法中调用LocationClient.getLastLocation(),那么如果您的wifi位置服务被禁用,则很可能会获得空值。这只是因为GPS不够快。要在本地解决问题,请启用“Wi-Fi和移动网络位置”。您可以转到“设置>个人>位置访问> Wi-Fi和移动网络位置”来执行此操作。但是,如果要为应用程序的用户解决问题,最好检查getLastLocation()是否返回null。如果是,请提示您的用户启用该服务,就像谷歌地图一样。希望,这有帮助。
打开App,查看更多内容
随时随地看视频慕课网APP