如果移动设备以一分钟的间隔移动,我创建了一个通过短信发送经度和经度的应用。
在ArrayList到达发送SMS的六个元素之后,我使用ArrayList
来保存六个LatLngs
。如果设备在六分钟内停止移动,则ArrayList
将小于六。如果设备不移动20分钟,则它发送未填充的ArrayList。我使用CountdownTimer
来实现这一目标。
只要我移动,它就可以发送LatLngs
。但是,如果我在ArrayList填充之前停止,它会在20分钟后发送ArrayList。没问题。但是,之后它会在一分钟内发送短信。我的代码是
private void sendLog() {
Toast.makeText(MainPage.this,"Sending Log",Toast.LENGTH_LONG).show();
final SharedPreferences account=getSharedPreferences("admins", MODE_PRIVATE);
String interval=account.getString("lti", "");
int timeInterval=Integer.parseInt(interval);
final LocationManager logManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
logManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, timeInterval * 60000, 100, new LocationListener() {
@Override
public void onLocationChanged(final Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
DecimalFormat dFormat = new DecimalFormat("#.####");
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("kk:mm");
SimpleDateFormat sdf1 = new SimpleDateFormat("dd-MM,yy");
String time = sdf.format(date);
final String dateLog = sdf1.format(date);
loglist.add("!+" + dFormat.format(latitude) + ",+" + dFormat.format(longitude) + "," + time);
Toast.makeText(MainPage.this, loglist.toString(), Toast.LENGTH_SHORT).show();
CountDownTimer countDownTimer = new CountDownTimer(1200000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
if (loglist.size() == 6) {
for (int j = 0; j < loglist.size(); j++) {
log.append(loglist.get(j).toString());
}
Toast.makeText(MainPage.this, log.toString(), Toast.LENGTH_SHORT).show();
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(logPreferences.getString("admin1", ""), null, " " + log.toString() + "!" + dateLog + "!", null, null);
loglist.removeAll(loglist);
log.setLength(0);
}
}
@Override
public void onFinish() {
if (loglist.size()<6) {
for (int j = 0; j < loglist.size(); j++) {
log.append(loglist.get(j).toString());
}
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(logPreferences.getString("admin1", ""), null, " " + log.toString() + "!" + dateLog + "!", null, null);
loglist.removeAll(loglist);
log.setLength(0);
}
}
}.start();
}
我想调用logManaager.removeupdates()
。这是否导致无法再次调用locationUpdates
。因为我希望设备在移动时发送。帮助我。
答案 0 :(得分:0)
您对调用FOLLOWER_ID
的直觉是正确的。
调用logManager.removeUpdates()
后,您可以再次请求更新。