我看过很多关于这个问题的帖子,但没有一个为我提供解决方案。
我正在尝试通过 GPS(或最终通过任何其他有效提供商)获取用户位置。但我总是得到空位置。我确实得到了一张地图,并且可以设置任意位置,是不工作的提供者。
我正确设置了我的 MAPS 密钥(还检查了它是否正确),所有必要的权限设置(android.permission.INTERNET
, android.permission.ACCESS_COARSE_LOCATION
, android.permission.ACCESS_FINE_LOCATION
),事实上,昨天一切似乎都运行良好!
我尝试使用此代码获取所有可能的提供程序:
List<String> providers = locManager.getAllProviders();
for (String provider : providers) {
printProvider(provider);
}
这表明所有提供者(在我的例子中是 4 个)都是 DummyLocationProviders。
我试图在手机上运行我的应用程序,而不是模拟器(尽管我也尝试使用模拟器,启用 GPS,但无济于事)。
这是我用来获取位置的代码(昨天再次运行良好):
//Get criteria
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
//Get best provider
String bestProvider = locManager.getBestProvider(criteria, false);
printProvider(bestProvider);
//get the current location (last known location) from the location manager
Location location = locManager.getLastKnownLocation(bestProvider);
//if location found display as a toast the current latitude and longitude
if (location != null) {
Toast.makeText(this, "Current location:\nLatitude: " + location.getLatitude() + "\n" + "Longitude: " + location.getLongitude(), Toast.LENGTH_LONG).show();
point = new GeoPoint((int) (location.getLatitude()*1E6),(int)(location.getLongitude() *1E6));
controller.animateTo(point);
} else {
Toast.makeText(this, "Cannot fetch current location!", Toast.LENGTH_LONG).show();
}
我的清单文件:
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="10" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".activities.MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="com.google.android.maps" />
<activity
android:name=".activities.GoogleMapsActivity"
android:label="@string/title_activity_maps" >
</activity>
<activity
android:name=".activities.MyMapsActivity"
android:label="@string/title_activity_maps" >
</activity>
</application>
</manifest>