好的,我的应用程序可以说是一种GPS跟踪器应用程序。
如果用户从源到目的地旅行,我希望在5-7分钟后说出其GPS位置,直到用户到达目的地并且还保持将该位置的短信发送到指定的号码。
所以我的问题是如何在关闭应用程序后获取用户的位置并发送消息?
用户将在我的活动中填写源和目的地,然后单击按钮发送短信并关闭应用程序。
我想这可以通过使用android的服务类来解决...但我真的不明白我该如何使用它?
答案 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;
}
获取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
的类中执行上述所有功能,以便在appln关闭时跟踪用户位置。下面是示例,
public class LocationTracker extends Service implements LocationListener{
\\your code here
}