我创建了位置管理器服务。有了它,我想赶上瞬间的位置变化。我已经创建了一个服务类LocationListener locationListener = new LocationListener() {@Override public void onLocationChanged(Location newLocation) {
。但是,听众似乎反应缓慢。我正在努力改进位置服务类。因此,捕获位置变化的最快,时间,方法和其他方法是什么?
也许,上面的问题对某人来说是荒谬的。一般来说,我想学习“获取设备位置的方法是什么?”
答案 0 :(得分:1)
您可以使用GPS和互联网地理位置获取用户位置。 这是我找到的最好的教程。 完美工作并通过打开的选项获取位置,如果没有启用,请求您进入设置。
http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/
答案 1 :(得分:1)
如果您想自行更改位置,您应该启动一个每隔一段时间获取位置的线程,请记住GPS会耗费大量电池给设备。
欢呼声
答案 2 :(得分:1)
将GPS_PROVIDER分配给您的位置管理员可能需要一些时间才能获得解决方案..如果您不需要准确性,请将NETWORK_PROVIDER分配给您的LocationManger像这样
mLocationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 0, 0,
mLocationListener);
或者您可以根据拍摄时间在两者之间切换....
答案 3 :(得分:1)
我写了一个可以做到这一点的简单类:
public class GPSPosition {
private double latitude;
private double longitude;
private String date;
public GPSPosition()
{
LocationManager service = (LocationManager)Minipark.getAppContext().getSystemService(Context.LOCATION_SERVICE);
boolean isEnabled = service.isProviderEnabled(LocationManager.GPS_PROVIDER);
Location location = service.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (isEnabled)
{
if (location != null)
{
this.longitude = location.getLongitude();
this.latitude = location.getLatitude();
Date locDate = new Date(location.getTime());
DateFormat df = new SimpleDateFormat("z yyyy.MM.dd. HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("GMT+1"));
String gmtTime = df.format(locDate);
int position = gmtTime.indexOf(" ");
gmtTime = "GMT+1" + gmtTime.substring(position, gmtTime.length());
this.date = gmtTime; //GMT+1 time
}
else
{
this.longitude = -100000;
this.latitude = -100000;
this.date = "-100000";
}
}
else
{
this.longitude = -100000;
this.latitude = -100000;
this.date = "-100000";
}
}
然后我有一个定时器,每X秒实例化一次GPSPosition类。