用于位置的 Android 前台服务

标签 android service gps locationmanager

我需要制作一个每次都在后台运行的应用程序( spy 应用程序),并将设备的位置发送到服务器。

我不想使用 Google Api。

我尝试使用服务、IntentService、前台服务、套接字线程等,但是当我关闭主要 Activity 时,它有时会在后台运行然后被杀死。

我该怎么做? 求求你,帮帮我 <3

最佳答案

是的,让我告诉你,如果你有像小米、oppo、vivo 这样的设备。你的服务会被他们杀死。所以不管你怎么努力,如果你没有在设置中勾选自动启动,它就会被杀死。所以你必须绑定(bind)用户检查它才能让你的应用程序在后台运行。

所以,您可以做很多事情:

  1. 通过在每个给定的时间间隔内从服务器向用户发送推送通知,在 GCM 服务的接收器中重新启动您的服务。

`

public class GcmNetworkTask extends GcmTaskService {

        @Override
        public int onRunTask(TaskParams taskParams) {
            restartYourServiceHere();
            return 0;
        }
    }
  1. AlarmManager 以重新启动您的服务。

    Bootcomplete 接收器用于在系统重启时启动您的服务

    公共(public)类 BootCompleteReceiver 扩展 BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
            Intent service = new Intent(context, Sample_service.class);
            context.startService(service);
    }
    

然后服务的 onstartCommand 中的警报管理器将执行:

 intent = new Intent(this, ReceiverClass.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(
            this.getApplicationContext(), 234324243, intent, 0);
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
                + (40000), pendingIntent);
    return START_STICKY;

然后又是一个接收器类来捕获警报管理器的事件:

   public class ReceiverClass extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
      context.startService(new Intent(context, Sample_service.class));

    }
}
  1. 如果 Activity 暂停,Runnable 线程将工作,但如果用户销毁 Activity,它将停止。

要查找位置,您可以使用 Google fusedLocationAPI,位置管理器(如果您没有获取 gps,您也可以通过网络获取位置)。

  1. 如果有人觉得它太棘手,您可以使用 hack:在服务的 OnDestroy 中重新启动您的服务:

    @Override 公共(public)无效onDestroy(){ Intent startSeviceIntent = new Intent(getApplicationContext(), SampleService.class); 启动服务(启动服务 Intent ); super .onDestroy(); } 在 onStartCommand 方法中获取位置并做任何你想做的事。

关于用于位置的 Android 前台服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48714737/

相关文章:

android - 无法解析 : com. github.ozodrukh :CircularReveal:1. 1.0

Android - 构建卡片列表

java - 如何创建 GPS 折线列表?

android - 令人难以置信的不准确的 GPS 点。是什么原因?

javascript - Web SQL 连接查询不能始终只在 Phonegap Android 上运行

android - 从具有多个相关条目的多个SQL表中检索数据

java - 前台服务被杀

android - IntentService 工作队列状态

java - 如何在主线程中不执行代码的情况下保持粘性服务存活?

java - 尽管授予了权限并且打开了 GPS,但用户的位置始终返回 null