我在我的一个测试人员的手机上获取用户位置时遇到了问题。对我来说一切都正常,所以我不知道区别在哪里。
以下是操作步骤:
1. 重启他的手机。 2. 检查位置服务是否已启用(包括GPS和网络)。 3. 启动我的应用程序。
操作系统从未提供有效的位置。getLastKnownLocation() 对于 GPS_PROVIDER 和 NETWORK_PROVIDER 始终返回 null,而请求了LocatioUpdates 后 LocationListener 从未被调用。
他随后运行 Google 地图应用程序(该应用程序似乎可以定位他)。
然后,如果他再次运行我的应用程序,它确实可以正确地获取位置。
以下是我的代码基本信息:
以下是操作步骤:
1. 重启他的手机。 2. 检查位置服务是否已启用(包括GPS和网络)。 3. 启动我的应用程序。
操作系统从未提供有效的位置。getLastKnownLocation() 对于 GPS_PROVIDER 和 NETWORK_PROVIDER 始终返回 null,而请求了LocatioUpdates 后 LocationListener 从未被调用。
他随后运行 Google 地图应用程序(该应用程序似乎可以定位他)。
然后,如果他再次运行我的应用程序,它确实可以正确地获取位置。
以下是我的代码基本信息:
LocationManager locationManager = (LocationManager) this.getSystemService( Context.LOCATION_SERVICE );
LocationListener locationListener = new LocationListener()
{
public void onLocationChanged( Location location )
{
useLocation( location );
}
public void onStatusChanged( String provider, int status, Bundle extras )
{
}
public void onProviderEnabled( String provider )
{
}
public void onProviderDisabled( String provider )
{
}
};
// Register the listener with the Location Manager to receive location updates
// Checks a minimum of every 120 seconds. Location must change by 10000 meters
String provider = locationManager.getBestProvider( new Criteria(), true );
if ( provider != null )
{
System.out.println( "Using provider: " + provider );
locationManager.requestLocationUpdates( provider, 120 * 1000, 10000, locationListener );
}
// Get the last know location for immediate use
Location lastLocation = locationManager.getLastKnownLocation( LocationManager.GPS_PROVIDER );
if ( lastLocation != null )
useLocation( lastLocation );
else
useLocation( locationManager.getLastKnownLocation( LocationManager.NETWORK_PROVIDER ) );
当它失败时,代码显示最佳提供商是“网络”,所以我使用了它。但是onLocationChanged从未被调用。我也从getLastKnowLocation()中没有获得非空值。
在重新启动后,是否需要进一步的操作才能使其始终正常工作?