private boolean somethingNew(NearbyPlayer nearbyPlayer) { if (lastNotification != null) { if (lastNotification.equals(nearbyPlayer)) { if (lastNotification.getLocation().equals(nearbyPlayer.getLocation())) { return false; } } } return true; }
public void nearestPlayer(NearbyPlayer nearbyPlayer) { if (nearbyPlayer.getRank() > max_ranking_for_notification) { notificationManager.cancelAll(); if (nearbyPlayer.getRank() < max_ranking_for_vibration) { return; } } if (somethingNew(nearbyPlayer)) { sendNotification(nearbyPlayer); if (nearbyPlayer.getRank() < max_ranking_for_vibration) { long[] pattern = {0, 300, 0, 300}; vibrator.vibrate(pattern, -1); } } }
private void sendNotification(NearbyPlayer nearbyPlayer) { Intent intent = new Intent(context, actionToNotificate); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent pIntent = PendingIntent.getActivity(context, 2, intent, PendingIntent.FLAG_UPDATE_CURRENT); Builder builder = new Builder(context); switch (nearbyPlayer.getFaction()) { case blue: builder.setSmallIcon(R.drawable.blue_small); break; case green: builder.setSmallIcon(R.drawable.green_small); break; } builder.setContentIntent(pIntent); builder.setContentTitle(nearbyPlayer.getName()); builder.setContentInfo( nearbyPlayer.getHumanReadableDistance() + " " + nearbyPlayer.getDirection() + " " + nearbyPlayer.getHumanReadableTime() + " ago on " + nearbyPlayer.getLocation()); Notification noti = builder.build(); noti.flags |= Notification.FLAG_AUTO_CANCEL; notificationManager.notify(0, noti); this.lastNotification = nearbyPlayer; }