0

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

如果用户从源头到目的地旅行,我想在 5-7 分钟后获取其 GPS 位置,直到用户到达目的地,并继续将该位置的短信发送到指定号码。

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

用户将在我的活动中填写源和目标,然后单击按钮发送文本消息并关闭应用程序。

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

4

1 回答 1

1

使用requestLocationUpdates()LocationManager在特定时间间隔内获取 GPS 位置。看看这个供你参考。

请参阅以下代码片段,它将每 1 分钟获取用户当前的经纬度位置。

public Location getLocation() {
    Location location = null;
    try {
        LocationManager locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE); 
        // Getting GPS status
        boolean 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;
} 

获取后Latitude使用Longitude获取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以便即使应用程序关闭,它也可以跟踪用户位置。请参阅下面的示例

public final class LocationTracker extends Service implements LocationListener {
    // Your code here
}
于 2013-08-03T08:25:51.907 回答