我创建了一个Android应用来检索位置。我尝试使用GPS_PROVIDER,它返回null ..但是当我使用NETWORK_PROVIDER时工作顺利..任何人都可以帮我解决这个问题吗?
这是代码
位置位置= locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
当我将"NETWORK_PROVIDER"
替换为"GPS_PROVIDER"
时,该位置变为空。
我在清单
中添加了以下三个权限<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
答案 0 :(得分:2)
GPS位置无效可能有两个原因
setting menu => Location & Security => Check Use GPS Satellites
。答案 1 :(得分:0)
如果当前禁用了提供程序,则返回null。
确保您的GPS在设备上处于活动状态,因此您不会收到空。
修改强>
另请尝试使用requestLocationUpdates()
运行GPS_PROVIDER
,也可以使用NETWORK_PROVIDER
运行两次。 LocationManager
以最快的方式检索位置并停止搜索。由于GPS位置的检索速度比网络位置慢,因此如果找到它,则会立即停止,因此会为GPS返回null。
答案 2 :(得分:0)
当我替换&#34; NETWORK_PROVIDER&#34;时,该位置变为null。通过 &#34; GPS_PROVIDER&#34;
要解决此问题,请务必启用位置服务:
记住文档:
如果当前禁用了提供程序,则返回null。
作为一种选择,如果GPS被禁用,您可以使用这两个提供商,然后检查网络提供商:
...
myLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(myLocation == null) {
myLocation = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
if(myLocation != null) {
//Get values for latitude and longitude!
}
...