从任何地方发送gps通知

时间:2017-09-03 16:19:24

标签: android notifications gps

我有一个坐标列表(30多对经度 - 纬度),我的任务如下:

我应该创建一个Android应用程序,如果他/她在我的列表包含的30个位置之一,则会向用户发送通知(在状态栏上)。通知部分准备就绪,我可以在一个活动中执行此操作(遍历列表,如果坐标相等,则发送通知,但我如何为所有活动执行此操作,以及应用程序在缓存中的那些时间,但是不开放?谢谢

            Intent intent = new Intent(AGPS.this, SecondClass.class);

            TaskStackBuilder stackBuilder = TaskStackBuilder.create(AnotherGPS.this);
            stackBuilder.addParentStack(SecondClass.class);
            stackBuilder.addNextIntent(intent);
            PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent
                    .FLAG_UPDATE_CURRENT);

            NotificationCompat.Builder mBuilder =
                    (NotificationCompat.Builder) new NotificationCompat.Builder(AnotherGPS.this)
                            .setSmallIcon(R.drawable.cam_icon)
                            .setContentTitle("My notification")
                            .setContentText("content of notification")
                            .setContentIntent(pendingIntent);
            NotificationManager NM = (NotificationManager) getSystemService(Context
                    .NOTIFICATION_SERVICE);
            NM.notify(0, mBuilder.build());

2 个答案:

答案 0 :(得分:0)

如果您在api26下方建设,您可以使用后台服务来监听位置更改,前提是您的应用程序已获得许可并且移动设备位于

启动api 26服务将无法以这种方式运行,并且您很可能会遇到一些例外情况,因为您需要执行后台任务https://developer.android.com/about/versions/oreo/android-8.0-changes.html#abll

答案 1 :(得分:0)

您需要在服务中而不是在活动中执行此操作 看看这个 https://stackoverflow.com/a/46025303/4705092

onLocationChanged比较位置,如果它适合您,请致电通知部分