android在固定的时间间隔内获取GPS导航位置?

时间:2013-08-03 07:21:58

标签: android service navigation gps

好的,我的应用程序可以说是一种GPS跟踪器应用程序。

如果用户从源到目的地旅行,我希望在5-7分钟后说出其GPS位置,直到用户到达目的地并且还保持将该位置的短信发送到指定的号码。

所以我的问题是如何在关闭应用程序后获取用户的位置并发送消息?

用户将在我的活动中填写源和目的地,然后单击按钮发送短信并关闭应用程序。

我想这可以通过使用android的服务类来解决...但我真的不明白我该如何使用它?

1 个答案:

答案 0 :(得分:1)

使用requestLocationUpdates()课程的LocationManager获取特定时间间隔内的GPS位置。请查看this以供参考。

请参阅以下代码段,该代码段每隔1分钟以纬度和长度获取用户的当前位置。

public Location getLocation() { 
    try { 
            locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE); 
             // getting GPS status 
            isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 
        // if GPS Enabled get lat/long using GPS Services 
        if (isGPSEnabled) {
            if (location == null) { 
                locationManager.requestLocationUpdates( 
                LocationManager.GPS_PROVIDER, 
                MIN_TIME_BW_UPDATES, 
                MIN_DISTANCE_CHANGE_FOR_UPDATES, this); 

                    if (locationManager != null) { 
                    location = locationManager 
                    .getLastKnownLocation (LocationManager.GPS_PROVIDER); 
                    if (location != null) { 
                    latitude = location.getLatitude(); 
                    longitude = location.getLongitude(); 
                  } 
                } 
        } 
    } 
} catch (Exception e) { 
        e.printStackTrace(); 
        } 
        return location; 
    } 

获取LatitudeLongitude后使用Geocoder获取详细地址。

public List<Address> getCurrentAddress(){
    List<Address> addresses = new ArrayList<Address>();
    Geocoder gcd = new Geocoder(mContext,Locale.getDefault());
    try {
        addresses = gcd.getFromLocation(latitude, longitude, 1);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return addresses;
}

修改

extends Service的类中执行上述所有功能,以便在appln关闭时跟踪用户位置。下面是示例,

public class LocationTracker extends Service implements LocationListener{
     \\your code here
 }