GPS提供商不返回我当前的位置android
Posted
技术标签:
【中文标题】GPS提供商不返回我当前的位置android【英文标题】:GPS provider not return my current location android 【发布时间】:2015-02-02 04:46:07 【问题描述】:我正在尝试获取用户当前位置,但我的 onLocationChanged 方法从未被调用。我还在 Manifest.xml 中添加了权限,但从未调用 onLocationChange 方法。 我打开了我设备的 GPS 并在两个不同的移动设备上尝试,但无法正常工作。 下面是我的代码 -
public class LocationAwareActivity extends Activity implements
LocationListener
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
LocationManager locationManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 1000, 1, this);
@Override
public void onLocationChanged(Location location)
Toast.makeText(this, "Current onLocationChanged : "+location.getLatitude()+" , "+location.getLongitude(), Toast.LENGTH_SHORT).show();
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
Toast.makeText(this, "onStatusChanged", Toast.LENGTH_SHORT).show();
@Override
public void onProviderEnabled(String provider)
Toast.makeText(this, "onProviderEnabled", Toast.LENGTH_SHORT).show();
@Override
public void onProviderDisabled(String provider)
Toast.makeText(this, "onProviderDisabled", Toast.LENGTH_SHORT).show();
以下是 manifest.xml 的代码 -
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
TIA
【问题讨论】:
我认为问题可能是设备所在区域的卫星信号接收受到干扰。尝试去一些外部环境。我进行了实验,并在移动到空旷区域(我在建筑物内)后工作了 @DouglasFrari 谢谢,就是这样! 【参考方案1】:您是否获得了谷歌地图密钥? 将其添加到您的项目中。像这样:
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="Your Google Map Key" />
http://developer.android.com/google/play-services/maps.html
【讨论】:
我不想在地图上显示它,我只是出于其他目的需要它。 你确定你在户外吗? GPS 在室内没有结果。 不,我在大楼里..但我认为它应该可以工作。它可能不准确,但它应该至少返回一次我最后一次知道的位置。 没有。你应该出去。然后一旦它在建筑物中得到不准确的结果。 我同意 jion 的观点,除非它有一些 GPS 卫星,否则它不会返回您的位置。试着出去。【参考方案2】:Use the new Fused location provider for fetching the location.
The Fused Location Provider intelligently manages the underlying location technology and gives you the best location according to your needs.
Refer below links:
-
https://developer.android.com/google/play-services/location.html
http://javapapers.com/android/android-location-fused-provider/
http://www.kpbird.com/2013/06/fused-location-provider-example.html
【讨论】:
当然,我还想知道一件事——我想在每 60 秒后获取用户位置。还想在用户输入地理信息时显示通知。你能分享你的想法吗?如何实现这一目标。【参考方案3】:由于您不移动,您可能无法获得位置更新。 尝试更改此行:
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 1000, 1, this);
到这里:
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 0, 0, this);
【讨论】:
以上是关于GPS提供商不返回我当前的位置android的主要内容,如果未能解决你的问题,请参考以下文章
Android:如何使用 GPS 提供程序获取离线当前位置?
如何在不使用 GPS 的情况下获取 Android 设备的当前城市名称?