Android的重复报警调用服务 [英] Android Repeating Alarm invoking a service

查看:87
本文介绍了Android的重复报警调用服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想送GPS通过后台服务坐标,在每1分钟间隔的服务器。它会调用你第一次的服务,但它不重复了。

I am trying to send GPS coordinates to server in every 1 minute interval through a background service . It invokes the service for thee first time but it doesn't repeat it .

code设定报警:

Intent gpsIntent = new Intent(CheckInActivity.this, GoogleMapService.class);
                    gpsPendingIntent = PendingIntent.getService(CheckInActivity.this, 0, gpsIntent, 0);
                    AlarmManager alarmManager_gps = (AlarmManager)getSystemService(ALARM_SERVICE);

                    Calendar calendar_gps = Calendar.getInstance();
                    calendar_gps.add(Calendar.SECOND, 20);
                    alarmManager_gps.setRepeating(AlarmManager.RTC_WAKEUP, calendar_gps.getTimeInMillis(), TimeUnit.MINUTES.toMillis(1), gpsPendingIntent);

服务

    public class GoogleMapService extends Service {

private boolean gps_enabled = false;
private boolean network_enabled = false;
private static Location sLocation;   
private LocationManager locManager;
private LocationListener locListener = new MyLocationListener();
private CallBack callback;

@Override
public void onCreate() {

}

@Override
public IBinder onBind(Intent intent) {

    Log.w(null,"GPS Service called");
    locManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
    try {
        gps_enabled = locManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    } catch (Exception ex) {
    }
    try {
        network_enabled = locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    } catch (Exception ex) {
    }

    if (gps_enabled) {
        locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener);
    }
    if (network_enabled) {
        locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locListener);
    }

    callback = new CallBack() {

        public void onResult(Boolean result) {
            // TODO Auto-generated method stub

        }

        public void onProgress() {
            // TODO Auto-generated method stub

        }
    };

    return null;
}

@Override
public void onDestroy() {
    super.onDestroy();
}

@Override
public void onStart(Intent intent, int startId) {       
    super.onStart(intent, startId);
}

@Override
public boolean onUnbind(Intent intent) {
    return super.onUnbind(intent);
}

class MyLocationListener implements LocationListener {

    public void onLocationChanged(Location location) {
        if (location != null) {
            // This needs to stop getting the location data and save the battery power.
            locManager.removeUpdates(locListener);
            sLocation = location;
            Model.coordinates = location.getLatitude() + "," + location.getLongitude();
            try{
                SendGPSCoordinatesOperation task = new SendGPSCoordinatesOperation(callback);
                task.execute("");
                Log.w(null,"Sent");
            }
            catch(Exception e){
                Log.w(null,"Couldn't be sent");
            }
            Log.w(null,"The coordinates are"+Model.coordinates);
        }
    }

    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }

    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub

    }

    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }
}

}

编辑:AndroidManifest code

EDIT : AndroidManifest code

推荐答案

使用此...

private void setLocationSendingAlarm() {

        AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(getApplicationContext(), GoogleMapService.class);
        intent.putExtra("locationSendingAlarm", true);
        PendingIntent   pendingIntent = PendingIntent.getService(this, 987654321, intent,0);
        try {
            alarmManager.cancel(pendingIntent);
        } catch (Exception e) {

        }
        int timeForAlarm=60000;


        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis()+timeForAlarm, timeForAlarm,pendingIntent);
    }

这篇关于Android的重复报警调用服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆