public class WhereamI extends Activity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_wheream_i);
LocationManager locationmanager;
String context = Context.LOCATION_SERVICE;
locationmanager = (LocationManager) getSystemService(context);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(true);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationmanager.getBestProvider(criteria, true);
Location location = locationmanager.getLastKnownLocation(provider);
updatewithnewlocation(location);
locationmanager.requestLocationUpdates(provider, 2000, 10,
locationlistener);
}
private final LocationListener locationlistener = new LocationListener() {
private Location location;
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
}
@Override
public void onProviderEnabled(String arg0) {
}
@Override
public void onProviderDisabled(String arg0) {
updatewithnewlocation(null);
}
@Override
public void onLocationChanged(Location arg0) {
updatewithnewlocation(location);
}
};
private void updatewithnewlocation(Location location) {
String latLongString;
TextView Text1;
Text1 = (TextView) findViewById(R.id.Text1);
if (location != null) {
double lat = location.getLatitude();
double lng = location.getLongitude();
double alt = location.getAltitude();
latLongString = "Lat: " + lat + " Lon " + lng + " Altitude "
+ alt + "feet";
} else {
latLongString = "No Location Found: Sorry.";
}
Text1.setText("Your Current Position Is \n :" + latLongString);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.wheream_i, menu);
return true;
}
}
我编写了一个代码,通过GPS查找设备的当前位置。问题是设备大部分时间都没有给出任何位置。但是,当我在代码中进行一些更改并将更改(或启动应用程序。)上传到我的设备时,它会给出位置。 这个应用程序的目的是找到位置的变化,并给出long和lat值,甚至altitiude。我不知道该应用程序有什么问题。有人可以吗?
答案 0 :(得分:0)
无论您使用GPS,NETWORK或哪种提供商,所有提供的工作都基于从本地(设备上)缓存获取位置的相同原则。
试试这个实验。改变你的物理位置(移动,距你现在大约200米)并加载谷歌地图,你的应用程序也会突然返回正确的坐标。这是因为谷歌地图知道如何触发本地缓存更新。启动应用程序后它为您提供位置的原因是您在代码中使用requestLocationUpdate
触发本地缓存。因此,它会为您提供坐标,直到它获得新的坐标。