【问题标题】:Unable to get user location in android无法在android中获取用户位置
【发布时间】:2015-12-04 00:14:33
【问题描述】:

每次我运行下面的代码时,日志都会显示“无位置”。我不知道我哪里错了。

我已经在清单中启用了定位服务,如下所示:

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

我应该指出,我尝试在我的 nexus 4(API 22)和虚拟设备(API 16、21、22)上运行这个应用程序,但无济于事。

public class MainActivity extends Activity implements LocationListener {

LocationManager locationManager;
String provider;
Location location;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    provider = locationManager.getBestProvider(new Criteria(), false);

    try {
         location = locationManager.getLastKnownLocation(provider);
    } catch (SecurityException e) {
        Log.d("SE", e.getMessage());
    }

    if (location != null) {

        Log.i("Location Info", "Location achieved!");

    } else {

        Log.i("Location Info", "No location :(");

    }
}

如果有任何帮助,我将不胜感激。

【问题讨论】:

    标签: android


    【解决方案1】:

    getLastKnownLocation() 将始终返回 null,除非设备上的某些应用最近使用特定位置提供程序请求位置更新。

    使用getLastKnownLocation()

    • 当您对某个地点感兴趣时,如果碰巧方便,但如果没有它也可以生活,或者

    • 作为一种优化,如果 getLastKnownLocation() 返回您认为太旧的 nullLocation,则使用 requestLocationUpdates()

    有关何时使用LocationManager 上的各种方法的更多指导,请参阅the documentation

    【讨论】:

      【解决方案2】:

      因为并不总是有最后一个已知位置。如果您想确保获得位置,请注册更新并等待确定位置。网络会很快,GPS可能需要一段时间。虽然两者都有失败的可能性,例如,如果你没有连接到 wifi/蜂窝,即使网络会失败,如果 GPS 无法看到足够多的卫星,它也会失败。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-26
        • 2021-12-13
        • 2015-03-05
        • 2011-09-05
        • 2012-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多