GPS provider enabled but getLastKnownLocation(provider) returns null
我正在尝试为我的应用程序使用GPS提供程序。
该应用程序使用GPS位置提供程序查找设备的当前位置。
该应用程序工作正常。 但是,虽然我的GPS_Provider已启用,但
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LocationManager locationManager; String context = Context.LOCATION_SERVICE; locationManager = (LocationManager)getSystemService(context); String provider = LocationManager.GPS_PROVIDER; Location location = locationManager.getLastKnownLocation(provider); Log.v("BEFORE","Location is:" + location); updateWithNewLocation(location); Log.v("AFTER","LOCATION FOUND"); } private void updateWithNewLocation(Location location){ String latLongString; TextView myLocationText; myLocationText = (TextView)findViewById(R.id.myLocationText); if (location != null) { double lat = location.getLatitude(); double lng = location.getLongitude(); latLongString ="Lat:" + lat +" Long:" + lng; } else { latLongString ="No location found"; } myLocationText.setText("Your Current Position is: " + latLongString); } } |
的Manifest.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.paad.whereami" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/title_activity_main"> <intent-filter> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> </manifest> |
根据文档,如果设备不知道最后的已知位置,则返回null。可能GPS无法找到你。无论如何,大约需要一分钟。因此,在晴朗的天空下,远离高层建筑,尝试外出,等到GPS可以找到你。这可能有帮助。并且不要忘记权限。如果您尝试使用
编辑:
要在仿真器上运行GPS,请参阅此链接。
对于谁还在试图理解愚蠢的函数"getLastKnownLocation"。
此功能仅在GPS被其他应用程序使用时返回某些内容。
因此,除非您经常将GPS用于其他应用,否则它将在90%的时间内返回null。
我一直在模拟器和我自己的Android手机上测试它。我开始使用模拟位置应用程序来获得结果每5秒更改一次坐标但是一旦我停止模拟位置应用程序,我就开始得到空结果。