Android - Google地图为位置返回null [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android - Google地图为位置返回null [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我需要在日志中看到我的位置,频率为0.1秒。

mMap.setMyLocationEnabled(true);
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
final Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, false));
        for (int i = 1; i < 100; i++)
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    if (ActivityCompat.checkSelfPermission(MapsActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(MapsActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                        // TODO: Consider calling
                        //    ActivityCompat#requestPermissions
                        // here to request the missing permissions, and then overriding
                        //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                        //                                          int[] grantResults)
                        // to handle the case where the user grants the permission. See the documentation
                        // for ActivityCompat#requestPermissions for more details.
                        return;
                    }
                    mMap.setMyLocationEnabled(true);
                    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                    Criteria criteria = new Criteria();
                    final Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, false));
                    Log.d("Coordinates: ",location.getLongitude() + "," + location.getLatitude());
                }
            }, 100 * i);

我通过模拟器看到日志中的坐标,但是当我通过USB连接手机时,我遇到了Log.d()线路崩溃,出现以下错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'double android.location.Location.getLongitude()' on a null object reference
答案

当找不到先前记录的位置或者找到之前的位置是很久以前并且它的gps数据到期时,最后一个已知位置可以为空。

如果找到的最后一个位置为null,则可以使用融合位置提供程序API并查找位置。你将在onLocationChanged回调中获取它。

以上是关于Android - Google地图为位置返回null [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java Android Google 地图更改缩放控件位置并将相机设置为标记

WGS84 到 Google 地图位置和返回的 Java 代码

如何在 Android 中的 onMapReady() 之外添加 Google 地图标记?

Android、Google Maps Android api、设置位置和地图类型

Google 地图 (Android) 中的位置更新率

如何使用 android studio 更改 Google 地图中“我的位置”按钮的位置