我有一个应用程序,通知用户他们附近的物理位置(GPS)
最初我手动进行了位置接近检查,将当前纬度/经度与我们正在寻找的特定目标进行比较。如果它小于给定范围,则会创建通知。
在手动完成所有操作之后,我找到了addProximityAlert()方法,这正是我所需要的。我有一种手动创建通知的方法。
不幸的是,我不知道如何弥合手动调用通知和创建一个通过addProximityAlert()触发的意图之间的差距
public void SetupLocationListener()
{
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (useProximityAlerts)
{
SetupProximityAlerts(lm);
}
else
{
LocationListener ll = new mylocationlistener(this, tv);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, ll);
}
}
这是我的手动创建通知的功能
public void AlertUser(String title, String text)
{
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
int icon = R.drawable.icon;
CharSequence tickerText = "Location found.";
long when = System.currentTimeMillis();
notification = new Notification(icon, tickerText, when);
Context context = getApplicationContext();
CharSequence contentTitle = title;
CharSequence contentText = text;
Intent notificationIntent = new Intent(this, gps.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
final int HELLO_ID = 1;
mNotificationManager.notify(HELLO_ID, notification);
}
这是我对addProximityAlert()
的不完整调用lm.addProximityAlert(Double.parseDouble(allLocations[i][1]), Double.parseDouble(allLocations[i][2]), Integer.parseInt(allLocations[i][3].toString()), -1, INTENT_GOES_HERE);
那么如何将AlertUser()通知“转换”为PendingIntent,我可以将其作为变量传递给addProximityAlert()?
由于 凯文
答案 0 :(得分:3)
步骤1:创建一个BroadcastReceiver
实现作为公共类。
步骤2:将步骤#1中的接收者添加到<receiver>
元素中的清单。
步骤3:使用PendingIntent.getBroadcast()
创建指向该接收者的PendingIntent
。
步骤4:将您的加注 - Notification
逻辑倒入接收者的onReceive()
方法中,使用提供的Context
获取NotificationManager
等等。< / p>
步骤5:喝啤酒(或您所选择的休闲茶点,只要在您所在的辖区内合法)。