0

我无法在我的 Android 设备(Samsung Galaxy Note N7000)上获取LastKnownLocations,因为它始终为空,塔被检测为网络,所以很好,有人知道如何获取我的位置吗?

    d = getResources().getDrawable(R.drawable.songs_gray);

    //Placing pinpoint at location
    lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    Criteria crit = new Criteria();

    towers = lm.getBestProvider(crit, false);

    Toast.makeText(LocationActivity.this, "Towers: " + towers, Toast.LENGTH_SHORT).show();

    Location location = lm.getLastKnownLocation(towers);

    Toast.makeText(LocationActivity.this, "Location: " + location, Toast.LENGTH_SHORT).show();

    if(location !=null){
        lat = (int) (location.getLatitude()*1E6);
        longi = (int) (location.getLongitude()*1E6);
        GeoPoint ourLocation = new GeoPoint(lat, longi);
        OverlayItem overlayItem = new OverlayItem(ourLocation, "What's up", "2nd String");
        CustomPinpoint custom = new CustomPinpoint(d, LocationActivity.this);
        custom.insertPinPoint(overlayItem);
        overlayList.add(custom);    
    }else{
        Toast.makeText(LocationActivity.this, "Couldn't get provider", Toast.LENGTH_SHORT).show();
    }

显现

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
4

3 回答 3

1

只有在指定的位置提供程序处于活动状态时,getLastKnownLocation()您才能获取对象。Location

文档说:

返回一个 Location 指示从给定提供程序获得的最后一个已知位置修复的数据。这可以在不启动提供程序的情况下完成。请注意,此位置可能已过时,例如,如果设备已关闭并移动到另一个位置。

如果提供程序当前被禁用,则返回 null。

要检测当前位置而不是最后检测到的位置,您需要启用位置提供程序。本教程将帮助您了解如何与 GPS 和网络等位置提供程序一起工作。

于 2012-07-28T16:54:21.377 回答
0

仅当该位置已在您的呼叫之前由另一个应用程序确定时,最后一个已知位置才可用。启动地图或其他应用程序并让它获得位置锁定。然后运行您的应用程序。

如果你真的需要在你的应用程序中定位,你需要回退到其他方法,因为你不能依赖最后一个已知的位置。

作为旁注,ACCESS_MOCK_LOCATION这里不需要。从文档中,

允许应用程序创建模拟位置提供程序以进行测试

于 2012-07-28T16:52:53.117 回答
0

没关系发现我的问题!只需要在我的手机上使用 Google 的定位服务

于 2012-07-28T16:57:02.350 回答