GPS追踪系统?

时间:2018-08-26 10:07:02

标签: android android-service

我必须创建一个服务来跟踪用户的GPS位置,即使该应用程序被杀死,直到我停止该服务为止。可能吗? 我创建了一个使用LocationListener的服务,还使用了与服务器通信的socket.io。但是当应用程序暂停时,位置更新不会反映出来,而当我杀死应用程序时,套接字关闭。请提出正确的实施方法。

Link to the service i have created

1 个答案:

答案 0 :(得分:0)

这是我的onStartCommand

 h = new Handler();
 r = new Runnable() {
                @Override
                public void run() {
                    startSomeJob();
                    startForeground(101, updateNotification(0));
                }
            };

 h.post(r);

这是通知:

private Notification updateNotification(int progress) {
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
                new Intent(action), 0);

        String info = progress + "%";

        NotificationManager mNotifyManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) if (mNotifyManager != null) {
            createChannel(mNotifyManager);
        }

        NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "101")
                .setContentTitle(info)
                .setTicker(info)
                .setContentText("Uploading")
                .setVibrate(new long[] {0L})
                .setProgress(100, progress, false)
                .setWhen(System.currentTimeMillis())
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentIntent(pendingIntent)
                .setOngoing(true);

        return builder.build();
    }

在我的someJob中,如果有一些更新,它将调用startForeground(101, updateNotification(percentDone));

在函数onLocationChanged中更改位置的情况下,您需要调用带通知的startForeground。